
Questions with Vim’s Creator, Bram Moolenaar - ProfDreamer
http://www.binpress.com/blog/2014/11/19/vim-creator-bram-moolenaar-interview/
======
Reebles
Not sure why Bram doesn't believe that removing support for obsolete OSes such
as MS-DOS, Amiga, and BeOs helps with Neovim's goal of simplifying the
codebase and maintenance. Are there even any actual users of these systems
that are disappointed that they won't be able to use neovim? If they're
satisfied on those OSes surely they'd be satisfied with legacy vim.

~~~
teacup50
Bulk churn is the kind of easy task that gives the impression of progress
while providing very little actual value.

In 8 months, here's what NeoVim has done:

1) Reformatted _all_ the code.

2) Deleted a lot of working, old code.

3) Raised a good chunk of cash.

4) Published a very shiny website.

5) Released _nothing._

There's nothing wrong with simplifying a code base, but if you run around
trying to do that independent of any reasonable technical direction, you're
just making noise.

Given that NeoVim's technical direction is extremely poorly considered (while
also disparaging Bram's work), I can't help but think highly of Bram for being
polite -- at all -- to such a disrespectful fork.

~~~
ggreer
Your comment seems to consist of some things that aren't true, and some true
things accompanied with baseless insinuations.

1\. The code was reformatted because Vim's codebase is a mess. It mixes tabs
and spaces willy-nilly. It uses different indentation rules in different parts
of files. These issues may seem cosmetic, but they make the code harder to
follow and increase the likelihood of bugs. Indentation can be especially
misleading when control flow lacks braces (a common occurrence in Vim). The
change didn't require much effort and it made it easier for people to
contribute to Neovim.

2\. Actually, quite a bit of Vim's old platform-specific code is broken. It's
just that nobody uses an SGI IRIS or Amiga, so nobody complains about it. In
some cases, Neovim removed ifdef'd code that could never possibly be
included[1].

3\. People have donated less than $40k to Neovim. That's not even the salary
of a single developer for the 8 months it's been around. The contributors
aren't in it for the money. They simply want to build a great editor.

4\. A very shiny website? It's just static pages hosted on Github. If you look
at the commit history[2], you can see it's insignificant compared to work done
on the Neovim codebase.

5\. Nothing? There's an entire repository of working code. Right now you can
clone Neovim, compile it, and it will run almost all Vim plugins without
issue. The team is very conservative about declaring software stable. They may
not have a tagged release, but to call the existing work "nothing" is
unreasonable. It's at least as stable as Atom.

You also neglected to mention all the other work done on Neovim, such as
replacing ad-hoc cross-platform compatibility and event handling with libuv.
Then there's the improved plugin APIs which allow features that aren't
possible in Vim.[3] And of course, plugins can be written in any language. No
more VimL shims needed.

Lastly: Disparaging? Disrespectful? It's hard to find any criticism the Neovim
contributors have made towards Bram or Vim. They like Bram. They like Vim.
Thiago tried to contribute to Vim multiple times, but was discouraged or
ignored.[4][5] Instead of complaining or giving up, he and the other
contributors are trying to improve the editor and the community around it.
There's no malice or greed involved.

