I am considering removing the git-annex webapp
. Your feedback is
appreciated if you still use it. --Joey
The assistant would be retained, so existing setups that were configured with the webapp would keep working, although users of those would need to replace any use of the webapp to control them with command-line use.
The webapp has been only minimally maintained for about 10 years. There have been no new features, and while it amazingly continues to work, it doesn't addess many of the changes in git-annex. For example, there's no way to configure exporttree special remotes in the webapp.
I think the webapp is barely used by git-annex users. The point of it was to make git-annex easy enough to set up to reach a larger user base. That necessarily meant building something that aspired to be more like dropbox than git. That never really happened. git-annex found its own user bases that appreciate its actual strengths, and who have helped build it in the directions where more and more people find it useful.
Keeping the webapp in git-annex has a price. It has a complex and annoying dependency chain. (See ditch yesod.) It uses template haskell, which makes build times slow, and makes building use a lot more memory.
The webapp also has some security exposure that stock git-annex does not have. Beyond the business of connecting to the webapp securely, the adhoc network protocol used by the webapp's pairing interface is baked into the assistant even when the webapp is not being used. And is not otherwise used in git-annex, and has had at least one security issue in the past.
The git-annex binary also ends up significantly larger due to containing the webapp. And removing it deletes 28 thousand lines of code from git-annex, including embedded code copies of bootstrap and jquery.
The removewebapp
branch has a working patch to remove the webapp.
Documentation that mentions the webapp, including doc/git-annex-webapp.mdwn still would need to be updated.
Also annex.autoupgrade needs to be updated, one of the options was webapp specific. Maybe upgrades are out of scope for the assistant too?
These are all valid reasons to retire the webapp. The webapp lacks many features that it would need to be really useful. Also creation of new repos or addition of existing repos into the webapp is not as straightforward as it should be to make it similar in usability like e.g. syncthing.
I do still use it for shared family folders on my and their machines. It's nice to have something to tell people to click on, then something happens and they can see if syncing works or does anything.
git annex info
is not quite the same, though it shows active transfers.What I would love to see as a replacement for the webapp is a command like
git annex assistant-status
that maybe outputs as json of human-readable text what the assitant currently does (pulling, merging, pushing to which remote, downloading, uploading, etc.), all the stuff that was nicely visible in the webapp. (Does this exist already? 🤔)Furthermore, a command like
git annex activity
that goes arbitrarily far back in time and statically (non-live) lists recent activities like:document.txt
(10MB)document.txt
(from today 10:45) to remote1, remote2 and remote3document.txt
(12MB) and uploaded to remote2Basically a human-readable (or as JSON), chronological log of things that happened in the repo. This is a superpower of git-annex: all this information is available as far back as one wants, we just don't have a way to access it nicely.
git log
andgit annex log
exist, but they are too specific, too broad or a bit hard to parse on their own. For example:git annex activity --since="2 weeks ago" --include='*.doc'
would list things (who committed, which remote received it, etc.) that happened in the last two weeks to *.doc filesgit annex activity --only-annex --in=remote2
would list recent annex operations (in thegit-annex
branch only) of remote2git annex activity --only-changes --largerthan=10MB
would list recent file changes (additions, modifications, deletions, etc., ingit log
only)This
git annex assistant-log
andgit annex activity
would be a very nice feature to showcase git-annex's power (which other file syncing tool can to this? 🤔) and also solve Recent remote activities.As part of removing the webapp, I patched Alerts out of the assistant in 33cf88c8b8962a7f5d3b3caada95890d5f4d377e.
It did occur to me that logging the text of the Alert might make the assistant's log more useful. That commit would be an easy starting point to adding such logging.
I don't think it solves Recent remote activities though because it would only show activity by the assistant, not by other commands, and not activity that happened in other clones of the repository.