The “her” is a client/family relation. She has a one-person legal practice, with a sometimes part-time assistant and a once-a-month bookkeeper. The practice had two computers, (XP desktop and Vista laptop), a Blackberry, and an all-in-one printer. On the software side, the practice was Office 2003 based, with QuickBooks for the bookkeeping, and AOL for the mail. Backups were… “limited” in frequency, and she was swapping files between computers on a jump-drive and loosing track of which version was which.
She asked me to help her after her three-year-old desktop ate itself on a Trojan horse. I did the data rescue, and offered her a solution: Subversion.
Subversion and the LAST Server
I was introduced to Subversion three years ago, and these days I don’t send an email without version control. This is a tool designed for developers to keep track of source code, to make sure everyone in a team is modifying the correct version of a file, and tracking the evolution of source code between versions, greatly assisting debugging.
Because it is open source, and meant for open source projects, the primary means of accessing it is through Apache, and you can leverage all of Apache’s authentication power to allow/disallow access to your data, with all of the “eyes” using and looking at and debugging Apache, ensuring that your data is kept as secure as your password or, if that isn’t secure enough, client SSL certificates.
In addition, many project management tools like Trac have grown up around Subversion, providing a web interface to your data that is served and protected through Apache. What has evolved is something that I like to call the LAST server – Linux, Apache, Subversion, Trac. On Ubuntu server, it is very easy to install – start with a LAMP server, and
apt-get install subversion libapache2-svn trac. (Ok, if you have to configure Apache, especially if you want authentication and SSL, but that is common knowlege for LAMP setup.)
What has emerged is not only great for developers, but anyone that needs to keep track of multiple versions of files between several computers, especially if they have a ton of data, it needs to be protected, and you are traveling. It is certainly a little harder to use than many commercial, document management applications, but a one (sometimes two) person office cannot justify the expense (not just of the software, but server license needed to run it on). The open-source version control systems (Alfresco, Knowledge Tree) are good products, but they are hard to use for “simple version control”, and underutilized features scream at you though the interface instead of being “tucked away”. They also can’t be “apt-got” like Subversion and Trac.
With LAST, practically any feature you want can be added later, including document search (through the repo search extension or beagle), virus scanning on the server-side by piping to ClamAV, email notifications with triggers, etc.
So I talked her into it, telling her that she would have to learn a new system, selling her on the great features of version control – having a “second copy” of everything on the server, being able to share files between her computers, and having her data securely accessible from anywhere in the world. I took her old computer, put two new hard drives on it for mirrored RAID, and installed Ubuntu and LAST – a “business-class” server solution for less than $200 in hard drives. (Did email, LDAP, and a bunch of other stuff too, on the same server.)
She bought a new computer (Vista – yuck), and I sat down to show her Subversion.
The Tortoise and the Fox
Subversion is a server-side application. Yes it comes with a command-line client, but only the uber-geeky use it, and only when they want to do something simple. For the non-geek, there is only one way to access subversion – TortoiseSVN.
TortoiseSVN is one of the “little sung” (at least from hard-cord Linux-only types) heroes of Open Source – one of the applications that introduces individuals to open-source, fills a major need, and doesn’t see interface as an after thought, but the thought. It completely dominates the Windows Subversion client (and version control) market in the way open source should – it is the standard to beat in that proprietary vendors must “justify” the purchase of a proprietary product over Tortoise. Most significantly, (and I’m sure others will contest this) Tortoise drove Microsoft from a market (SourceSafe), forcing them to come back with a more compelling product that is, in no way, dominant.
TortoiseSVN has an incredibly easy interface, all accessible with a “right-click”. When a file is changed, but not committed to the repository, a red circle appears on it. When you commit, a green check replaces the circle, and you know your changes are in the repository.
If you want to see an older version of a file, right-click and
view-log. You see all of the previous versions, and you can double-click on one to see it. Oh, and you can see the difference between two versions too, and that is easy. Browsing the full repository on the server is easy, and adding files is a matter of dragging them from your desktop to the folder on the repo-browser.
The only major pain in TortoiseSVN is the fact that you have to enter the url of the repository by hand. If you are using the LAST server, or Subversion through Apache with one of the other interfaces, you tend to browse to the folder you want in a web browser, highlight the url in the title bar,
Ctr-cit, and then
Ctr-v into Tortoise’s little “Enter the URL” dialogue box – a pain in the neck. As often happens in open source, someone got peeved enough to fix it.
Toby Johnson wrote an extension to Firefox, called TortoiseSVN Menu, that puts the Subversion menu right into the context menu of Firefox, so when you right-click on a url in Firefox, there is the Tortoise command “checkout”, with no more frustrating URL pasting.
All of this functionality is available for the grand price of… free – every one of these components is available as free and open-source software, and in my opinion, represent one of open-source’s greatest unsung triumphs.
Together, TortoiseSVN, Firefox, and the TortoiseSVN Menu plug-in, constitute a Killer App an application that you come to depend on and cannot live without.
Together, TortoiseSVN, Firefox, and the TortoiseSVN Menu plug-in, constitute a Killer App an application that you come to depend on and cannot live without – an application that must be available (or have a perfect substitute) on a platform for the person to consider the platform – if the application is not there, the option is dead, killed by lack of the “Killer App”.
This solution, TortoiseSVN with FF extension, is only available for Windows – it is a free and open source Killer App that “kills” Linux (or Mac) as an option for people considering their options, and hence, “The Killer App keeping her on Windows is Open Source”… A moment for irony, please.
Mac Subversion Clients
Before looking at Linux, I think it is appropriate to turn to the Mac platform, known to most people as “easy to use”.
Subversion is Apple’s primary version control system, so one would almost expect Tortoise-like Subversion functionality to by built in to the system when you take it out of the box. However, as I have said before, Apple puts users into two distinct categories – users and programmers, with nothing in between, and “Subversion is for programmers”. Apple provides native integration with subversion in Xcode (a version or two old), but does not provide anything for users (it might confuse them).
This “bifurcation” attitude results in “separate coddling” of the two groups, with very good subversion tools provided for programmers… as long as they use Xcode. The presence of these tools stifles the efforts of individual programmers who might be motivated to develop an open-source application that is as slick as Tortoise and useful for the non-programming population – why bother?
Consequently, the Subversion market in Mac is divided between the command-line for advanced programmers, Xcode for X-coders, and proprietary solutions for everyone else – none as good as TortoiseSVN (don’t believe me, just Google “TortoiseSVN” and “Mac”).
The SCPlugin people are trying, but they are merely trying to catch up to where TortoiseSVN was three years ago, and failing at that. Not to disparage them, what they have done is great and I use it, but I know what I am doing, and I would never loose a “newbie” on that tool. My favorite line from their website is, “if you’ve just noticed that the icon badging is somewhere between ‘inconsistent’ and ‘totally busticated,’ be assured we know — everybody knows!”
They are swimming upstream against a culture that doesn’t want them, and no one is more to blame than Apple. The fact that they are trying is either a testament to some deep, driving sense of mission that they possess, or the manifestation of a deep, unspeakable childhood trauma resulting in such masochism that visiting a shrink won’t fix or seeing a dominatrix won’t satisfy.
By all means guys, please keep coding it — I have a MacBookPro I use on the road.
Subversion on Linux (or, “Is that thing still going on?”)
Subversion was really developed for the Linux platform as a “fix” to CVS. CVS was the major version control system in use prior to the development of SVN, and it has… “issues”. There are several graphical clients to use SVN in Linux, most Free and Open Source, but none of them as slick or easy as Tortoise. In reality, I use several of them, since none really do everything I want the way I want it done.
Linux used to have a fantastic client – KDE-SVN for KDE 3.5. It was better than Tortoise in many ways (it not only showed what you had modified locally, but not committed, but also showed what was newer on the server than the version you had), but not as good in others. The move to KDE4 broke it, and now it has “more bugs than a bait store”, and crashes on routine operations. It was also integrated with Konqueror, the old KDE file manager, and no one has (to my knowledge) taken the time to port it to Dolphin, so now it is just another, separate SVN client.
While Subversion is predominately installed on Linux and served through Apache, it is now being done so for groups coding on Mac and Windows, for Macs and PC’s. Subversion as a client in Linux is becoming “abandonware”, for the simple reason that the community has built something better for their needs (several somethings in fact).
Linux founder Linus Torvalds built Git, and Canonical, Ubuntu’s corporate sponsor, built Bazaar. Both of these tools are distributed version control systems that allow programmers to commit to branches on their local machines, and then merge these branches with changes other people make, ending the need for a centrally-managed server, fitting the open-source development model much better.
Last week, I thought that was the end of the story, but I went to a Linux Users Group meeting on Tuesday (yes, we still have them), and someone pointed out a new project – NautilusSVN. I installed it and, I must say, I am impressed. (Yes, I use KDE, but I have both, and I booted into Gnome to give it a whirl.) Like the SCPlugin team, they are trying to mimic Tortoise, and they are really getting there. They still lack the “drag and drop” repo browser, and there isn’t a Firefox extension yet (at least, on Mozilla’s extension page), but it’s getting there.
I can only imagine why this project started – either some KDE guy missed his KDESVN during the “4.0 – 4.1″ incident (psst… don’t tell him 4.2 is usable again), or some programmer uses Subversion like I do: personal documents. All I can say is “keep going guys (and don’t forget the Firefox extension)”.
I am truly excited about NautilusSVN – this is something that shows an accommodation to younger programmers new to Linux, something I’ve always said was a strength of the Linux community as a whole. Keep up the good work guys, because until it is done, I’m stuck helping my client/family member with her Windows issues.