Interview with Vim's Bram Moolenaar Armijn Hemel 09-10-2001 The vi editor is one of the big successes of the UNIX platform. Countless people work (or have worked) with vi and it is still heavily used. Over the years quite a few clones were written. One of the most successful clones is Vim, which stands for Vi IMproved. Vim 6.0 was just released and we at the EUP e-zine thought it was time to interview the creator of Vim, Bram Moolenaar. EUP e-zine: Bram, although many of us already know how Vim was born we still want to know. Tell us something about the history of Vim. Bram: A long time back, I think it was 1988, I got myself an Amiga computer. Since my fingers were used to editing with Vi, I looked around for a program like Vi for the Amiga. I did find a few so called 'clones', but none of them was good enough. I took the one that came closest to what I wanted, and started improving it. At first the main goal was to make it do all the things of Vi that I was used to. Gradually I started adding nice extras, like multi-level undo. When it was mostly working well, I released a version of Vim (then called "Vi IMitation") on a public domain disk set, made by Fred Fish. Then others started sending me patches. A few people took the effort to port Vim to other platforms, like MS-DOS and Unix. Stimulated by enthusiastic users, I added more features and made it work better. By that time it was justified to rename it to "Vi IMproved". Over time the code has been redesigned and extended so much that nearly nothing of the original 'clone' I started with can be found. EUP e-zine: Why Vim? Wasn't old vi good enough? What improvements are there (compared to old vi and/or other vi clones) Bram: Vi was very good for the time it was created in. The machines in those days were hardly able to compile the program. Since then computers have become a thousand times faster, but Vi remained the same. And there are so many nice things you can do with the extra power of the computers today. Syntax highlighting, for example, which makes it easy to spot comments in between the code. Or multi-level undo, a standard feature in modern editors but missing in Vi. Recently I added diff mode. This shows two versions of a file with the differences nicely highlighted. You can then move the differences to the other file or a third file. There are many more features, too many to mention here. EUP e-zine: Vim has got a lot of functionality. In fact, Vim has grown bigger and bigger, making a full blown Vim absolutely unusable for, for example, rescue disks. Doesn't Vim has too much functionality, or, to put it `unmildly': doesn't it start looking like Emacs? Bram: My experience is that most users prefer a Vim with much functionality. For daily use it's most important to be able to edit productively. But it's still an editor. I managed to avoid letting it grow into multi-functional do-it-all-in-one-program like Emacs. It still starts up within a second. You can compile Vim with most of the extra features disabled, which gives you a small binary that easily fits on a floppy. But if you want to compile with Gnome libraries, Python support and all the other features you get a big program, of course. Some people want that, some don't. That's why Vim is very flexible and configurable. Both at compile time and when running it. Vim 6.0 has support for plug-ins, which makes it quite easy to add even more functionality. EUP e-zine: What will Vim be heading to in the near and not so near future? Bram: Vim 6.0 is practically finished now. This includes the most important features that people have been asking for. It has become quite complex. Not only internally, but also for the user. The internal complexity makes it difficult to add more features without risking breaking something. Thus each change takes quite a bit of time to implement and requires quite a bit of testing. The documentation has grown quite big, and still not every detail is explained. There is too much for one user to understand. This together leads to the goal to avoid adding more features, and concentrate on stability and ease of use. It's also not clear how much time I will have available to work on Vim the coming years. If I do have the time, I will probably work on making it easier to use Vim as a module together with other programs in a framework. So you can use Vim (or another editor) in an IDE, a mail program, etc. EUP e-zine: Vim has support for embedded scripting languages, like Python, Perl and Tcl. Can you name a few examples of successful use of this feature? Bram: Someone has used Perl scripts to build an e-mail program around Vim. The Perl stuff is used for things like MIME encoding and decoding. Otherwise I do not often hear about people using this. I think it's something that sounds great, but when you actually want to use it you discover that the Vim scripting language can do it just as well, and is much better portable. EUP e-zine: From the response of the e-zine editors it shows that a lot of people are using vim. A LOT. Anyway, from a philosophical view point, how do you perceive `open source' has helped you develop Vim and what tips do you have for other people wanting to achieve something similar? Bram: The Vi clone that I started with was also open source. I would probably not have started working on Vim without that starting point. Thus open source code being available was essential for me. Also, while working on Vim I'm helped by a large number of people. The ports to various Operating Systems and support for Asian languages would never been possible without their help. Sharing the source code is obviously required for this. If you want to become famous with some piece of software, open source is the only way to do it. Do you know the people behind successful commercial programs? Probably you have only heard about the CEO. The names of the programmers don't appear in the ads. But don't forget that fame doesn't pay the bills! Everybody has to make a living, thus I think only part of the programs in the world can be open source. It's extremely difficult to ask money for something you can download the source code for. Thus I think that commercial and open source software will exist next to each other. I do not share the view that all software should be open source, because I don't see the purpose of it. There should be a healthy competition between commercial and open source software. EUP e-zine: Vim has a not so standard Open Source license (charity ware). Why is Vim charity ware and why should we all use this particular license? Bram: The license that is used for Vim is the most free that I can think of. It's very similar to the GPL, in that a modified version should be made public. A difference is that there is the possibility to get permission from me to make a modified version and keep it a secret. That is similar to getting a license for a commercial program. Theoretically this would be possible with the GPL too, if you get permission from the copyright owners to use another license. But that is very difficult if many people have worked on the code. Thus the GPL is equally free for a user, but less free for someone who makes software. Asking money for open source software is near to impossible. Since some people said Vim was worth something, I started asking users to donate to the project in Uganda that I know. And this worked out very well. Not only to get money for AIDS victims in Africa, but also to get people sitting behind a computer interested in the struggle for life in Uganda. I hope this brings people of the world closer together and encourages people to help each other. EUP e-zine: Is this project in Uganda a success? Bram: Very much so. When I first came to the project the school had just started and there were only a few buildings. We built the nursery school then, with a group of Dutch volunteers. The teachers only had a little bit of training. Today there are over 500 students, from about five to fifteen years old. There are classrooms spread over a large area, two headmasters and a team of enthusiastic teachers. The first students have now finished learning a trade, some of them came back to work at the project. It's great to see that orphans, who once were chanceless, are now able to help others. EUP e-zine: Famous last words? Bram: "This is the last beta version before the release." EUP e-zine: Thank you very much for this interview Bram.