Bram Moolenaar is the main developer of the most popular editor in the unix world -- VIM (http://www.vim.org/). He agreed to talk with us about vim's success and other interesting issues.
Q: How have you got involved with vim ? Why are you doing this ?
A long time back I got myself an Amiga computer. Since I was 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 best one, and started improving it. At first the main goal was to be able to do all that Vi could do. Gradually I added some additional features, 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. 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 is still there.
When I started working on Vim it was just for my own use. After some time I got the impression it was useful for others, and sent it out into the world. Since then I'm working more and more on making the program work well for a large audience. It's fun to create something useful. Also, there is a nice group of co-authors and power-users, which is very inspiring.
Q: Vim is charity-ware. Does this comply with open source standards ?
Vim is fully open source. You can distribute the sources freely. The charity-ware concept means that you encouraged to donate to a specific charity. Thus you are not forced to do that.
There is a restriction on distributing a modified version of Vim, which is to prevent someone taking Vim and bring out a changed version, without making the sources public with my permission. This is like GPL (GNU Public License), but less restrictive.
Q: Tell me more about the uganda campaign (which I think is very nice way to help people)
I have worked for a year as a volunteer with a project in the south of Uganda. This is an area that has been struck hard by AIDS. Estimates are that 10 to 30% of the adults are infected by HIV. Many parents die, leaving their children behind. The project helps these needy children in several ways. We find a new home for the child. We make sure the child can go to school, gets medical attention and anything else it needs.
After I returned from Uganda, my heart was still there. I decided the least I could do was to keep supporting the project by raising money for them. The connection to Vim was a very logical one. Thus now I'm asking Vim users to consider donating for the orphans in Uganda. I have also setup an adoption program. You can financially adopt a child, which means that the child gets long-lasting help, which is best for the child. Since we work only with volunteers and the money is directly sent to the project, almost all the money is really used in Uganda.
You can find more information about this at http://www.vim.org/iccf.
Q: Do you think, that original Bill Joy's vi was revolutionary ?
I would rather call it evolutionary. Vi has grown out of Ex, a line editor. It was a logical step to use the whole screen of a terminal, instead of just the bottom line. Nevertheless, Bill made a few radical choices, which are still dominant in Vi and Vim. The most important one is that the most often used commands are given by alphabetic characters. People that type with ten fingers can work very fast.
Since you also need to insert text, there had to be a switch between inserting text and entering commands. These two modes are typical of Vi. The alternative is to directly insert printing characters, and move all commands to non-printing key combinations. Using function keys and the Control and Alt modifiers, you have to do complicated typing, which slows you down.
Q: How is it possible, that the first visual editor is the most used editor (or at least it's improvements). Is vi so revolutionary concept, that nobody discovered something better ?
Once you know Vi or Vim, there is no other editor that allows you to do your work more efficiently. Since all Unix systems come with Vi installed, people are often forced to learn Vi anyway. Why learn another editor?
With Vi editing was already efficient. Vim extends that by adding a lot of useful features, like automatically indenting C programs. Another advantage is that Vim is available on many different systems. Thus you can use the same editor on Windows, Unix, OS/2, etc.
There is competition, of course, but they mostly excel in extra features like project management and mail reading. Not in the core text editing. Vim is now able to do most of those extra things too. And many editors are only available for one platform or are commercial. The main alternative for Vim is Emacs. Some people prefer it, but I don't like its performance and extensive use of modifier keys.
Q: I actually learned vim because I knew, it was cool.I deleted everything else and in few days I became ,,radical vim-lover'' :). How does vim compare with Emacs? I think Emacs is rather huge and unpractical system...
Emacs is big and slow, but it has lots of features. When comparing Vi with Emacs, Emacs wins because Vi lacks too many things. When comparing Vim with Emacs however, there are not many things that are missed in Vim. Unless you expect your editor to work as a Mail and News system perhaps.
Emacs is probably even harder to learn than Vim. All those Control and Meta commands are difficult to type. I can't say much about it, since I never seriously used Emacs myself. But I have seen people struggle with it, and it was easy to convince them to use Vim.
Q: Many people (I'm not one of them) think, that vim is unconfortable. What would you tell them ?
It takes time to learn the Vim commands. If you stay in insert mode, you can do without them and just use the cursor keys to move around and menus to load and save files. But then you don't use the power of Vim. Learning the commands will take some time. People that only edit text once a week probably don't want to invest that time and are satisfied with inefficient editing. But for people that use an editor often, it's worth investing the time. And once you have done that, you will edit comfortably.
Q: Some time ago, when I was involved very much in KDE project's localization, I realized, that I want vim as a widget for editing in everything else. Is this possible (i.e. change the multiline editor widget in applications for vim ?).
Currently not. But it would be a good thing to do. It is in the "todo" list. But the "todo" list has hundreds of nice features which many people want. For the next version 6.0 I will first work on Folding. This will allow hiding parts of the text, so that an overview can be seen. For example, in C code the body of functions can be folded. This provides a good overview of the code. You can then easily select a function and move it elsewhere. This is quite a lot of work to implement, thus it might be a while before this is ready.
Q: Seems interesting. Is there anything else interesting in the TODO list ?
Quite a lot. In order to sort the items by priority an inquiry was held in November 1998. This allowed Vim users to express their opinion about which changes are most wanted. I'm using the results to decide what to work on next. Here is the top five:
Q: How does vim work with international charsets? I've been using with Slovak, but gvim required recompiling, because it was compiled without --enable-multibyte and --enable-xim. After recompiling, it worked very nice. What about other languages (like Japaneese, etc.)?
Currently these special languages are possible: Hangul, Hebrew, Japanese (shift-JIS), Korean, simplified Chinese and traditional Chinese. There are plans to add UTF-8 support (Unicode), which will support many more languages. But I don't know when this will be ready.
Q: Where do you see vim in few years? World domination? :).
Only in a very small part of the world! I will keep improving Vim as well as possible. But I intend to restrict the expansion. Vim is an editor and not a mail system, news reader or project manager. I believe in separate applications that excel in what they do and work together to accomplish more. Not in one huge program that can do everything. Thus Vim should become the best editor in the world, and work well together with other programs.
Q: Do you expect some ,,rich editors'' based on vim appear soon? I mean something like LyX, but with vim-like user interface.
I have no idea. Vim is not a word processor. I could imagine a setup using Vim to edit HTML or TeX, with a preview window to see the result. The tricky part is that navigation in the preview window should position the cursor in the Vim window. This requires a well defined interface between Vim and the previewer. Hopefully this will be created some day.
Q: What do you think about open source movement?
Open source has always been there. It's only recent that there is a large audience for it. It has an important place in the world, but it will never replace commercial software. The two will co-exist. Most people I know that work on open source either make software for a living (or are studying for it), and are making free software on the side. Full-time open source authors are rare. The only one I know is Richard Stallman, and that's only because he somehow got money in the past. Everybody has to earn a living, you can't do that with free software.
There could also be commercial open source software. But so far it has not proven to work. Netscape was not at all pleased with their move to open source. Some call it a failure. I believe that making commercial software open source is tricky, and will therefore never be of much importance. It's much more attractive to use open source software and do something commercial with it. Most Linux distributions work this way. At this time hardware vendors are joining in. It's also a nice way for students to grow into business.
Q: But programmers in Red Hat earn living with open source, or no?
As far as I know, Red Hat makes money on distributing software and support. They sponsor a few open source activities. Does that mean they make money on open source itself? I don't think so, since you can download the software for free. Thus the earnings come from the indirect activities. This is a good system, but I don't think that it works for all software.
Q: Are you ultra-liberal type of personality?
I'm liberal in the sense that I feel everybody must have a lot of freedom in life. I'm capitalistic in the sense that I don't mind people making lots of money. I'm socialistic in the sense that I care for needy people and find it everybody's responsibility to care for them. Now, what would you call me? A "Liberal Capitalistic Socialist"? Note that this applies to software just as well as to daily life.
Q: What do you think about the first place for vi(m) in editors cat in Linux Journal reader's choice awards? (it got much more votes than emacs).
This probably means that Emacs users don't read Linux Journal. :-) Seriously, it is nice to see Vim being appreciated. It stimulates me to go on improving it.
Q: Your favourite hero ... (in computing, in life)
I have a different hero every day! I try to learn from the good things in all people I encounter or hear about. And there is so much to learn...
Q: Nice, like when you become the same as your hero, the hero is few steps further (or even back?) in his life. I like this idea... What are your hobbies (except for programming and helping people in need).
I enjoy listening to music. I can do that while working on the computer. My favorite artist is Mike Oldfield. There are many other types of music I like: Depeche mode, Jean Michel Jarre, Bjork, Susanne Vega, etc.
And I like travelling, especially to countries with an interesting culture. I have been to Thailand recently, which was certainly a very interesting country. I also like Egypt a lot. The history is ancient and still the statues are beautiful. But there are still so many other countries to visit, and more locations in countries I already visited. Perhaps I'll go to south America next, because I have never been to that side.