Good resolutions sometimes take a long time, but never give up your hopes! I have finally put the videobass code base under version control: http://code.google.com/p/videobass/source/checkout
My last publication of videobass sources was in 2004, I believe. And I’m not even sure if that included the videobass application written in Max/MSP. Since then the instrument has evolved a lot, but changes are incremental, most of the times very small, and not always worth a big anouncement. When we received the award of the Migros Kulturprozent for this project, I took the pledge to document more and publish all under open source licenses. But before publishing I wanted to develop a little more, advance and clean up the code – small improvements not really worth a big announcement…
If I had my code up on a public version control server, a big part of the documentation would be there automatically, with the log messages of all these small improvements… And if I had any sort of version control, maybe the code would not have been always a mess and I would not have rewritten it about four times from scratch?
Anyway, I’ve just rewritten almost everything again, and it’s too early to see all the edgy corners so I’m still quite proud of it. That’s a good moment to put this project on some stable grounds.
Why did it take so long?
I still don’t really understand what my problem is with version control. I do fundamentally understand why it is important. I experienced so many times where I was completely lost in the mess of my code and I wished I could roll back to an older version (most of all if a last-minute change half an hour before a live concert completely broke my software, and I had to hack my way all up on stage instead of eating with the rest of the band…). I wish I had a log of my changes. I would love to know when I come back to the project after some months in other worlds, which one of the five folders in different places on my harddisk is the most recent version… videobass2010? oh no, that’s just an unfinished aproach to a complete rewrite. vb09? looks nice, but there’s a lot of files in videobass_2007 that have more recent modification dates….
One question is how?
I tried my hands on Bazaar, which seemed to suit my unorganized style quite well, but I forgot which projects are controlled by Bazaar, and copied files and folders back and forth and it’s a complete mess now, with .bzr directories in completely unrelated projects, because I copied another as a template and I do not see that it is versioned – I do not ls -a every time before I duplicate a folder in the Finder…
And subversion is even worse because it puts a .svn in every f***ing directory and I have to think to do a svn export before zipping and sending the stuff in an email to somebody.
So one of the questions that held me back was what system do I use? Well now the answer is subversion but I’m still triyng to get used to it (you can see my commit log if you want to get an idea…)
And the other question is: where?
Sourceforge was the obvious answer in 2004 for LiveCut. But sourceforge is bloated, slow, and I always forget how to do this stuff if I’m not constantly updating my project. Uploads for the website go to projects.sourceforge.net/l/li/liv/livecut/htdocs ?? It’s been a long time, I can’t remember…
Do I trust Google? Should I put all my precious work in not evil Google’s hands? I don’t know.
We also tried to set up our own subversion server on the G4 in the closet. It worked well. I can’t remember how. I don’t remember the password. I don’t remember what code is on there, but I’m sure I have much more recent versions of the same software on my hard disc…
It’s a mess
Why did it go so fast?
Last weekend we recorded some songs and did a concert with Naïma – with the newest version of the VideoBass. At the rehearsals Maïté found some severe problems with the software and I had to do something about it quickly. The problem is, I did the latest corrections in december directly on the new MacMini that will go into the VideoBass Amp and the Max/MSP Demo license on that machine has expired since. On my MacBook I have a license, so i can edit the patches, but it’s not the same machine. I could copy the whole thing back to a new folder on my MacBook, code, try, and copy back to see if it also works on the MacMini. But in doing so I contribute to the duplication of code and the subsequent proliferation of different versions. Or I can modify the patches over the network, but this means I can’t debug and I can’t see the immediate effects of my changes – one of the greatest advantages of Max/MSP.
I found that if you install Max/MSP but never use it as a user with administrator rights, every time you create a new user on the same machine, you’ll get another 30 days of demo license. Neat.
So I started hacking away as a new user on the MacMini, with a copy of the videobass code. But with the deadline of the concert arriving I was getting more and more terrified of not remembering which version was the newest, which one still works, which one I can roll back if the additional ideas I had don’t work out at all. And swapping between users on the same machine, under terrible pressure, I found myself modifying .js files one the one side where I just wantetd to have a look how the original solution was, and modifying the corresponding .maxpat files on the other side where I had my precious demo license. A nightmare.
It all worked out well and we had a great concert, but that’s when I swore that I won’t do any more work before this code gets under version control. I don’t care how and where, but it must be now!
So now our VideoBass lives at Google’s, just because it was the fastest and most painless option (as usual ?). And it’s on Subversion. I really hope I will get used to it.