E macsAir

Collecting frequent-committer miles

Magit 4.0 released

I am excited and relieved to finally announce the release of Magit version 4.0, consisting of 1077 commits, since the last release three years ago. The release notes can be found here.

It’s Magit! A Git interface inside Emacs

Magit is a text-based Git user interface that puts an unmatched focus on streamlining workflows. Commands are invoked using short mnemonic key sequences that take the cursor’s position in the highly actionable interface into account to provide context-sensitive behavior.

With Magit you can do nearly everything that you can do when using Git on the command-line, but at greater speed and while taking advantage of advanced features that previously seemed too daunting to use on a daily basis. Many users will find that by using Magit they can become more effective Git user.

For more information about Magit, see https://magit.vc and these blog posts.

At long last

It certainly has been too long since the previous release—once again—and I appologize for that. Going forward I plan to release every one to two months. I’m hoping that I can manage to average eight releases per year.

The problem this time around was that at some point it became impossible to just do another Magit release by itself. Several other packages would have had to be released at the same time, because their previous releases were no longer compatible with the development version of Magit.

Forge in particular was undergoing heavy refactoring and was in no state for a release. A little while ago that finally changed, so last night I could finally tag new releases for emacsql, closql, magit, ghub, forge, orgit, orgit-forge, epkg, epkg-marginalia, borg and emir. Announcements for some of these releases will follow next week.


Magit development has gone through a somewhat boring phase (which isn’t entirly over yet). The focus was on working through the shallow parts of the backlog, so that going forward, I would be able focus on more rewarding talks.

Or to give it a more upbeat spin, I’ve been working on doing sentiments like these justice:

Love when I'm using a tool and get "damn this is well thought out" feeling. Magit (Git client) for Emacs. Been using it for a couple of years and still get these awe moments. — Hastouki
Every time I use magit: How do I ...? It would be really cool if it worked like this... Oh! It does! — Steven R. Baker

As you can see, users have pretty high expectations of Magit, and despite what this other quote might imply, this isn’t the result of magic but hard work.

magit is a superb example of nominative determinism — eointierney

So it is no surprise, that when a user runs into some less often used command that does not do exactly what they had hoped for, they often open a feature request to have it improved. That is of course perfectly reasonable and helps me determine what parts of the user experience needs improvements, but since Magit is also very popular, it also means that there is a steady stream of new work to be done. On top of the backlog, that is.

So that is what I have worked on these past few years: many instances of “command X now provides better defaults” and similar. That doesn’t make for exciting reading of course, so I won’t provide that list here, but if you are interested, you can find a lot of that in the release notes.

There is some new functionality of course, such as the three dozen new commands (and that is if we count very conservatively). Magit now also provides context sensitive right-click menus.


For Magit to become what it is today, both is needed, innovative new functionality, but also a lot of attention to detail and grinding. When it comes to Magit itself, the focus has been on the latter these past years.

The more interesting development happened in the dependency Transient, and especially the extension Forge. More on the latter next week.

Likewise, while Magit development has slowed a bit, Forge and Transient saw quite an increase in activity.

magit forge transient

(Legend: magit, forge, transient)

Another takeaway from these graphs is that development is in large parts a one man show. That is fine, and I am of course thankful for the help I have gotten from Kyle and others over the years.

But given Magit’s popularity, it also means that I have to personally provide a lot of support. The time I spend on that does not go into development, so one way you could help me out, is by monitoring Magit’s “Q/A Discussions” and helping other users.


So what are my plans going forward? After all, releasing more often cannot be the main goal.

Another thing I have to focus on is “marketing”. You might not have known this, but the money users pay me for my work on Magit and many other Emacs projects, is actually my only income.

Working on Magit, along with my other Emacs projects, is a full-time job, my only job. Unfortunately I am being payed much less than that. At present I earn less than half of the median income (across all professions) where I live. This is a source of anxiety.

The only time my income ever increases somewhat is after releases. In between those the number of supporters slowly but steadily decreases. So believe me when I say, that I would have released earlier, if only I could have.

I know that as far as release announcements go, this isn’t a great post. It’s also not great marketing. But this is what we get when I try to convince users to support my work; an honest message about my situation and a plea for your support.

On a good day I enjoy helping users, debugging obscure bugs and even writing documentation. On a bad day I wonder why I am doing all those things that are expected of a professional developer, for a starving artist’s pay. If that is where I am at, why not just become an artist? Why not just write software that does exactly what I need, and leave out all the documentation and knobs that allows others to make full use of it?


Well, that turned dark fast. That wasn’t my intention—this is actually a joyous day! So let’s move on from that, but stay on the topic of art. This sentence certainly brightened my day when I first read it:

If Magit creator is the Bach of git, then Magit itself is probably Chaconne, but I prefer the fuge from BWV 1001 (second movement) so I'm tempted to call it that. — guygastineau

That’s very flattering of course, but I cannot live on praise alone. They say that you only need “1000 true fans” to make a decent living as an artist. That seems about right. So here’s my goal: make a decent living as a FOSS developer of a niche but beloved tool, by finding 1000 users willing to support my work. Reaching this goal would make everything else a bit easier.

You can track progress here. If the ratio stays the same, this accounts for about 2/3 of my supporters.

Thanks for your support!
Jonas



Comments on Reddit and Github.

Posted on 9th August 2024