What SourceForge got right

A few months before SourceForge launched their Subversion support, I decided that I was spending far too many cycles managing external dependencies for ccPublisher. We use significant chunks of code from the Zope 3 project, among others, and managing those dependencies (and keeping them in sync) is a pain in the ass with CVS (yes, I know about vendor branches; still a pain). So we moved ccPublisher to Berlios.de in order to gain Subversion support. Subversion has a construct called svn:externals which allow you to stitch together pieces of a repository to form a composite tree. Not just pieces of your own repository, though: pieces of any repository.

Now svn:externals are not perfect. They only operate at the directory level, and making changes that cross the boundary between repositories (or even modules in the same repository) can yield unexpected results. Take, for example, Berlios.de’s Subversion setup for ccPublisher. You’ll notice that the repository URL differs based on whether you want to do a writable checkout (i.e. you have a developer account on the project), or whether you want a read-only check (i.e. anonymous). When constructing svn:externals, you don’t have the option of changing the URL; you simply assign a directory name to an external Subversion URL. So you need to make sure your external URL works for either anonymous or developer checkouts. And this is where the problem comes in.

Consider, the cctagutils library. cctagutils is used by ccPublisher for embedding license information in files, but it conceivably (hopefully) could be useful to other projects, so we keep it in a separate module and use an svn:external to tie it in. So the svn:externals property for the ccPublisher trunk has the following definition (among others):

cctagutils svn://svn.berlios.de/cctools/cctagutils/trunk

The svn://… URL is an anonymous checkout. This means that when I work with ccPublisher and find a bug in cctagutils, I need to correct it in a writable (independent) checkout, commit and then update ccPublisher to get the changes. Now two things: first, this isn’t the fault of Berlios; they have a great service, and many other projects have the same problem (Zope, for example). Second, it’s not so much a problem as a “half-baked” issue: externals are cool and powerful and better than what we had before, but they’re missing that final 10% of functionality that would really make them shine.

So when Source Forge rolled out their Subversion support earlier this year, it was interesting to see that they weren’t using svn or svn+ssh at all, but rather https as the access protocol. Why does this matter? Because when using https, anonymous and writable checkouts are the same.  When I check out a module from the cctools Subversion repository at SourceForge, I’m not prompted for a username and password. It’s only when I try to make a repository change (commit, move, add, etc) that I’m asked for my credentials. Subversion will cache them for me, and if the cached credentials don’t work, it will prompt me for new ones. This means that suddenly, svn:externals work exactly right. OK, so if I cross into another repository I still have to deal with the anonymous-module-within-writable-checkout issue, but overall this is a great improvement.

There may be reasons not to use https as an access protocol that I’m not aware of. I’ve never administered a large scale (or even medium-scale) repository. What I do know is this: SourceForge has been so lackluster for so long that getting this simple thing right has left me impressed and hopeful about the future of the service. Now if they’d only fix that damn mailing list interface.

date:2006-05-25 07:58:06

ccPublisher 2 released… and released… and released, again.

So ccPublisher 2 is finally out. You can find downloads at the release page. Of course, as soon as I created and uploaded the first cut of the packages (2.0.0) yesterday afternoon, a crash report came in from one of the beta users (ccPublisher has a phone-home function which allows it to upload crash information to our Roundup Tracker). It was simple enough to fix, so I took care of it and cut 2.0.1.

Of course, problems always show up during demos or when your boss tries something. So Mike downloaded the 2.0.1 tarball, fired it up and managed to crash it within minutes. It’s all about the test data — I had been uploading photos, Mike tried an MP3. So back at it this morning. Finally, 2.0.2 is out. It fixes two relatively large bugs that Mike found, as well as a handful of annoyances I’d missed. I’m planning to write more about what we got right, what went wrong, and what we’ll be doing for an encore. Look for more when I’m back in Indiana on Monday.

date:2006-05-20 18:07:21

MozCC Resources Moved

