We had a great chat with Bram Molinar, a Dutch computer programmer and an active member of the open source software community. Bram is the original author, maintainer, release manager, and lifelong benevolent dictator for Vim, a VI-derived text editor very popular among programmers and power users.
Enjoy the full interview below!
euro: Looking back, what does working on Vim mean to you personally?
Bram: huge. I’ve always loved creating things, but often, once I’ve finished something, I wonder what to do with it. With Vim I can not only use it myself, but by making it available to the public, many people can enjoy it. He made my name known in the world and indirectly got me a job. These days, now that I’m retired, that gives me something fun, interesting, and useful. Vim is a very important part of my life.
euro: In your opinion, is software development closer to art or science? Are deviations from traditional techniques allowed or should you strictly follow the main trend?
Bram: I don’t see a lot of science in software development. Science refers to evidence that something is true. In software, there are a lot of opinions and there is experience, but is there any evidence that one programming language is better than another? Is there evidence that object-oriented programming leads to better productivity? Most of the evidence relates to performance measurements, there are statistics, but almost no relationship to the language in which the program was written or to the tools that were used. It’s not art either, because the main goal is for programs to work well, not that they look pretty. It is more than just a craft. And the craftsman uses whatever tools he thinks will produce the best result, regardless of whether they are what everyone else is using or something different. A good craftsman makes his own tools when needed.
euro: With Vim opening, we can’t miss your call to help the children living in Uganda. How do you come up with the idea of licensing Vim using Careware/Charityware licensing forms and how many people can donate in this way?
Bram: I never wanted to make money from Vim. It started as a hobby and most of the time I had a job with a good enough salary. Except for a few years during which I asked for donations. However, quite a few people said they thought Vim was worth something, and the other editors were sold out. So I decided to combine my desire to help poor children with it and Charityware was born. It works well, about 30,000 euros a year is collected in this way, which helps about 50 children finish their education, from primary school to university. Donations come from a few big sponsors and many small donations.
euro: Despite all its flexibility and functionality, Vim is not an intuitive editor, and the entry barrier is very high. If someone wants to use Vim effectively, they have to spend a lot of time learning the control commands. Why would you go this way instead of offering some “beginner friendly” mode with progressively increasing complexity?
Bram: In fact, there is an unknown mode where one can just type without knowing all the commands. This is called “Easy Vim” or evim. But I’m assuming it’s not used much, because once you hear about Vim and all the powerful commands, why would you use a mode that makes it work like any other editor? Vim, just like Vi, is clearly something you need to learn how to use. As for me, I was somewhat compelled, when the practical class at the university had only one specific computer and the only editor in it was the sixth. After complaining to the teachers, their solution was to give us a one-page cheat sheet… Without this forced learning, I probably wouldn’t have learned how to use the VI, and the course of history would have been very different.
euro: In recent years we’ve seen developers asking “Will someone’s code help me solve my current task?” , rather than writing their own code from scratch. As a result, some orders meet the strict deadlines that companies dictate but look like Frankenstein. In your opinion, is this approach acceptable?
Bram: This usually happens when the software is requested by people who have no insight into the software. I’ve been working for a company where quite a few managers, educated in physics and mechanics, believe the software is the same as what they know and can decide how to make it. That company went downhill and was eventually taken over. The same thing happens in places where decision makers can get away with failure, such as government. Maybe the people writing the code make sure they get the money and then escape the crime scene. On the other end of the scale are the people who like to write beautiful code, spend a lot of time on it, and don’t care if it actually does what it was meant to do or what the budget was. Somewhere in between, there is a balance.
euro: Two years ago, a test fork Vim9 was announced. Can you tell us more about this fork? What is the current stage of this project?
Bram: Vim9 is not a fork but it is the next step in making Vim even better. I did an experiment initially to see if compiling a function into byte code would make Vim script much faster. It turns out that it works fine, but it requires syntax changes to be made. This is not an easy choice, as it supports two different types of script language at the same time, but I think it will work and make plugins writers happy. The old structure will remain, which is why it should not be called a fork. I don’t expect all old Vim scripts to be rewritten in the new format, so we will continue to support the old format. Even Python took a very long time to convert 99% of my Python code to Python 3. The remaining 1% is still there…
euro: It is always difficult to maintain backward compatibility because many features cannot be implemented without interruption. Will Vim9 stick to the principles of backward compatibility, or will it open a new page in Vim history?
Bram: The Vim9 script is not backward compatible, but the old script syntax is also available. One can decide the syntax for each file and each function. This way for Vim9 we are free to make it work better. However, the two different types of Vim are close enough that one can write either of them. I have been careful to ensure that when an error occurs, an error is presented to help the user fix it quickly.
euro: IRC has been identified as the community channel on the official Vim website. It is not common nowadays and some novice professionals have not even heard of it. Are you planning to migrate to real-life Slack or Discord someday to make Vim more impact in this way?
Bram: I’m old fashioned, and my main means of communication is email. Not only is that what I’m used to, but it’s also because it doesn’t interrupt me. I can read and reply to messages when I want to, and snooze when I don’t want to be interrupted. Of course, users are free to choose what suits them, and others can organize this. Despite this, chat-like connections tend to be quite annoying.
euro: By using a lot of web manuals, we can discover great plugins to extend Vim’s great functionality. Do you have any favorite plugin or must-haves that you can recommend to our audience?
Bram: I must admit that I don’t use many plugins, other than what is included in the distribution (eg matchit and termdebug). Whenever I need something I tend to do a quick hack or add it to my Vim base. This is a luxury to be innovative :-).
euro: Given your extensive experience, can you share any of your developer’s life hacks on how to stay productive over the years? thank you!
Bram: No hacking, just some basic rules and tips. One of the things I’ve seen guys do is work very late, and then end up late the next morning. Most people have their most productive time in the morning, so it’s far better to put a hard time limit on downtime. Maybe write down where you’ve been, relax a bit, get some good sleep and carry on the next morning. Often the issue you stuck with yesterday suddenly gets new insight and you know what to do. The term “sleep on it” actually works, at least for me. Another thing is that sometimes what you need is not some clever workaround or endless tweaking of your config, but just writing quickly. Recording a macro and repeating in Vim is often good enough to do something 200 times. How long do you need to write an extension for it?
We are grateful for the opportunity to meet Bram and learn from his valuable experiences and years of experience.