1\.
[https://github.com/neovim/neovim/pull/814](https://github.com/neovim/neovim/pull/814)

2\.
[https://github.com/neovim/neovim.github.io/](https://github.com/neovim/neovim.github.io/)

3\.
[https://github.com/benekastah/neomake](https://github.com/benekastah/neomake)

4\.
[https://groups.google.com/d/msg/vim_dev/QF7Bzh1YABU/02-YGr7_...](https://groups.google.com/d/msg/vim_dev/QF7Bzh1YABU/02-YGr7_sCwJ)

5\.
[https://groups.google.com/d/msg/vim_dev/65jjGqS1_VQ/fFiFrrIB...](https://groups.google.com/d/msg/vim_dev/65jjGqS1_VQ/fFiFrrIBwNAJ)

~~~
keithpeter
"Right now you can clone Neovim, compile it, and it will run almost all Vim
plugins without issue."

Easy compile? (I'm at work and no git clone/compiling here!) Might try later
on tonight.

~~~
aaren
Pretty easy (`make install`). You need Cmake with ssl and a not-too-old gcc
(>4.3). This should be the case on a modern system.

I recently compiled it on CentOS 5 and had to build my own cmake.

[https://github.com/neovim/neovim/wiki/Installing](https://github.com/neovim/neovim/wiki/Installing)

[https://github.com/neovim/neovim/wiki/Building-
Neovim](https://github.com/neovim/neovim/wiki/Building-Neovim)

~~~
keithpeter
Yup, just used the Ubuntu instructions on Trisquel.

------
pherocity_
I can't help but feel, since many of the same arguments against neovim could
be said of the rewrite from vi to vim, that this is the natural order of
things and the point of open source.

~~~
DontGiveTwoFlux
Wasn't vi closed source until Bram came along? Then the name just got changed
to vim because of the additions along the way?

~~~
stsp
vi history in BSD goes back to 1980

Sources are at
[http://svnweb.freebsd.org/csrg/usr.bin/ex/](http://svnweb.freebsd.org/csrg/usr.bin/ex/)

~~~
cpach
It’s pretty amazing to browse code repos that go back over 25 years. Does
anyone know which version control system they (BSD) used back then? SCCS?

~~~
oblio
More likely a file server somewhere, email and patches.

After all Linux didn't use a SCM until quite late.

~~~
the_why_of_y
That's because Linus had the fairly unique position that CVS et al. are
actually _worse_ than not using a SCM at all.

The BSDs have been using CVS for a long time so it's plausible they used
something like RCS or SCCS before CVS was available.

FreeBSD repo goes back to 1993:
[https://svnweb.freebsd.org/base?view=revision&revision=2](https://svnweb.freebsd.org/base?view=revision&revision=2)

------
unfunco
My favourite question and answer from this is the last one.

Q: "What does the future hold for Vim?" – A: "Nothing spectacular."

That's quite a refreshing view, I don't think a person exists that has
mastered Vim absolutely, who knows the most efficient way to achieve
everything they need to. It probably takes just as long to master Vim than it
has for Vim to be developed to where it is, and it's good to see that there's
a focus on improving the existing functionality than extending it further.

~~~
segmondy
Just because you haven't doesn't mean others haven't. You will be surprised.

~~~
Bjartr
I think his statement there is more an observation about how every time a
discussion about some less used vim feature comes up there is invariably at
least one person to say "I've been using vim for x decades and never knew
this".

------
alwillis
We as developers and open source advocates have to get over this "thou shall
not ever remove code" no matter how old and useless it may be.

What the NeoVim team is doing sounds a whole lot like what the libressl team
did when they forked OpenSSL, which also had tons of code for obsolete
operating systems.

At the point of this presentation[1], they removed 90,000 lines of code; it's
probably more now.

Unlike system software like OpenSSL, Vim is something I (and many developers)
spend many hours each day using. In 2014, there's no good reason why it
shouldn't be as responsive and flexible as possible.

Sometimes when my projects get large and have lots of files open and Vim
starts to slowdown just a little, you can almost feel the decades of technical
debt taking its toll.

As someone mentioned previously, the function that waits for user input [2] is
400 lines long and has more the 41 ifdefs, many for operating systems that
have been long dead.

Interestingly enough, it's because of the growing popularity of Vim that this
is becoming more of an issue. I live in the Boston area and have visited many
startups; Vim is quite popular among them. Yes, it's a little hipster, but in
a good way. ;-)

We have lots of seasoned developers at our Vim meetup [3] of course, but there
are way more younger people who've discovered Vim. The room is usually packed.

1\.
[http://www.openbsd.org/papers/bsdcan14-libressl/mgp00026.htm...](http://www.openbsd.org/papers/bsdcan14-libressl/mgp00026.html)

2\.
[https://github.com/b4winckler/macvim/blob/master/src/os_unix...](https://github.com/b4winckler/macvim/blob/master/src/os_unix.c#L5222)

3\. [http://www.meetup.com/The-Boston-Vim-Meetup/](http://www.meetup.com/The-
Boston-Vim-Meetup/)

------
coldtea
> _No idea. Some of the basic choices seem odd and irrelevant for the main
> goals. Such as dropping support for some systems and not being backwards
> compatible. The goals could just as well been implemented without that._

How are those steps "odd and irrelevant"?

Dropping support for BS OS makes the code leaner and cleaner, and easier to
update.

------
adambenayoun
If you liked this interview - make sure to check the other podcasts we
recorded:

[http://www.binpress.com/blog/category/podcast/](http://www.binpress.com/blog/category/podcast/)

------
tempodox
Spoiler alert: I won't say anything about NeoVim.

From the article: _Write nice code. Use white space properly, use good names
for methods, add comments to explain anything that isn’t obvious..._

I do wish more people subscribed to that notion, even if it doesn't sound like
the magic recipe to become the next rockstar ninja.

(Edit: Cloning the Zombie of Obscure Comment Formatting)

------
hyp0
persistent undo seems pretty cool!

enable with _:set undofile_ in .vimrc

NB: if you want to specify a dir for it, you need to create it yourself, or it
silently won't work. eg _mkdir ~ /.vim/undodir_, then in .vimrc _:set
undodir=~ /.vim/undodir_

I also love the idea of undotree, with branches etc, but found it too
confusing in practice. Could the UI be more git-like, I wonder?

~~~
certainly_not
undotree only becomes usable once you install
[https://github.com/sjl/gundo.vim](https://github.com/sjl/gundo.vim)

It's a lifesaver after that.

~~~
thebelal
Completely agree with this. I actually think vims undo tree might be the most
useful feature in vim for me. You can basically use it as version control lite
with automatic commits.

------
andyl
It's unfortunate that Bram isn't more enthusiastic about NeoVim - it looks to
me like they have made great progress and gathering momentum. NeoVim's support
for Lua, Ruby and Python plugins, embeddable core would be a big step forward.

------
jvm
> 8: How can the community ensure that the Vim project succeeds for the
> foreseeable future? > > Keep me alive. :-)

Odd to express narcissism in response to this question.

I have no idea whether NeoVim is going in the right direction but the feeling
you get from this response is that Bram is focused on guarding his turf rather
than thinking constructively about how to move Vim forward.

~~~
rbonvall
I'm sure it was just a playful response.

In case anyone doesn't know, this is Vim's license:

”Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda.”

Hard to believe the guy is narcissistic at all :)

~~~
razammataz
Note that Bram is the treasurer of said charity. You can read their latest
financial report here:

[http://iccf-holland.org/jaarrekening2013en.pdf](http://iccf-
holland.org/jaarrekening2013en.pdf)

~~~
x0x0
and note this:

    
    
       We aim at very low costs. The goal is to limit the costs to 5% of the 
       revenue. The revenue and expenses show that the costs in 2013 were only 0.5% 
       of the total revenue.  This is within the goal by a large margin. The 
       largest parts of the costs are unavoidable banking costs.
    

That is an exceptionally frugal charity; lots of charity monitoring sites seem
to think that over 80% is doing well.

~~~
noir_lord
Incredible, I don't use Vim very much (once in a while) but I think I'll make
a donation when I get paid just for the times when I do.

