Interview with Bram Moolenaar, as published in the Czech magazine LinuxEXPRES, English version.
Original Czech version (screendumps)
I live in the east of the Netherlands and I'm currently working full-time on Open Source software. I live by myself, thus I don't have to support a family. That would be difficult, since most of the work I do is not being paid for. I work from home, that effectively avoids wasting time in traffic jams. Most of my communication with the rest of the world is done through e-mail. To compensate for being at home a lot I travel to distant countries during my holidays. I enjoy learning about different countries and cultures.
At first that was an involuntary choice. For a class at the university we were forced to use this awfully complex editor, with only one sheet of paper for documentation. I started appreciating it only much later, when it became clear that Vi allows for very quick editing. Once my fingers got used to it anything else slowed me down. Thus once I got an Amiga computer, I just had to make a Vi-like editor. That was where I started working on Vim.
I started with Stevie. This was a Vi clone for the Atari ST computer, ported to the Amiga. It had quite a lot of problems and could not do everything that Vi could, but since the source code was available I could fix that myself. That was also how I got to appreciate software being Open Source. Once the amount of changed code was more than the original Stevie code I named it Vim.
The difference between Vim and many other Open Source projects is that I am doing most of the work. It is basically my project, even though many others help me with the work. I decide what goes in and what doesn't. That allows for a license that fits with this way of running the project. It allows distributing unmodified copies without restrictions. Modifications must be made available to me. An important item of the license is that I can decide what to do with these modifications. Thus someone can use the Vim code for a non-free, not Open Source project, if I allow it. The GPL doesn't allow that, thus it is less free in that aspect. Theoretically you could make GPL'ed code also available under another license, but you would need to get permission from all people that have copyrights. That would be very complicated. In practice I only had a special request long ago.
Since Vim 6.1 the license was updated to be GPL compatible. That is required to be able to distribute a Vim compiled with a GPL'ed library. And that also shows the main disadvantage of the GPL: it enforces freedom in a way that it actually restricts freedom.
I visit the children's centre in Uganda regularly. Every time I come there I can see progress. The school at the centre keeps growing and many children I know continue to become more educated. Fortunately, Uganda is very stable politically and the economy is growing. This allows the project to concentrate on improving the school and clinic. This means that the money we send there really helps to improve the situation and has a long-term effect. We now see children finish their training and come back to the center to work and help train younger children.
The basic idea has always been that the most important commands are given with the normal keys on your keyboard, mostly the letters. That allows for very fast typing of commands. Vim keeps this design of Vi, while adding many features that are found in other editors. Thus you get the best of both worlds: often used commands are typed quickly and advanced features are available.
It takes time to learn Vi or Vim before you can work productively. If you try it for ten minutes and then give up you will only remember that difficult time you struggled with it. And when you never take the time to learn more than the basic commands you will not profit from the effective editing that is possible. But when you do learn to use Vim, you can work very effectively and love using it. Then you start to have trouble with other editors. For example, most other editors can't repeat a change. When I occasionally use MS-Word I end up with ":w" and "jjj" in the text.
Certainly. I use Vim for all my editing. Mostly using the latest version, thus if I make a mistake I am the first to notice.
My main workhorse runs on FreeBSD 4.9. It is very reliable, although it is a bit convervative. My desktop is KDE, although I mostly run xterms for the actual work. I also have an MS-Windows machine, needed for both Vim development and to run specific hardware that only comes with MS-Windows drivers. And I still occasionally switch on my Amiga 2000, where Vim development started.
I also wonder if I should stop adding features and just fix bugs. Therefore I have given sponsors the possibility to vote on features. One of the items is "stop adding features, there are enough already". It is at the very bottom of the voting list. Thus it's clear that Vim users do want new features.
I am using good old C code. To be compatible with as many C compilers as possible, I am very conservative in using features of modern C compilers. This mostly only happens in GUI code, which requires a modern C compiler anyway. The main code doesn't even use ANSI function prototypes, because they don't work on older systems.
The main advantage of using plain C is that it's relatively simple and there are lots of tools that can be used. The code can be a bit bulky, and requires being careful about freeing allocated memory. It's a lot simpler than C++ though. A language such as Java or Python would be simpler, but they run a lot slower.
There are many ways to change the colors in Vim. I prefer coloring just a few things myself. That makes it easy to quickly recognize different blocks of text. You can see that in the C syntax highlighting, where comments are easy to spot. But not everything is highlighted. It doesn't highlight operators or function names. Some people have written syntax scripts that highlight just about everything. If you don't like that you can overrule the highlighting and select the normal text color for more items.
In Vim 6.3 there are few new features. I concentrated on getting all the reported bugs fixed. A few commands were added, mainly to make things easier for script writers. For example, :keepjumps makes it possible to jump around in files without affecting the jumplist. A real new feature is support for translated help files. That is because there now are Italian and French translations. Thus users need the 'helplang' option to select their preferred language. More translations will follow.
Vim 7 will add many new features. I have begun including patches that people sent me. There now is support for KDE, using the Qt library. And support for printing multi-byte text on PostScript printers has been added.
I plan to add lists and dictionaries to the Vim script language, to make it simpler to write advanced scripts. Vim script started out as something simple, but Vim users are writing more and more complex things with it. Over a thousand can be found on www.vim.org. Adding a couple more data types will make script writing simpler. Somehow Vim users don't like using the Python and Perl interfaces, thus extending the Vim script language is needed.
I also plan to add a few big features. I will use the voting list to decide what to do first. Currently the top item is intelligent completion, also known as intellisense. That will be a challenge to implement, especially if it should work for many languages and on all platforms.
I also need to cleanup the code. A lot of things have been added and changed over time, resulting in messy code and very long functions. This is not just to make the code look nice, it should also avoid making mistakes. Some parts have become very complex and are difficult to change without introducing bugs. But I'm careful, the cleanup itself may also introduce problems. To prevent that requires adding more tests, which is another goal for Vim 7.
I don't think there is one way for Linux. It can go many ways at the same time without going in a wrong way. I do see one danger: Currently Linux development is mostly driven by technical people. They are the best to make choices for how Linux works. Commercial and marketing people will try to push Linux in different directions, with just one goal: to make more money. I certainly hope this will not lead to bad choices.
I am aware of the dangers of software patents. Furtunately, in Europe software patents are still not accepted. This means it would be difficult to accuse me personally for using a patented concept in code I write. Still, there is the danger that a company could stop Vim from being distributed, because they have a patent on something that I wrote. This is only a small risc, since I don't see how a company would profit from stopping Vim distribution. It's clear nobody is going to pay them a license fee. I would simply remove the offensive code.
A patent audit can only be done by specialized people who charge lots of money. It's not worth doing that for Vim. I'm not sure it's worth it for any piece of software, since it takes several years for a patent to be published. Thus even when an audit shows no problems, a patent that comes out next year may still cause a problem. The patent system is really badly implemented, especially in the USA. The only people actually profiting are lawyers and the employees of the patent bureaus. That's why they are the main supporters of allowing software patents.
It is not possible to patent a method that is already known. This is called prior art. It's clear that something like using hjkl to move the cursor was present in Vim before the patent was filed. However, the patent bureau may not know this and grant the patent anyway. I would then have to fight a legal battle to defend myself. I don't know where I would get the money to do this. Patent lawyers are expensive.