Interview with Brian Berliner

Brian Berliner is an entrepreneur, investor, Open Source pioneer and the creator of the Concurrent Versions System (CVS), the most popular source code control product in the world. Currently, he is an early stage investor and Executive Coach. Visit his blog here.
What inspired you to code CVS?
I wrote CVS precisely because of a core need that my software development team had. I was working for a company called Prisma Supercomputers in 1988. We were trying to build the world's fastest scalar supercomputer using GaAs technology, running the SPARC instruction set, and built on top of SunOS (the days before Solaris). In the software department, we had a bunch of programmers that were making some significant changes to the SunOS kernel, all at the same time. This was 1988-1989, and Sun was largely a Workstation company at the time. They wanted to build the big servers and get the high margins, but really hadn't figured out how to do that yet. SunOS, as a result, was a Workstation-tuned operating system. The kernel jockeys at Prisma, myself included, were working hard to scale SunOS up to the speeds and performance demanded of the world's fastest computer. And, we were stepping on each-other's work, or having to wait for a file to be unlocked in RCS before we had a shot at editing it. We were a startup and had no time to be less than optimally efficient.
So, I went to my boss, Mike O'Dell (who since went on to be Chief Scientist at UUnet and is now a Venture Partner with NEA), and explained the problem. I asked for 2 weeks to dig in and solve the problem. He granted it (Thanks, Mike!). Given the limited time that I had, I opted to start from a "public domain" solution called "CVS" done by Dick Grune in 1986. It was about 2,000 lines of shell script that did the basics of adding concurrency on top of RCS within a single directory. The project had not advanced in the 3 years since release, but it gave me a good jumping off point. I wrote about 6,000 lines of C code in those two weeks to implement the core CVS that folks have used over the last 17 years. Interestingly, the core concurrency piece of the shell script version (which was brilliant and ahead of its time), ended up being 239 lines of shell script code. My version of it, in C, weighed in at 289 lines of code, and I only recall extending it to handle directories (making CVS recursive was one of the killer feature additions), and fixing some logic. I also added a bunch of capabilities that weren't in the original shell script version, including recursive directories, modules, branching, tagging, code bulk import, operations on the repository itself, tracking your modifications to third-party source code, logging, hooks for third-party tools, extreme performance upgrades for scalability, flexible merging, checkout and diff using flexible dates, and patch generation.
How do/did you feel about CVS being adopted by the open source community and watching it grow?
The original shell script version that I used as a model for CVS was already in the public domain. As a result, I could have done anything I wanted to my version of CVS, including making a commercial version. However, in the spirit of the Open Source movement (which, at that time, was really the Free Software movement), I chose to maintain the copyright myself and to license CVS under the GPL. Of course, to do this, I needed the permission of my management team. This time, it was Rob Kolstad who pushed Prisma to, as the company was being shut down, give me the rights to the work and let me put it under the GNU project (Thanks, Rob!).
CVS would not have been as successful had it not been a key part of the early Open Source movement. I nurtured CVS, part-time, for a couple of years past the first release. Jeff Polk helped me rewrite the internals of CVS during this time - he was a better programmer than I would ever be. Our rewrite allowed for lots of other contributors to extend CVS, now that it was as pretty inside as it was outside. User contributions included lots of portability fixes, which increased CVS adoption, as well as some key features, like the client-server support, which allowed for CVS to enable distributed development to happen on a very grand scale. You could say that CVS was a key component of the Open Source movement and its success. Sourceforge.net currently has over 120,000 open source projects using CVS (8,000 projects are using Subversion, the follow-on to CVS, and I am a big fan of Subversion).
I'm thrilled about the part that I, and other CVS contributors, had on Open Source and software development in general.
What are the biggest differences you see between the internet startups today, and the startups during Web 1.0?
It's easier to do an Internet startup today than in the Web 1.0 days. The software tools are better and cheaper, hardware is cheaper, outsourced data centers are available and standard, global developers are writing really good code now and it's easier to distribute development around the world. The entrepreneurs today are more focused on solving a true need. Google and Yahoo have established web-based advertising as a viable bootstrapping revenue stream - we didn't fully understand how to "monetize eyeballs" in Web 1.0. Open Source tools have really enabled a lot of this. And, we're just getting more mature in how we are allowing for the "architecture of participation". In Web 1.0, most people didn't fully understand the Web and what it could do for them or their place in it. Now, people spend enormous amounts of time on-line, doing good, building their reputation, contributing content. The Web 1.0 greed machine was not good for building enduring businesses. I don't see that now (yet).




