I came to work here at SlickEdit during the early nineties.  I was just out of college and had a lot to learn.  A lot of things have changed since then.  We changed the name of the company, switched offices a number of times, released twelve versions of SlickEdit (some of them were called “Visual SlickEdit”).  Shortly after I got here in 1993 we received an early version of Microsoft Visual C++ (I thought it was the first version, but Wikipedia says 1992, I can only guess that the one we had was not the first version).  Visual C++was a big deal for development on Windows…  And we were flooded with requests to replace the editor inside the Visual C++ application.  To be fair, these request really only lasted for fourteen years or so.  When they stop I will write another blog about it (or more appropriately maybe one of the members of the SlickEdit Tools for Visual Studio team will).

Right around this time we started work to add version control support to Visual SlickEdit 1.1.  At the time most of the version control systems we had requests to support were very file oriented.  You checked a file out, it was locked, you worked on it, and checked it back in.  Some of the companies that made these products were actually here in “The Triangle” area of central North Carolina, which was convenient, and almost all of these companies were willing to give you a free copy of their product for support purposes, or do a product swap.  In no particular order, these players were Source Safe, TLIB, and PVCS on Windows, and RCS or SCCS on UNIX.  Briefly there was a product for Windows called “Microsoft Delta”.  It is really hard to find information about at this point.  Apparently it was not well received, and Microsoft purchased One Tree, the company that produced Source Safe.  (This is not one of those anti-Microsoft rants, just a history lesson).  Supporting these products proved challenging because it was tough to create a general purpose framework for all of them, and we felt creating individual support for each one would eventually prove even more problematic.  So we put in place a system with configurable command lines that had “parse in parts” and we were off.

A few years down the road, we started getting requests to support a product called ClearCase.  It was more directory oriented than file oriented, and actually had its own file system (for its UNIX versions).  It was huge compared to these other systems.  It also changed hands (or in some cases companies changed names) a few times.  We managed to come up with a set of command lines that worked alright for ClearCase, and looked ahead.

Around 1995 Microsoft released a spec for dealing with source control systems known as the “SCC Interface”.  It was very file oriented.  It supported the concept of a project, but most of the operations that were supported dealt with a single file (checkout, checkin, etc).  We started support for this in Visual SlickEdit v4.0.  It solved some problems, and created some new ones.  Overall it was a good thing.  Unfortunately, it kind of disappeared.  The interface itself is still in use today, but if you wanted to find a copy of the specs for it, it might prove challenging.

In the late nineties, we had a lot of requests to support a version control system called CVS.  It had actually been around for at least ten years at the time.  CVS is a very directory oriented system, and I initially had a very hard time wrapping my head around it.  We finally had to break our mold and support one system differently, with much customized support.  We first shipped the support for CVS with v9 in 2003, but we had been using it internally for some time.

Shortly thereafter, something called “Subversion” happened.  It works the same as CVS in many regards, so adding support for it was not that difficult.  It is taking some time to “settle down” though, given a combination of changes in Subversion itself and the amount that the interface has been used/tested.

So what does the future hold?  I hope to spread something more like our current CVS and Subversion interface to more systems.  I hope to do it in a robust manner that does not cause more problems than it solves.  Also, I hope not to spend too much time writing features that serve no practical purpose.  I hope to revamp our version control integration in a fashion that says “I learned a few things along the way”.