Difference between revisions of "Talk:AUR helpers"

From ArchWiki
Jump to: navigation, search
(Multi-thread support: add)
m (Remove "optional" distinction from File review: rw)
 
(620 intermediate revisions by 20 users not shown)
Line 1: Line 1:
{{Note|'''Moderation''' — If your AUR helper does [[partial upgrade]]s ''without explicit user intervention'' (i.e, specifying {{ic|-Sy}} on the command line), it has no place on this page or anywhere else on ArchWiki. No exceptions. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:37, 20 September 2015 (UTC)
+
== "Reference" implementation ==
}}
 
  
== Comparison table - build directory ==
+
This is an alternative to [[Special:Diff/525492#Reliable Updater|#Reliable Updater]]. Instead of an arbitrary set of test packages, we could write up a "specification" on what a reliable AUR helper should do. This should also be more helpful for potential AUR helper writers who otherwise have to wade through complex, fully-featured AUR helpers.
  
Considering /tmp is mounted as tmpfs on Arch, and the potential downsides from building in RAM (running out of space), I think a column with the default build location for various helpers would be helpful.
+
I propose a minimal reference implementation with the following points:
  
The default values I've garnered so far, assuming TMPDIR is not set:
+
* No client-side workarounds for upstream limitations. In particular, a reference implementation does not need to score full points on split packages, as {{ic|makepkg --pkg}} was removed with pacman 5.
 +
* Minimal language constructs in e.g. a scripting language like {{Pkg|dash}}.
 +
* Prefer simplicity of implementation over being fully featured. In particular, an implementation may only support git clone and not git diff.
  
* aurutils: $XDG_CACHE_HOME
+
My initial plan was to keep such an implementation in a man page {{ic|aurhelper(7)}} (hosted as part of aurutils), but we can consider including on a sub-page of this article. It could be then linked from the comparison table. Thoughts? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:28, 8 March 2018 (UTC)
* pacaur: $XDG_CACHE_HOME (changed from /tmp, see [https://github.com/rmarquis/pacaur/commit/c5d750f75f040b21249fff100a2c8875348d03d1])
 
* bauerbill: $PWD/build
 
* pkgbuilder: $PWD, /tmp when specified with -S
 
* packer: /tmp (TMPDIR)
 
* yaourt: /tmp (yaourtrc)
 
  
-- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:16, 1 April 2016 (UTC)
+
: Generally agree with the idea, but I don't think there is a way around a set of PKGBUILDs that could be used to test helpers in a local AUR instance. F.e., I wouldn't define a "reliable" helper that doesn't handle split packages well. Since helpers are tolerated rather than supported, upstream limitations of the AUR might be temporary or permanent, meaning the limitation would actually be in the helper itself (f.e. like regex support). Also, I'd use pseudo code for such a reference as the actual implementation itself doesn't matter, unless you'd like to write a new minimalist helper. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 15:26, 8 March 2018 (UTC)
  
: Yes, this could be useful. Although you'd want not to use color here, since users that know what they're doing would prefer to use /tmp (or setting up BUILDDIR to /tmp). --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 11:15, 3 April 2016 (UTC)
+
::Apart from {{Bug|56602}}, I can't think of a case where upstream ''opposed'' removing limitations, even if helpers directly benefited. cf. the regex support discussed in [https://lists.archlinux.org/pipermail/aur-dev/2016-May/004036.html] or the exit codes finally introduced in makepkg 5.1 which made automatic building significantly easier imo. To me it seems that the main reason we have these AUR limations is due to the minimal interest of helper writers in contributing upstream, and upstream itself having different priorities. Not sure why former is the case, the PHP codebase may play part in it - at least it does for me.
 +
::You can keep ''dash'' close enough to pseudo-code, I guess less so if you want a complete example rather than exemplary code blocks. For the PKGBUILD set, I use this: [https://github.com/AladW/aurutils-test/blob/master/package.t#L11-L31] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:34, 8 March 2018 (UTC)
  
:: +1. see also [[#Multi-thread support]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)
+
::: My understanding is that changes that aren't invasive will be accepted upstream, but otherwise might be rejected (see [https://lists.archlinux.org/pipermail/aur-dev/2018-January/004421.html]). One prominent example that comes to mind is {{Bug|48796}}. It's not really relevant anymore since x86 has been officially dropped, but the solution would involve duplicating DB tables on the server, which isn't trivial to implement/migrate. Many of the feature requests involve non-trivial code change, which is the main reason nobody pushed patches; I dislike PHP but the language itself isn't too hard either. For regex, see the bottom of [https://lists.archlinux.org/pipermail/aur-dev/2016-May/004044.html], which is the follow-up of your link above.
::: Well, while it does have benefits for some users, it's still a bad default. As you say though, this is easy enough to change either way, unlike any of the behaviour described in the other columns.
+
::: Your testsuite seems interesting (thanks for the link), but one advantage of having a fixed set of packages is that these packages might be updated and change, making these edge cases difficult to test. This happened quite a few times with my own list of test packages in the past and this was rather annoying. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 20:20, 8 March 2018 (UTC)
::: We could leave out the colors, but mention the drawbacks/benefits in the "meanings" paragraph. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:35, 4 April 2016 (UTC)
 
  
:::: It is bad default because some users have no idea about what they are doing, but this is strictly related to user preferences. Adding the meaning instead of colors sounds like the perfect solution to me. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 14:35, 4 April 2016 (UTC).
+
== Expand Secure criteria to include other (non-PKGBUILD) bundled files ==
  
== Multi-thread support ==
+
[https://github.com/Jguer/yay/issues/493], in particular [https://github.com/Jguer/yay/issues/493#issuecomment-402522467]
  
This also made me wonder if tools differentiate regarding multi-thread support (seems related, e.g. cower has a defaulted option for it). --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)
+
The new criteria would be as follows:
 +
* PKGBUILD, no other files -> Partial
 +
* Other subset of files that includes the PKGBUILD -> Partial
 +
* No PKGBUILD -> No
 +
* All files in the git repo or tar archive -> Yes
  
: AFAIK, besides cower, packer [http://kmkeen.com/multithreaded-bash/] and bauerbill ({{ic|download.sh}} amongst others) have multiple threads. aurutils also uses aria2c for downloads, if that counts.
+
Similar to the ''Diff view'' column. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:32, 4 July 2018 (UTC)
: The benefits of multiple threads are however not always clear:
 
:: * by my understanding, cower uses multiple threads, but with one query per package [https://github.com/falconindy/cower/blob/master/cower.c#L667] (compare against multiinfo).
 
:: * More generally, tasks (like dependency solving) can be sped up by using different methods which need to be called less often
 
:: * Building packages would almost always be done sequentially: dependencies have to be installed (resulting in pacman locks), and there's {{ic|-j}} in {{ic|makepkg.conf}} anyway.
 
: Regardless, there are some large differences in AUR helper speed (with bauerbill being ahead of the rest). But I'm not sure how to quantify this in the table ... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:31, 3 April 2016 (UTC)
 
  
:: Multi-thread support doesn't necessarily mean the helper is better. In cower case, multi-thread support was implemented before multiinfo was available in the RPC interface, and as of today using multiinfo is less complex and faster than using multiple info threads. Since it is difficult to implement multiinfo support without an important rewrite, cower multithreading is more a drawback than an advantage.
+
: good idea, you also mentioned this for aurman a few months ago, see: https://github.com/polygamma/aurman/issues/25#issuecomment-371971155 really a good idea to implement it in a way, so that changes of all known files are being shown [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 17:07, 4 July 2018 (UTC)
:: As for speed, it's indeed very hard to quantify in a meaningful manner. For example, pacaur dependency solver is slower than bauerbill's solver, but on the other hand it is designed to compute more stuff than other helpers up front in order to avoid bothering the user once the install process is started. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 13:42, 3 April 2016 (UTC)
 
  
::: Interesting. Actually, I did not want to induce a "speed" column, rather the opposite. As you both say, always very difficult to choose a fairly universal/comparable benchmark, so "speed" as such is better be left out of comparison (as a column). If one wants to mention it, it might be useful to have a general remark at the top of the table, or somewhere else in the article, quoting some of the influencing factors you name; perhaps linking to (re -j) [[Makepkg#MAKEFLAGS]] and (re Skyhawk's remark above) [[Makepkg#Improving compile times]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 14:01, 3 April 2016 (UTC)
+
: "All files in the git repo or tar archive -> Yes" What exactly do you mean by all files? Build files often contain non text files such as images. Git diff is smart enough to hide these but then you could consider that partial because not all files are covered.
 +
: In my opinion all a helper has to do to be secure it pause and allow the user to read the build files. The helper does not even need to offer to open them for you that's the user's responsibility. Anything more than that is nice to have but not strictly needed. [[User:Morganamilo|Morganamilo]] ([[User talk:Morganamilo|talk]]) 20:25, 4 July 2018 (UTC)
  
:::: In hindsight, the only thing of relevance here is the use of the old {{ic|info}} interface over {{ic|multiinfo}} (with newer versions of the RPC, both are identical). For example, cower puts a drastic load on the AUR due to its use of one request per single package. I think the most effective way here is to migrate to helpers that implement the new interface and leave those that don't in the past. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 20:14, 22 February 2018 (UTC)
+
:: If this qualifies as "nice to have", there has to be an explicit warning that a green entry in the "Secure" column does not cover other files, files which may cause more harm than the PKGBUILD itself (such as {{ic|.install}} files or exectuables called from the PKGBUILD). In either case it's misleading, since you either give the impression that viewing PKGBUILDs alone is sufficient (with the current criteria), or include a warning that diminguishes the value of the criteria in the first place.  
 +
:: Latter is similar to "Native pacman", in that you have a warning at the article top warning against any sort of pacman wrapping, and criteria in the table that ignore this warning, or even reward behavior which goes against it. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:07, 8 July 2018 (UTC)
  
: may be one could come up with sort of "benchmark" (list of different commands related to querying or installing packages) and run them with different AUR helpers on one machine? that would be useful for both users (to see which one is faster now) and for developers (to improve the weak points of their apps). btw pikaur is using "Double Team" technique -- it's splitting itself into multiple threads to raise its evasiveness in face of big performance threat. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 12:26, 8 March 2018 (UTC)
+
::: That's a fair point, what about changing the name to "show files before sourcing" or something? Seems more accurate. Then it would make sense that not showing .install files to be partial. The only problem I see that it's not as hard hitting as "secure". [[User:Morganamilo|Morganamilo]] ([[User talk:Morganamilo|talk]]) 20:11, 8 July 2018 (UTC)
  
:: Well, as pointed out above, speed isn't everything. e.g. aurutils has one of the fastest dependency solvers, but it throws away information like versioned deps or {{ic|provides}} in the process. Maybe this is of relevance: [https://github.com/polygamma/aurman/wiki/Description-of-the-aurman-dependency-solving#benchmarks---these-results-are-on-my-machine-your-mileage-may-vary]
+
:::: It cuts both ways: it's an effective deterrent against broken helpers, but it also gives the impression that using a "Secure" helper makes usage of the AUR safe, which it definitely doesn't. I'm not sure on what different name to use, though. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:25, 14 July 2018 (UTC)
:: I'm also not sure how far we should advocate with threads, since the need for them partially arises from upstream limitations: {{Bug|49089}}, [https://lists.archlinux.org/pipermail/aur-dev/2016-April/004027.html] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:14, 8 March 2018 (UTC)
 
  
== Reliable Updater ==
+
::::: I guess "File view" could work. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:44, 14 July 2018 (UTC)
  
Interested in feedback on possibly adding Reliable Updater as a category to Comparison table.
+
:::::: The column name was updated to "File review". Are there remaining helpers that only display the PKGBUILD? ({{AUR|trizen}} springs to mind) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:30, 23 August 2018 (UTC)
  
ie:
+
== New test cases for dependency resolution ==
Does it handle accurate update status on VCS packages?
 
Does it handle accurate update status when developer fails to update .SCRINFO? https://wiki.archlinux.org/index.php/.SRCINFO
 
  
And any other unmentioned situations. [[User:Cody Learner|Cody Learner]] ([[User talk:Cody Learner|talk]]) 18:49, 22 February 2018 (UTC)
+
ros-foo-desktop-meta have always been difficult to build, even more so with KDE4 libs moved to AUR (see arch-dev-public). Besides the sheer number of dependencies, they otherwise have little interesting properties either.
  
:The second is an issue only pacaur has, by design to "improve metadata on the AUR". It has nothing to do with what an AUR helper should do. The first is at best a specificity, since the AUR has no perception of what a VCS package is. See {{Bug|56602}}. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 20:02, 22 February 2018 (UTC)
+
I propose to instead use various cross-compilation packages as test cases, e.g. {{AUR|mingw-w64-zlib}} and {{AUR|powerpc-linux-gnu-gcc}}. These appear very efficient at exposing problems with complex dependency algorithms (see for example [https://github.com/Jguer/yay/issues/695] or ''aurman'''s issues with {{AUR|nsis}}) and don't take 2 years to build either. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:34, 14 September 2018 (UTC)
  
:: I think the most important here to provide reliable testcase to prove the reliability of updater :-) I would suggest mb creating a repo a with some stub PKGBUILDs which could be used as testcases for criterias in the table. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 20:19, 22 February 2018 (UTC)
+
:We could also add some simpler cases, like {{AUR|fortune-mod-all-en}}, and add details similar to the ''Split packages'' description. That way, all existing entries with "Yes" in ''Reliable solver'' would at minimum have "Partial". -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:01, 14 September 2018 (UTC)
  
::: Not sure what a testcase of such would look like, since scoring on the other criteria should guarantee reliable updates apart from some pecularities outlined above.
+
:I believe the mingw stuff has a bunch of circular dependencies and a bootstrapping process. Do you think AUR helper's should be expected to handle this? [[User:Morganamilo|Morganamilo]] ([[User talk:Morganamilo|talk]]) 15:25, 14 September 2018 (UTC)
::: About the second case, it has been suggested before to create some centralized place for testing helpers instead of a few arbitrarily chosen AUR packages. However, since AUR helpers are (by definition) for the AUR, I wonder how you'd go about testing these helpers with an external repository. PKGBUILDs specifically made for testing helpers would not be accepted on AUR anyways as too specific. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 22:30, 22 February 2018 (UTC)
 
  
:::: And what about adding packages to AUR but with some special prefix in package name (`_stub-package-test-reliable-solver`) and very explicit description ("DON'T INSTALL ME. Stub package intended for testing AUR helpers for 'reliable solver' criteria.") and so on? [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 23:53, 22 February 2018 (UTC)
+
:: No, I don't think so. There will always be cases that can only be dealt reasonably manually, simply because the involved complexity in implementation isn't worth it. See also related sicussion [[Talk:AUR_helpers#.22Reference.22_implementation]] above, where a set of fixed reference packages would be better than live packages. No idea how to dealt with than without a local AUR instance though. -[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 10:42, 15 September 2018 (UTC)
  
::::: Considering AUR helpers are something that's tolerated instead of supported, I doubt such packages explicitely targeting them with no use otherwise would have a long lifetime. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:00, 23 February 2018 (UTC)
+
::: The mingw packages haven't had cycles in (global) depends for a while. As such, {{ic|makepkg -r}} works fine for these packages without manual intervention or "bootstrapping". If helpers fail, it may be because of handling split depends contrary to PKGBUILD(5), or other flaws in their dependency algorithms. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 10:05, 18 September 2018 (UTC)
  
== <s>"minimizes user interaction" is a misnomer</s> ==
+
== <s>remove Batch interaction 2</s> ==
  
After that 'criteria' was removed it's leaving some gap in comparison.
+
:Some previous discussion: [https://wiki.archlinux.org/index.php?title=Talk:AUR_helpers&oldid=545415#proper_batch_interaction_2_and_3]
I think we ned to come up with some better wording to describe those AUR helpers which allowing to review all the packages at once and next it's just building them without interrupting and asking more questions from user for each package.
+
On IRC there was some confusion on what "Summary of package upgrades" is supposed to mean. Literally, it means that any (AUR) upgrades or installations a helper will perform are printed to screen, similar to pacman's VerbosePkgLists. This is simple to implement - by definition a AUR helper must know about package names and their versions - and does not warrant a separate mention.
I think it's quite crucial quality for application of such kind and for user it could be quite annoying installing each AUR helper and just trying to install two packages to see if it will ask all the questions right at once or before each package build. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 20:28, 22 February 2018 (UTC)
 
  
: Sorry, i've just noticed what you also added asterisk to Secure field to address that problem. But what do you think about moving it into separate column? Because i don't think it's so much about reviewing PKGBUILDs but also about other kinds of questions, like installing dependencies or package conflicts. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 20:32, 22 February 2018 (UTC)
+
Historically, it's about pacman wrappers running -Sy so they can 1. save a single keypress 2. color the output. Former is a questionable argument when all pacman wrappers have a single prompt per package (so potentially hundreds of keypresses), and latter is already available from pacman itself. (with the Color option) As such, I propose to remove batch interaction 2 from the criteria. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:52, 7 November 2018 (UTC)
  
:: About the other kind, any helper that supports makepkg's --noconfirm can install dependencies without query. I find it questionable to make "predicting conflicts for currently installed packages" or somesuch a core feature (which a separate column implies), since the issue might not present itself in the first place e.g. through a local repo or containers. Not to mention the original point, that you can still get up to 200+ prompts with helpers implementing this feature.
+
:: If I might jump in, I don't think "one less key press" is a valid argument, nor does the color which is orthogonal to the feature. Batch interaction is not strictly about reducing the number of keys one has to enter, but it is about reducing the time required by... well, batching every step at the beginning. Batch 2 is about grouping repo *and* AUR packages summaries and initial validation together, rather than doing the repo packages update, then displaying the AUR summary before the AUR packages update. I'd suggest adjusting the current loose definition here. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 14:00, 7 November 2018 (UTC)
:: That said, the asterisk was just something I've added quickly. A compromise may be a sensibly named column that isn't colored, akin to the shell completion column. ("linear", "batch" perhaps, compare "linear vs tsort" in [https://wiki.archlinux.org/index.php?title=Talk:AUR_helpers&oldid=474640]) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 22:23, 22 February 2018 (UTC)
 
  
::: I suggest to simply use "batch inspection" in the specificity column instead of creating a new column. The main purpose of table imho is to be a quick reference of the status of the main steps of the process, rather than being an extensive description of each specific features. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 16:37, 23 February 2018 (UTC)
+
::You what? The "color" that pacman does, is bold text for some things, making "warning" in yellow and "error" in red, and, for the -Ss or -Qs operations, coloring the repository name in purple, the version in green, and the "[installed]" in light blue.
 +
::But the output of pacman -S(u) contains practically no color, and *significantly* less color than the average AUR helper. Yaourt could be considered the trendsetter in that regard, and it colors each repository differently, as well as making old versions show in green and new versions in red, on top of pacman's existing complete lack of color for that area of the UI.
 +
::Furthermore, the actual main thing which, say, yaourt provides, is 1) grouping AUR updates in the same VerbosePkgLists style, 2) differentiating between packages which are being upgraded, vs. being pkgrel-bumped, vs. being newly installed, 3) listing which package update now requires a new package to be installed. These are fairly significant deviations from pacman's UI, and IMHO more noticeable than the color. -- [[User:Eschwartz|Eschwartz]] ([[User talk:Eschwartz|talk]]) 15:50, 9 November 2018 (UTC)
  
:::: Sounds good to me. I'll edit it accordingly unless there's more feedback to offer. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:15, 23 February 2018 (UTC)
+
:::So as I understand either argument, neither disagrees with "2" only being relevant to pacman wrappers that run {{ic|pacman -Sy}}. As such, I'm not sure why it should be a general criterium, rather than a specificity. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:09, 28 November 2018 (UTC)
  
::::: Done: [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=511910&oldid=511814]. Suggestions on a precise name for aurman/pacaur's "deep search" feature for the specifity column? (e.g. pkgbuilder, trizen, aurutils have none of that) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:19, 24 February 2018 (UTC)
+
:::: It's indeed only specific to pacman wrapper, but still an important part of batch interaction (1 action vs 2 actions separated by some amount of time). I'm not sure why it shouldn't be mentioned for the sole reason it only applies to wrappers. I'd suggest to either mention it (with a correct definition), or move all batch interactions as specificity - which I'd personally be fine with. -- [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 15:25, 28 November 2018 (UTC)
  
:::::: I am not good at coming up with precise names, but let me explain the intention behind the feature. Maybe that will help one of you coming up with a precise name. Most dep solving algorithms look at the unfulfilled dependencies only, but that can lead to not finding a valid solution on rare occasions. Example: You have package A installed on your system and A needs "B". "B" is being provided by a package called B directly, but you fulfilled that dep with another package called B_1. Now you want to update package A to a newer version and also install package C. C conflicts with B_1, and B_1 only. If the dep solving algo just looks at unfulfilled deps, it will ignore B, because B_1 is installed. But that conflicts with C, so no solution is being found. "Deep search" of aurman ignores everything installed and is thus able to find the solution of removing B_1, installing B and C and upgrading A [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 16:00, 24 February 2018 (UTC)
+
::::IMHO whether it uses {{ic|pacman -Sy}} is an implementation detail. More importantly, I think it qualifies as a ''dependency'' of batch interaction, but is not, itself, batch interaction.
 +
::::I'd also like to note that Batch interaction #1 is, unless I totally miss my guess, a direct copy of the "file review" column.
 +
::::Neither 2 nor 3 are something which can be universally defined as necessary for robustly doing anything, unlike most columns, and unlike the implementation language aren't fundamentally relevant to all programs by default, I think it is fair to demote them both to specificity as "you may prefer to do it this way instead of that way". -- [[User:Eschwartz|Eschwartz]] ([[User talk:Eschwartz|talk]]) 15:45, 28 November 2018 (UTC)
  
::::::: I had written "dependency solving independent from the installed packages (optional)" for the "deep_search" feature in the specificity column of aurman, but that has been [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=next&oldid=512105 deleted]. Tbh I cannot really follow the argumentation behind the removal. Why should the circumstance that it is almost never needed be a criterium to not put it in that column? It's nevertheless a feature which is unique by that helper, which makes it a specificity. Besides that: If one wants to install some package with another AUR helper and finding a solution fails, that "deep_search" feature could exactly be what he needs. And stating that the column is not a full features list, how does that matter for the removal of the entry? It is just one of many features... If this is the wrong place for a discussion about that removal - sorry, where do I have to put it? [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 07:46, 27 February 2018 (UTC)
+
:::::The term "batch interaction" used to be included as a specificity, without explicit definition it was however not clear what this meant. I'm fine to go back to this approach, as long as we have some meaningful definition/term for the separate "batch interaction" aspects.
 +
:::::Regarding #1, it's not a direct copy since "file review" can be done on-demand, i.e. whenever a new PKGBUILD is about to be sourced (yaourt), and not ahead of time before ''any'' build process begins (pacaur & co). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:00, 30 November 2018 (UTC)
  
:::::::: This is the correct place. I think the main objection is that it's a rather long description of a single feature - as you may notice in the column, specifities are usually not longer than a few words. I've went with Spyhawk's proposal for now to use "batched interaction", [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=512180&oldid=512148] but we can leave this discussion open for further proposals. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:09, 27 February 2018 (UTC)
+
::::::In a previous discussion we mentioned to have 4-5 entries per Specificity cell. In anticipation of the above additions, I've removed the (imo superficial) "sort by votes/popularity" criterion. Please review: [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=557839&oldid=557838] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:09, 30 November 2018 (UTC)
  
:::::::: What does "bootstrapping packages" mean? [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=512764&oldid=512724] Also what helpers do support versioned dependencies, and is it really worth including as a specifity due to the rarity of their occurence? Compare to the note on architecture specific fields which could extend instead, adding {{Bug|54906}}. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:08, 5 March 2018 (UTC)
+
::::::I guess it is sort of obvious that batch interaction means any features that it has, including file review, will be done via batch operations rather than on-demand. So it is still redundant IMO. -- [[User:Eschwartz|Eschwartz]] ([[User talk:Eschwartz|talk]]) 23:45, 1 December 2018 (UTC)
  
::::::::: Well, I googled quite a bit do come up with a term that describes what I mean, maybe the name isn't good. Example is the mingw-w64-gcc package - installing packages for building and then removing them again is meant. Regarding the versioned deps: Two examples I know for sure: trizen and pikaur. Wanting to install "aurman-git>1.0" yields in both cases: Not found. [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 15:20, 5 March 2018 (UTC)
+
:::::: Unlike a few years ago, batch interaction 1 is now a standard feature in all maintained helpers. It doesn't make much sense to keep an extra column for the sole purpose of mentioning it. I'd move everything to specificity imho. If you need to keep definitions, I'd suggest something like: "Ability to prompt before the build process and package transactions", in particular: 1/ "Inspection of package files or their differences" (same as current), 2/ "Combined summary of repository and AUR package upgrades", 3/ "Resolution of package conflicts and choice of providers." (I'm not sure what the current "installation" refers to here) -- [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 00:30, 2 December 2018 (UTC)
  
:::::::::: Well anything supporting {{ic|makepkg --rmdeps}} can install packages and remove them again. E.g. aurutils can do that to a further extent since it uses a local repo, but it can't build mingw-w64-gcc as it has a too rudimentary dependency solving algorithm.
+
::::::: What do you think of "resolve package conflicts" and "combined upgrade" (for 2/ resp. 3/) as specifity? (see my draft). Your descriptions sound good though, and can be referred to from the Specificity column if required. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:46, 2 December 2018 (UTC)
:::::::::: I'll add a note then with the above bug report and {{ic|aurman}}, {{ic|pacaur}}. I'll leave it to the authors of other helpers to add to the note if their helper supports versioned dependencies. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:38, 5 March 2018 (UTC)
 
  
::::::::::: I've just used "deep search" and added a link to your awesome post on the aurman dependency algorithm. [https://wiki.archlinux.org/index.php?title=AUR_helpers&type=revision&diff=512786&oldid=512784] Is this agreeable enough to close this discussion? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:01, 5 March 2018 (UTC)
+
:::::::: I dislike how my previous suggestions are overly long, but I'm afraid "resolve package conflicts" and "combined upgrade" are too generic and not descriptive enough for someone that doesn't know what batch interaction is. Ideally, these should emphasis that the actions are done prior to build and transactions. Maybe "early conflicts resolution" and "combined upgrade summary"? Rest of the draft LGTM. -- [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 15:37, 2 December 2018 (UTC)
  
:::::::::::: Seems fine to me :) [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 20:56, 5 March 2018 (UTC)
+
::::::::: I prefer the longer descriptions. We can refer to them in the Specificity column, e.g. through ''Batch interaction 2/3''. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:54, 8 December 2018 (UTC)
  
:::::: What about "batched interaction"? [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 17:18, 24 February 2018 (UTC)
+
::::::::: I just added "batch interaction" for now if the helper at least supports batch 3/. Most of the other stuff in the Specificity column was not interesting (functionality such as AUR comments and ABS support is easily replicated with external tools like {{AUR|aur-talk-git}} or {{Pkg|asp}}) so I've removed it. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:10, 8 December 2018 (UTC)
  
== <s>Separate table for unmaintained/old helpers</s> ==
+
== <s>Checkmarks instead of colors</s> ==
  
Right now the table is filled with entries that are no longer relevant apart for historical reasons (pacaur is one example that reached prominence, but there are many others like packer, aurget, burgaur, etc.). Since they technically still "work", I wouldn't remove them from this article, but either:
+
I propose to use ✅ (U+2705) and ❎ (U+274E) instead of [[Template:Yes]] and [[Template:No]]. While uncommon in the wiki, the checkmarks are more subtle than fully colored cells, and might lead to a more thoughtful response when choosing helpers (compare the common "pick the all green row" responses we have now).  
  
* keep them in the same table with grey-colored columns (compare [[de:AUR Hilfsprogramme]])
+
Example: [http://i.imgur.com/UzMFr7u.png] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:20, 30 November 2018 (UTC)
* put them in a separate table
 
* put them in a separate table with grey-colored columns
 
* put them in a list, bulleted or using [[Template:App]] (compare [[Arch-based_distributions#Inactive]])
 
  
Thoughts? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:00, 25 February 2018 (UTC)
+
:That check mark has different appearance depending on [https://emojipedia.org/white-heavy-check-mark/ Emoji font]. There is [[Template:Ya]] and [[Template:Na]] that use colored text-presentation symbols, but one would probably figure out that "pick the all green row" is similar to "pick the row with all checkmarks", especially since both ✅ (U+2705) and [[Template:Ya]] have green color. -- [[User:Svito|Svito]] ([[User talk:Svito|talk]]) 18:28, 30 November 2018 (UTC)
  
:I think any of those options are good (along with a warning or note). Are any of the older packages simply "feature complete" (no updates since the author considers the program done)?
+
:You could also use plain text "Yes" and "No" instead of the templates if you want to skip the colors. But due to the sorting criteria users probably tend to choose from the top... -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:29, 30 November 2018 (UTC)
:{{Unsigned|01:22, 26 February 2018‎ |Rdeckard}}
 
  
: I like the solution with the grey-colored columns in the same table the most. Everything stays in place, but it's visually easy to see which projects are still "relevant" [[User:Polygamma|Polygamma]] ([[User talk:Polygamma|talk]]) 09:12, 26 February 2018 (UTC)
+
::Draft [[User:Alad/AUR_helpers]]:
 +
::* Removes sorting criteria, sort alphabetically instead;
 +
::* Remove batch interaction 2 and 3 as column entries, add "resolve package conflicts" and "combined upgrade" to specificity instead;
 +
::* Replace [[Template:Yes]] with [[Template:Ya]] and [[Template:No]] with [[Template:Na]];
 +
::: As an alternative to the checkmarks (better suited for screenreaders), see: [http://i.imgur.com/hwK9tl9.png]
 +
::* Remove some redundant specificity entries to keep a maximum of 4 entries;
 +
::* Remove Batch interaction 1;
 +
::For the last point, while it's a separate aspect of "file review", 80% of the helpers support it by now. I'd rather have the additional space from having one column less. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:06, 1 December 2018 (UTC)
  
:Dealing with the table alone doesn't make much sense, what about the lists above it? Would they be split or greyed out as well? How would you call the split sections - "unmaintained" vs "supported" or something like that? I know that you won't like the sound of "supported" here, but I can't think of a better alternative right now. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 22:57, 26 February 2018 (UTC)
+
:::In line with the added neutrality from removing the sorting criteria, I'd also suggest to move "stalled" entries back (as non-grey entries) to the table. It should already be clear that any helper with crosses across the board is "stalled". -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:12, 1 December 2018 (UTC)
:: Would a column with the last update date or last release date give an idea whether the helper is actively maintained or not? -- [[User:Kewl|Kewl]] ([[User talk:Kewl|talk]]) 22:41, 1 March 2018 (UTC)
 
  
:::A problem with that is that it would get frequently outdated for the active projects. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 07:52, 2 March 2018 (UTC)
+
::::Implemented changes in the draft, apart from the checkmarks due to [[accessibility]] concerns. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:15, 8 December 2018 (UTC)
::::True and you think showing only the year of the last release date would not be precise enough? -- [[User:Kewl|Kewl]] ([[User talk:Kewl|talk]]) 08:04, 2 March 2018 (UTC)
 
  
:::::In my case, aurutils is unlikely to get another release until 2019-2020 so it would appear quite inactive even though it is anything but... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 08:50, 2 March 2018 (UTC)
+
== Responsive tables ==
 +
:Moved from [[#Checkmarks instead of colors]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:14, 8 December 2018 (UTC)
  
::::: You'd need more than a date to decide if a project is actively maintained anyway. Some project are well established with very few bugs, while other got only some recent but very minor code update while still ignoring the most blatant issues for many years. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 14:25, 2 March 2018 (UTC)
+
The only thing that still bothers me is that even with the limit on the amount of specificities, there's so many columns in the table (especially for pacman wrappers), that on small screens every word is split by a newline. [[User:Morganamilo]] suggested to use README links instead of descriptions, but I'm not sure how that would pan out. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]])
  
::::: Then in my opinion splitting the table in 2 sections, maintained/inactive based on your expert judgement of the helpers (a mix of last release date and future expected dev) would be good. Keeping, for the moment at least, the same format eases comparison between current and legacy helpers. -- [[User:Kewl|Kewl]] ([[User talk:Kewl|talk]]) 16:23, 2 March 2018 (UTC)
+
:[[User:Larivact/drafts/Template:RespCell]]. --[[User:Larivact|Larivact]] ([[User talk:Larivact|talk]]) 07:50, 2 December 2018 (UTC)
  
::::: See [[Synchronization_and_backup_programs]], why not using a maintained column like there. -- [[User:Kewl|Kewl]] ([[User talk:Kewl|talk]]) 17:08, 4 March 2018 (UTC)
+
::Thanks, it looks nice on my screen (1366x768): [http://i.imgur.com/chqzSvT.png] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:42, 2 December 2018 (UTC)
  
:::::: So I guess [[Template:Yes]] for active development, [[Template:Y]] for inactive but with an "available" maintainer, and [[Template:No]] for unmaintained? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:22, 4 March 2018 (UTC)
+
:::That CSS only takes affect if your browser width is below 600px. --[[User:Larivact|Larivact]] ([[User talk:Larivact|talk]]) 14:51, 2 December 2018 (UTC)
  
::::::: Fine with me -- [[User:Kewl|Kewl]] ([[User talk:Kewl|talk]]) 18:13, 4 March 2018 (UTC)
+
::::So much for placebo effect... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:09, 2 December 2018 (UTC)
  
:::::::: "Expert judgement" is vague and subjective. You probably want to define some explicit criteria (even if they are skewed) so helpers can be judged against the same baseline. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 20:15, 4 March 2018 (UTC)
+
:::::Yeah I was a bit confused by your response. Just to clarify tables need to be marked up differently for this to work, you can see an example in my draft. --[[User:Larivact|Larivact]] ([[User talk:Larivact|talk]]) 15:20, 2 December 2018 (UTC)
  
::::::::: The red column should be easy, i.e. "Projects that were abandoned by the author, in favor of a different project or otherwise" with some explanative link for each entry. Yellow could be when long-standing issues are not addressed. That leaves some edge cases, like when a project has frequent commits but issues are not addressed, but in general you'd give other entries a Yes. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 21:02, 4 March 2018 (UTC)
+
== <s>Restore sections</s> ==
  
:::::::::: Here's an attempt: A project is "active" if 1/ it isn't officially discontinued/unmaintained, 2/ has a main regular contributor (generally the main author), with some commits of his own at least the past 6 months (in contrast to punctual contributors that work on unimportant issues), 3/ important issues of security and clean build are being actively worked on (commit being pushed or interest in doing so displayed in the past 6 months). That should cover the edge-cases. The proposed duration can be adjusted, ie. ~3 months could be more adequate. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 08:43, 5 March 2018 (UTC)
+
I seriously dislike [[Special:Diff/557837]] because it makes the page less accessible and is semantically wrong. You should be able to link any section you like, it is the job of the users to look around when they were linked to a specific section. I think we neither can nor should attempt to make our articles idiot-proof by substituting sections with definition terms.--[[User:Larivact|Larivact]] ([[User talk:Larivact|talk]]) 08:01, 2 December 2018 (UTC)
  
::::::::::: Sounds ok to me. I'd probably stick to 6 months or more, otherwise projects like Aura which are more reliable since last year would be immediately classified as "inactive". -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:13, 5 March 2018 (UTC)
+
:The only way to make it idiot proof is to either delete this article or make it an alphabetical list - both of which are still very tempting to me. In any case, I don't think the separated tables (with sections or with definition terms) are ideal either - it's only there because pacman wrappers are broken to such an extent they need to be specifically warned against. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:44, 2 December 2018 (UTC)
  
:::::::::::: Proposal: [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=512792&oldid=512790] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:26, 5 March 2018 (UTC)
+
:One thing to keep in mind (and the reason for this "special treatment") is that the [[AUR helpers]] article is systematically abused to encourage help vampirism (resp. encouragement to ignore supported distribution tools) by users alike. I've restored the sections for now, but adding {{ic|<nowiki>__NOTOC__</nowiki>}} should be a consideration. It won't prevent copy pasting of links but might at least force the "AUR helpers are not supported" warning into view. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:54, 2 December 2018 (UTC)
:::::::::::: Concerning "general activity" and Rdeckard's comment on "feature complete" helpers, perhaps this could include issue tracking or author reponse (assuming the other criteria are fulfilled). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:29, 5 March 2018 (UTC)
 
  
::::::::::::: I'd put the maintenance column in the front to make helper selection more straightforward, but otherwise LGTM. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 17:05, 5 March 2018 (UTC)
+
::[https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=558612&oldid=558121], closing -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:40, 8 December 2018 (UTC)
  
:::::::::::::: Done [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=512818&oldid=512800] cheers -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:23, 5 March 2018 (UTC)
+
== <s>Remove "optional" distinction from File review</s> ==
  
== Default sorting for entries ==
+
The description already says "by default", and I have no idea why we should encourage the notion of do-not-review-unless-opt-in. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:30, 8 December 2018 (UTC)
  
Right now, entries are sorted alphabetically and can be sorted by column by clicking on the respective arrows. I propose to make the default sorting both alphabetically and by "less crap", so people don't have to wade through mixes of red and green. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:45, 5 March 2018 (UTC)
+
:Yes, please change this. It's anyways describing a supported feature, the implication is that most tools likely offer you the ability to skip past. Also we can just remove the column entirely from the "search & download" helpers, surely... or mark them as not applicable rather than "yes". -- [[User:Eschwartz|Eschwartz]] ([[User talk:Eschwartz|talk]]) 05:52, 9 December 2018 (UTC)
  
: Agree, but is this possible to sort by default? See [https://www.mediawiki.org/wiki/Help:Sorting#Sorting_rows_of_a_table MediaWiki] doc. I get a nice result by clicking twice on each column, starting from the last to the first one ("git clone" to "maintenance"). -- [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 00:35, 6 March 2018 (UTC)
+
::Done & done. - [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:00, 9 December 2018 (UTC)
  
== "AUR repo diff" ==
+
:::Wait, are all these helpers don't-review-by-default? -- [[User:Eschwartz|Eschwartz]] ([[User talk:Eschwartz|talk]]) 15:23, 9 December 2018 (UTC)
  
[https://wiki.archlinux.org/index.php?title=AUR_helpers&curid=4748&diff=512978&oldid=512964] no idea what that's supposed to mean. If it's git diffs, half of the table supports those. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 07:59, 8 March 2018 (UTC)
+
::::Yes. (I tested the bunch of them back in the day, and I don't know of any changes since then.) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:22, 9 December 2018 (UTC)
 
 
: yup, that means exactly that. i wasn't sure if it worth mentioning or not [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 12:24, 8 March 2018 (UTC)
 
 
 
:: when a helper supports git clone but not git diff, we could consider using [[Template:Y]] instead of [[Template:Yes]] for the git column. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:58, 8 March 2018 (UTC)
 
 
 
::: good idea [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 12:59, 8 March 2018 (UTC)
 

Latest revision as of 16:22, 9 December 2018

"Reference" implementation

This is an alternative to #Reliable Updater. Instead of an arbitrary set of test packages, we could write up a "specification" on what a reliable AUR helper should do. This should also be more helpful for potential AUR helper writers who otherwise have to wade through complex, fully-featured AUR helpers.

I propose a minimal reference implementation with the following points:

  • No client-side workarounds for upstream limitations. In particular, a reference implementation does not need to score full points on split packages, as makepkg --pkg was removed with pacman 5.
  • Minimal language constructs in e.g. a scripting language like dash.
  • Prefer simplicity of implementation over being fully featured. In particular, an implementation may only support git clone and not git diff.

My initial plan was to keep such an implementation in a man page aurhelper(7) (hosted as part of aurutils), but we can consider including on a sub-page of this article. It could be then linked from the comparison table. Thoughts? -- Alad (talk) 13:28, 8 March 2018 (UTC)

Generally agree with the idea, but I don't think there is a way around a set of PKGBUILDs that could be used to test helpers in a local AUR instance. F.e., I wouldn't define a "reliable" helper that doesn't handle split packages well. Since helpers are tolerated rather than supported, upstream limitations of the AUR might be temporary or permanent, meaning the limitation would actually be in the helper itself (f.e. like regex support). Also, I'd use pseudo code for such a reference as the actual implementation itself doesn't matter, unless you'd like to write a new minimalist helper. Spyhawk (talk) 15:26, 8 March 2018 (UTC)
Apart from FS#56602, I can't think of a case where upstream opposed removing limitations, even if helpers directly benefited. cf. the regex support discussed in [1] or the exit codes finally introduced in makepkg 5.1 which made automatic building significantly easier imo. To me it seems that the main reason we have these AUR limations is due to the minimal interest of helper writers in contributing upstream, and upstream itself having different priorities. Not sure why former is the case, the PHP codebase may play part in it - at least it does for me.
You can keep dash close enough to pseudo-code, I guess less so if you want a complete example rather than exemplary code blocks. For the PKGBUILD set, I use this: [2] -- Alad (talk) 18:34, 8 March 2018 (UTC)
My understanding is that changes that aren't invasive will be accepted upstream, but otherwise might be rejected (see [3]). One prominent example that comes to mind is FS#48796. It's not really relevant anymore since x86 has been officially dropped, but the solution would involve duplicating DB tables on the server, which isn't trivial to implement/migrate. Many of the feature requests involve non-trivial code change, which is the main reason nobody pushed patches; I dislike PHP but the language itself isn't too hard either. For regex, see the bottom of [4], which is the follow-up of your link above.
Your testsuite seems interesting (thanks for the link), but one advantage of having a fixed set of packages is that these packages might be updated and change, making these edge cases difficult to test. This happened quite a few times with my own list of test packages in the past and this was rather annoying. Spyhawk (talk) 20:20, 8 March 2018 (UTC)

Expand Secure criteria to include other (non-PKGBUILD) bundled files

[5], in particular [6]

The new criteria would be as follows:

  • PKGBUILD, no other files -> Partial
  • Other subset of files that includes the PKGBUILD -> Partial
  • No PKGBUILD -> No
  • All files in the git repo or tar archive -> Yes

Similar to the Diff view column. -- Alad (talk) 16:32, 4 July 2018 (UTC)

good idea, you also mentioned this for aurman a few months ago, see: https://github.com/polygamma/aurman/issues/25#issuecomment-371971155 really a good idea to implement it in a way, so that changes of all known files are being shown Polygamma (talk) 17:07, 4 July 2018 (UTC)
"All files in the git repo or tar archive -> Yes" What exactly do you mean by all files? Build files often contain non text files such as images. Git diff is smart enough to hide these but then you could consider that partial because not all files are covered.
In my opinion all a helper has to do to be secure it pause and allow the user to read the build files. The helper does not even need to offer to open them for you that's the user's responsibility. Anything more than that is nice to have but not strictly needed. Morganamilo (talk) 20:25, 4 July 2018 (UTC)
If this qualifies as "nice to have", there has to be an explicit warning that a green entry in the "Secure" column does not cover other files, files which may cause more harm than the PKGBUILD itself (such as .install files or exectuables called from the PKGBUILD). In either case it's misleading, since you either give the impression that viewing PKGBUILDs alone is sufficient (with the current criteria), or include a warning that diminguishes the value of the criteria in the first place.
Latter is similar to "Native pacman", in that you have a warning at the article top warning against any sort of pacman wrapping, and criteria in the table that ignore this warning, or even reward behavior which goes against it. -- Alad (talk) 17:07, 8 July 2018 (UTC)
That's a fair point, what about changing the name to "show files before sourcing" or something? Seems more accurate. Then it would make sense that not showing .install files to be partial. The only problem I see that it's not as hard hitting as "secure". Morganamilo (talk) 20:11, 8 July 2018 (UTC)
It cuts both ways: it's an effective deterrent against broken helpers, but it also gives the impression that using a "Secure" helper makes usage of the AUR safe, which it definitely doesn't. I'm not sure on what different name to use, though. -- Alad (talk) 17:25, 14 July 2018 (UTC)
I guess "File view" could work. -- Alad (talk) 17:44, 14 July 2018 (UTC)
The column name was updated to "File review". Are there remaining helpers that only display the PKGBUILD? (trizenAUR springs to mind) -- Alad (talk) 15:30, 23 August 2018 (UTC)

New test cases for dependency resolution

ros-foo-desktop-meta have always been difficult to build, even more so with KDE4 libs moved to AUR (see arch-dev-public). Besides the sheer number of dependencies, they otherwise have little interesting properties either.

I propose to instead use various cross-compilation packages as test cases, e.g. mingw-w64-zlibAUR and powerpc-linux-gnu-gccAUR. These appear very efficient at exposing problems with complex dependency algorithms (see for example [7] or aurman's issues with nsisAUR) and don't take 2 years to build either. -- Alad (talk) 11:34, 14 September 2018 (UTC)

We could also add some simpler cases, like fortune-mod-all-enAUR, and add details similar to the Split packages description. That way, all existing entries with "Yes" in Reliable solver would at minimum have "Partial". -- Alad (talk) 12:01, 14 September 2018 (UTC)
I believe the mingw stuff has a bunch of circular dependencies and a bootstrapping process. Do you think AUR helper's should be expected to handle this? Morganamilo (talk) 15:25, 14 September 2018 (UTC)
No, I don't think so. There will always be cases that can only be dealt reasonably manually, simply because the involved complexity in implementation isn't worth it. See also related sicussion Talk:AUR_helpers#.22Reference.22_implementation above, where a set of fixed reference packages would be better than live packages. No idea how to dealt with than without a local AUR instance though. -Spyhawk (talk) 10:42, 15 September 2018 (UTC)
The mingw packages haven't had cycles in (global) depends for a while. As such, makepkg -r works fine for these packages without manual intervention or "bootstrapping". If helpers fail, it may be because of handling split depends contrary to PKGBUILD(5), or other flaws in their dependency algorithms. -- Alad (talk) 10:05, 18 September 2018 (UTC)

remove Batch interaction 2

Some previous discussion: [8]

On IRC there was some confusion on what "Summary of package upgrades" is supposed to mean. Literally, it means that any (AUR) upgrades or installations a helper will perform are printed to screen, similar to pacman's VerbosePkgLists. This is simple to implement - by definition a AUR helper must know about package names and their versions - and does not warrant a separate mention.

Historically, it's about pacman wrappers running -Sy so they can 1. save a single keypress 2. color the output. Former is a questionable argument when all pacman wrappers have a single prompt per package (so potentially hundreds of keypresses), and latter is already available from pacman itself. (with the Color option) As such, I propose to remove batch interaction 2 from the criteria. -- Alad (talk) 12:52, 7 November 2018 (UTC)

If I might jump in, I don't think "one less key press" is a valid argument, nor does the color which is orthogonal to the feature. Batch interaction is not strictly about reducing the number of keys one has to enter, but it is about reducing the time required by... well, batching every step at the beginning. Batch 2 is about grouping repo *and* AUR packages summaries and initial validation together, rather than doing the repo packages update, then displaying the AUR summary before the AUR packages update. I'd suggest adjusting the current loose definition here. --Spyhawk (talk) 14:00, 7 November 2018 (UTC)
You what? The "color" that pacman does, is bold text for some things, making "warning" in yellow and "error" in red, and, for the -Ss or -Qs operations, coloring the repository name in purple, the version in green, and the "[installed]" in light blue.
But the output of pacman -S(u) contains practically no color, and *significantly* less color than the average AUR helper. Yaourt could be considered the trendsetter in that regard, and it colors each repository differently, as well as making old versions show in green and new versions in red, on top of pacman's existing complete lack of color for that area of the UI.
Furthermore, the actual main thing which, say, yaourt provides, is 1) grouping AUR updates in the same VerbosePkgLists style, 2) differentiating between packages which are being upgraded, vs. being pkgrel-bumped, vs. being newly installed, 3) listing which package update now requires a new package to be installed. These are fairly significant deviations from pacman's UI, and IMHO more noticeable than the color. -- Eschwartz (talk) 15:50, 9 November 2018 (UTC)
So as I understand either argument, neither disagrees with "2" only being relevant to pacman wrappers that run pacman -Sy. As such, I'm not sure why it should be a general criterium, rather than a specificity. -- Alad (talk) 13:09, 28 November 2018 (UTC)
It's indeed only specific to pacman wrapper, but still an important part of batch interaction (1 action vs 2 actions separated by some amount of time). I'm not sure why it shouldn't be mentioned for the sole reason it only applies to wrappers. I'd suggest to either mention it (with a correct definition), or move all batch interactions as specificity - which I'd personally be fine with. -- Spyhawk (talk) 15:25, 28 November 2018 (UTC)
IMHO whether it uses pacman -Sy is an implementation detail. More importantly, I think it qualifies as a dependency of batch interaction, but is not, itself, batch interaction.
I'd also like to note that Batch interaction #1 is, unless I totally miss my guess, a direct copy of the "file review" column.
Neither 2 nor 3 are something which can be universally defined as necessary for robustly doing anything, unlike most columns, and unlike the implementation language aren't fundamentally relevant to all programs by default, I think it is fair to demote them both to specificity as "you may prefer to do it this way instead of that way". -- Eschwartz (talk) 15:45, 28 November 2018 (UTC)
The term "batch interaction" used to be included as a specificity, without explicit definition it was however not clear what this meant. I'm fine to go back to this approach, as long as we have some meaningful definition/term for the separate "batch interaction" aspects.
Regarding #1, it's not a direct copy since "file review" can be done on-demand, i.e. whenever a new PKGBUILD is about to be sourced (yaourt), and not ahead of time before any build process begins (pacaur & co). -- Alad (talk) 14:00, 30 November 2018 (UTC)
In a previous discussion we mentioned to have 4-5 entries per Specificity cell. In anticipation of the above additions, I've removed the (imo superficial) "sort by votes/popularity" criterion. Please review: [9] -- Alad (talk) 16:09, 30 November 2018 (UTC)
I guess it is sort of obvious that batch interaction means any features that it has, including file review, will be done via batch operations rather than on-demand. So it is still redundant IMO. -- Eschwartz (talk) 23:45, 1 December 2018 (UTC)
Unlike a few years ago, batch interaction 1 is now a standard feature in all maintained helpers. It doesn't make much sense to keep an extra column for the sole purpose of mentioning it. I'd move everything to specificity imho. If you need to keep definitions, I'd suggest something like: "Ability to prompt before the build process and package transactions", in particular: 1/ "Inspection of package files or their differences" (same as current), 2/ "Combined summary of repository and AUR package upgrades", 3/ "Resolution of package conflicts and choice of providers." (I'm not sure what the current "installation" refers to here) -- Spyhawk (talk) 00:30, 2 December 2018 (UTC)
What do you think of "resolve package conflicts" and "combined upgrade" (for 2/ resp. 3/) as specifity? (see my draft). Your descriptions sound good though, and can be referred to from the Specificity column if required. -- Alad (talk) 11:46, 2 December 2018 (UTC)
I dislike how my previous suggestions are overly long, but I'm afraid "resolve package conflicts" and "combined upgrade" are too generic and not descriptive enough for someone that doesn't know what batch interaction is. Ideally, these should emphasis that the actions are done prior to build and transactions. Maybe "early conflicts resolution" and "combined upgrade summary"? Rest of the draft LGTM. -- Spyhawk (talk) 15:37, 2 December 2018 (UTC)
I prefer the longer descriptions. We can refer to them in the Specificity column, e.g. through Batch interaction 2/3. -- Alad (talk) 13:54, 8 December 2018 (UTC)
I just added "batch interaction" for now if the helper at least supports batch 3/. Most of the other stuff in the Specificity column was not interesting (functionality such as AUR comments and ABS support is easily replicated with external tools like aur-talk-gitAUR or asp) so I've removed it. -- Alad (talk) 14:10, 8 December 2018 (UTC)

Checkmarks instead of colors

I propose to use ✅ (U+2705) and ❎ (U+274E) instead of Template:Yes and Template:No. While uncommon in the wiki, the checkmarks are more subtle than fully colored cells, and might lead to a more thoughtful response when choosing helpers (compare the common "pick the all green row" responses we have now).

Example: [10] -- Alad (talk) 16:20, 30 November 2018 (UTC)

That check mark has different appearance depending on Emoji font. There is Template:Ya and Template:Na that use colored text-presentation symbols, but one would probably figure out that "pick the all green row" is similar to "pick the row with all checkmarks", especially since both ✅ (U+2705) and Template:Ya have green color. -- Svito (talk) 18:28, 30 November 2018 (UTC)
You could also use plain text "Yes" and "No" instead of the templates if you want to skip the colors. But due to the sorting criteria users probably tend to choose from the top... -- Lahwaacz (talk) 20:29, 30 November 2018 (UTC)
Draft User:Alad/AUR_helpers:
  • Removes sorting criteria, sort alphabetically instead;
  • Remove batch interaction 2 and 3 as column entries, add "resolve package conflicts" and "combined upgrade" to specificity instead;
  • Replace Template:Yes with Template:Ya and Template:No with Template:Na;
As an alternative to the checkmarks (better suited for screenreaders), see: [11]
  • Remove some redundant specificity entries to keep a maximum of 4 entries;
  • Remove Batch interaction 1;
For the last point, while it's a separate aspect of "file review", 80% of the helpers support it by now. I'd rather have the additional space from having one column less. -- Alad (talk) 19:06, 1 December 2018 (UTC)
In line with the added neutrality from removing the sorting criteria, I'd also suggest to move "stalled" entries back (as non-grey entries) to the table. It should already be clear that any helper with crosses across the board is "stalled". -- Alad (talk) 19:12, 1 December 2018 (UTC)
Implemented changes in the draft, apart from the checkmarks due to accessibility concerns. -- Alad (talk) 14:15, 8 December 2018 (UTC)

Responsive tables

Moved from #Checkmarks instead of colors. -- Alad (talk) 14:14, 8 December 2018 (UTC)

The only thing that still bothers me is that even with the limit on the amount of specificities, there's so many columns in the table (especially for pacman wrappers), that on small screens every word is split by a newline. User:Morganamilo suggested to use README links instead of descriptions, but I'm not sure how that would pan out. -- Alad (talk)

User:Larivact/drafts/Template:RespCell. --Larivact (talk) 07:50, 2 December 2018 (UTC)
Thanks, it looks nice on my screen (1366x768): [12] -- Alad (talk) 13:42, 2 December 2018 (UTC)
That CSS only takes affect if your browser width is below 600px. --Larivact (talk) 14:51, 2 December 2018 (UTC)
So much for placebo effect... -- Alad (talk) 15:09, 2 December 2018 (UTC)
Yeah I was a bit confused by your response. Just to clarify tables need to be marked up differently for this to work, you can see an example in my draft. --Larivact (talk) 15:20, 2 December 2018 (UTC)

Restore sections

I seriously dislike Special:Diff/557837 because it makes the page less accessible and is semantically wrong. You should be able to link any section you like, it is the job of the users to look around when they were linked to a specific section. I think we neither can nor should attempt to make our articles idiot-proof by substituting sections with definition terms.--Larivact (talk) 08:01, 2 December 2018 (UTC)

The only way to make it idiot proof is to either delete this article or make it an alphabetical list - both of which are still very tempting to me. In any case, I don't think the separated tables (with sections or with definition terms) are ideal either - it's only there because pacman wrappers are broken to such an extent they need to be specifically warned against. -- Alad (talk) 11:44, 2 December 2018 (UTC)
One thing to keep in mind (and the reason for this "special treatment") is that the AUR helpers article is systematically abused to encourage help vampirism (resp. encouragement to ignore supported distribution tools) by users alike. I've restored the sections for now, but adding __NOTOC__ should be a consideration. It won't prevent copy pasting of links but might at least force the "AUR helpers are not supported" warning into view. -- Alad (talk) 11:54, 2 December 2018 (UTC)
[13], closing -- Alad (talk) 13:40, 8 December 2018 (UTC)

Remove "optional" distinction from File review

The description already says "by default", and I have no idea why we should encourage the notion of do-not-review-unless-opt-in. -- Alad (talk) 14:30, 8 December 2018 (UTC)

Yes, please change this. It's anyways describing a supported feature, the implication is that most tools likely offer you the ability to skip past. Also we can just remove the column entirely from the "search & download" helpers, surely... or mark them as not applicable rather than "yes". -- Eschwartz (talk) 05:52, 9 December 2018 (UTC)
Done & done. - Alad (talk) 12:00, 9 December 2018 (UTC)
Wait, are all these helpers don't-review-by-default? -- Eschwartz (talk) 15:23, 9 December 2018 (UTC)
Yes. (I tested the bunch of them back in the day, and I don't know of any changes since then.) -- Alad (talk) 16:22, 9 December 2018 (UTC)