[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: In support of Jonas Bernoulli's Magit (was: comparing code on differ

From: Jonas Bernoulli
Subject: Re: In support of Jonas Bernoulli's Magit (was: comparing code on different branches)
Date: Thu, 13 Jul 2017 18:13:33 +0200
User-agent: mu4e 0.9.19; emacs 25.2.1


I would like to thank John Yates and others for speaking up and for
sharing some thoughts on the role I have played in making Magit what
it is today.

  Richard Stallman said:
> You've hit the nail on the head.  I am not saying anything either
> good or bad about Magit as such, because that's not the issue here.

To some extend, that rubs me the wrong way.  Lacking public statements
to the contrary, this leaves the impression that you want to include
Magit in Emacs not because you think it is good, but because it is

That being said, and while I appreciate that...

  Stefan Monnier said:
> I'm afraid you're missing the point: distributing Magit with Emacs
> is not terribly important, compared to fostering good relationships.

...the relationship is still good and I don't see that changing.  It
is not particularly strong though, but that is something that I would
like to change.

Part of Magit's success lays in my efforts to take the needs and ideas
of all of its users seriously and to find satisfactory compromises
even when mutually exclusive opinions exist on some matter.

Usually such disagreements mostly concern design matters, but this
situation is similar.  And here too I want to be able to justify the
outcome, while I realize that it will not be possible to satisfy
everybody, because existing opinions range from "this is something
that absolutely must be done" to "doing this would massively hinder
future development and must absolutely be avoided".

I disagree with both opinions and suspect that most people do too, but
toward what side the majority leans I do not know.  And while this is
not the only factor that will guide my decision, public opinion is one
that I will consider.

I dislike being in a situation where I have no choice but to pick the
worst of the available options in the eyes of some, no matter what I
choose to do, i.e. when my only choice is between whom I disappoint.

As a result I feel put on the spot.  And this is the primary reason
why I have taken so long to respond.

  Richard Stallman said:
> We have a problem in Emacs: it doesn't contain a good interface to
> git.  People often recommend something that is not in Emacs.  That's
> not a good situation.  I want to fix it.

I understand why you would like to integrate Magit into Emacs.

I understand why you want to hold the copyright for all code in Emacs.

I do *not* understand why, in the case that this should not happen,
you take issue with people recommending Magit and why you think that
this is a major issue that needs fixing.

I also do not understand why you personally do not want to -- why you
apparently cannot -- use Magit while it is not part of Emacs.

Magit is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later

I understand why you would *rather* have Magit be a part of Emacs, but
I do not understand why that not being the case is a deal breaker --
it is free software released under your preferred license, which you

You will have to provide an answer to that question before I can move
forward with this. It might be that I don't agree with your reasoning.
If so, then that most not necessarily be a deal breaker for me -- but
I think that we as a community can not simply except this premise that
"Magit must be part of Emacs, or else it must be replaced and should
not be recommended" unquestioned.

  Richard Stallman said:
> In principle, we could fix it with Magit.  [...] A year ago, more or
> less, I asked people if we could do this and I was told it was
> impossible.

The last time I replied in a thread such as this one (which might very
well be the conversation you are referring to), I said that I am open
to the idea, but that I have other priorities.  I did not say that it
was impossible, and don't think anybody else did either.

I do prioritize according to my understanding of what will be most
beneficial to Magit's users.  What are the benefits to Magit if it is
integrated into Emacs?  It's not that I don't see any, but I also see
many drawbacks, and I don't really think that I should be the one who
outlines the benefits.


I actually want to integrate parts of Magit into Emacs as soon as
possible, because they are useful beyond the Magit/Git use-case and/or
because Magit would benefit from Emacs making some concessions to its

`with-editor.el' is an existing example.  So are `magit-popup.el' and
`magit-section.el', though I intend to replace those libraries with
better implementations that draw from what I have learned about their
limitations.  (Also `magit-popup.el' is one of, if not the ugliest
part of Magit.  But it is solid never-the-less.)

I should have done that a long time ago, and it is a bit strange to do
so now, shortly before I begin work on the successors.  But I should
probably do so anyway.  I am occasionally being asked to do it, and
even once I have written the replacements, I think that valid reasons
will remain to prefer the old implementations.  (Though it will be a
bit strange that they will continue to be named "magit-*" while Magit
itself will have moved on, maybe the should be renamed once that

Could we please start with adding those packages to Elpa?  Baby steps
and all.  It would immensely help me stay motivated to move into this
direction, if Richard could in turn stop treating Magit as a problem
and embrace it, or at least refrain from calling for a replacement
and uttering a warning whenever someone recommends its use.


I think that Magit is really good, but also that it could still get a
lot better.  And I have a plan toward that goal -- John Yates called
it a "credible map toward the future".  That plan involves, and to
some extend depends on, contributing large amounts of code to Emacs.

In the long run it would be beneficial for Magit itself to be part of
Emacs.  I just don't think that adding all of Magit to Emacs now, is
the best strategy forward.


What I am trying to do is to separate the abstractions from the
concrete uses in the UI and because this has been a major focus all
along I have progressed pretty far already.  I would like to add those
abstractions to Emacs core.

I also intend to soon write new low-level functionality, including
`git-handler.el', a file-handler for Git blobs and trees, and a module
for libgit2 (which John Wiegley has offered to co-author).  I am going
to contribute these libraries soon after as they have progressed
beyond the prototyping stage.  My hope is that VC and Git related
third-party packages will use them, to increase interoperability.

I think experimentation and innovation happens primarily outside of
Emacs core.  I am under the impression, that once a package is part
of Emacs, its basic structure is set in stone.  (Just to be clear, I
think a lot of good changes are being made to Emacs itself too.  And
I plan to make heavy use of some of the newer functionality, which I
in many cases am very exited about.)

But I strongly believe that Magit is only what it is today because
I had the liberty to innovate and make far reaching changes without
having to constantly justify in great detail why those changes were
necessary.  Once Magit is part of Emacs core, that won't be possible
anymore, and merely being part of Elpa doesn't really help Magit at

So what I would like to do instead of adding Magit to Emacs/Elpa, is
to add primarily those abstractions to Emacs core, whose essence is
clearly represented in their implementation.  Essentially code that
feels very obvious.  Such code might look trivial, but is the result
of hard work and the willingness to admit that some earlier attempt
was wrong and to discard it while learning from it.  I feel that too
many Emacs packages work around limitations instead of tackling them
head on.


Maintaining Magit is a lot of work, probably more than most realize.
I don't just write most of the code, I also write documentation,
provide user support, and generally do everything in my power to make
Magit as useful and easy to use for as many people as I can.

I won't be able to keep this up much longer unless I am being payed to
do so.  But I love doing it, which is why I will start a fundraising
campaign this month.  (I wasn't actually quite ready to announce that
yet, another reason why it took me so long to respond.  Should I just
conceal this rather relevant detail or talk in great length about it?
As so often, I have decided to compromise, in this case by merely
mentioning it.)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]