MozCC will be getting some much-needed attention this summer (wink, wink, nudge, nudge), so I took the opportunity to move the web content from my web server over to Creative Commons’ server. You can find the new MozCC page here, and downloads are over at updates.mozilla.org.

date:2006-05-16 12:27:29
category:aside, mozCC

Goodbye, Craig

It seems like I just did this for Tina, but I got the call today, about Craig. I’m starting a week in San Francisco, working from Creative Commons’ offices here for the week. I was in the shuttle on the way from the airport to my hotel, when I checked voicemail.

Hey Nate, it’s Curtis, and I don’t have good news. Craig died in New York City last night while visiting his brother. Give me a call back, or I’ll call you when I hear about arrangements.

Craig was more than a friend, he was my brother. We were both members of the Alpha Beta chapter of Delta Lambda Phi at Purdue University. Someone once described him as “the most socially retarded person alive”, and that’s not far from the truth. But we loved him for it, and he was always willing to laugh at himself. I think there are lots of cliches about being able to laugh at yourself; I’ll only say that in the gay community, some guys have a tendancy to take themselves more than a bit too seriously. Craig was never one of those guys, and it made his friendship all the more enjoyable.

Craig, Curtis, Michelle and I would watch MST3K together, and then repeat lines to one another for weeks in that way people who aren’t in on the joke find particularly annoying. Craig was always ready with a “you can’t cash a check at this window, sir!” or “math is hard!” and no matter how many times it was repeated, we always laughed. Craig was 28, and will be massively missed by his friends and brothers.

date:2006-05-14 18:48:17
category:my life

Educated. Officially.

So it’s official: I am educated. Well, as educated as possessing a B.S. implies, which I suppose could be up for debate. This week has been my first working “full time” (as opposed my 3/4 time status when I was in school), and I’ve spent it working on getting back into the swing of work. Well, I was working hard while in school, but it was in fits and spurts, and my attention was always divided. Even now it’s a little weird to not have school hanging over my head. I keep looking at my schedule thinking “OK, so I have two months until August, so what do I want to accomplish while I can pay close attention to it.” I’m sure I’ll get used to it.

I used this increase in work (and new focus on it) to justify a new laptop purchase. After some looking around I ended up going with the Dell Inspiron E1505. I’ve always had a somewhat irrational prejudice against Inspirons, but it simply came down to the fact that no one could touch the price and feature set that the Inspiron had. After finding a couple of “unadvertised” coupon codes, I would up saving about $800 dollars. One the downside it is larger than my last laptop, which was a nice balance of size and functionality. But I’m already spoiled by the 15.4” [STRIKEOUT:WSXGA+] 1680×1050 display. I had to use my old laptop to retrieve some information last night, and my first thought was “god, that text is huge! what a crappy display!” (it’s the basic 14” 1280×768 WXGA size).

So I want to write some wrap-up about this past semester. My level of blogging has been pretty abysmal, so I’d like to give people an idea of what I’ve been working on the past 5 months. And I also have some ideas I’d like to get down, so hopefully I’ll get that done soon, too. I’m flying out to San Francisco on Sunday morning (I have got to stop taking 9 AM flights out of an airport two and a half hours away) so my goal is to get some writing (both code and text) done on the plane. We’ll see if that really happens.

date:2006-05-12 08:20:26
category:my life

Finally Final Finals

It’s a little surreal, and more than a little overwhelming, but this is finals week at school. Not just finals week, but the final finals week of my undergraduate career. In 4 days my last semester will be complete, and I can return to a having real life. Things I hope to do once classes are off my plate:

  • Finish reading the pile of books on my nightstand
  • Write more on my blog about software engineering
  • Write more software (since my employer has been incredibly, incredibly understanding)
  • Take more pictures
  • Ride my bike more often
  • And, uh, think about graduate school (because apparently I’m quite insane)

In case anyone is wondering, no, taking 16 credit hours in the form of 5 classes while working 30 hours a week is not advisable.

date:2006-05-01 15:29:39
category:my life