Showing posts with label Project Repository. Show all posts
Showing posts with label Project Repository. Show all posts

Wednesday, January 21, 2009

Choosing a FLOSS Project Host

Tune in next week to hear Mrs Piggy say - oh wait a minute, this is next week, kinda.

So, the next step in building the GREATEST APPLICATION EVER (or at least another misc software thingy) is picking a place to host the code. (Those of you not paying attention can find out why we need a that already here.)

What are my choices?
Let's take those in order. (Good thing they are in the right order already, huh?)

Self hosting is out. As I said before, I want to work on the project, not the website, as much as possible. Mediawiki and bugtracker would likely be all I need, but I'd rather someone else do the plumbing on this.

Google Code is easy to say no to as well. Two big knocks here are unreliable downloads (I mirror a Google Code project on a cheap webhosting plan, because the Google Code repository barfs on people regularly...) and typical Google lack of support. I know I'll need hand-holding, and with Google I'm not going to get it.

Sourceforge is the biggest one of the bunch obviously. Fairly full featured from the public exposure side, and it obviously works for many people. From using sourceforge casually (i.e. as a user not a programmer) the experience has been ok, but annoying. I don't like their default web page setup, it seems quite unintuitive to me and that's likely why everyone puts their own web pages up in front of it. Their bug reporting and built in FAQ stuff is clumsy looking too - it often seems to be poorly handled by smaller projects. And again as an enduser, their registration process for many things I've had issues with in the past. I've also heard reliability issues, although not so much lately.

To sum up, lots of little niggly negatives that I might be exaggerating. It works for so many it must be a real alternative. If there wasn't a better alternative I'm sure I could make it work.

Savannah is the GNU project host. My comments here can be summed up pretty easily. GNU projects on average don't seem to be very attractively presented - and Savannah is no exception. I dunno how well it works, but it looks pretty GNUish :-) Knowing the GNU guys, it's likely reliable and has some cool features once you grok it. Savannah seems to have some sort of approval process where they make sure you are the kind of project they want to host. Since both the projects I've been thinking about may have some dependencies that aren't 100% GNU (I'm thinking out loud here, I could be wrong) that might be an issue, and I'm not sure my plans are firmed up enough to waste some body's time reviewing them at this point. Without worrying too much about what they provide, I don't think this is a good fit.

Github is a cool looking newer alternative. Git seems to be one of the current stylish new tools right now, and github jumps right in there with both feet. Free software projects host free, and proprietary pays, which is a logical enough way of approaching things. They've got some stuff you don't see elsewhere, leveraging (I assume) the power of git, like graphing code changes and other geeky good stuff. They've got training video, which shows you have new wavish they are, and a good vibe about the place. When I threw out a twitter query last week about potential project hosts, Github got two thumbs up from the responders. On the other hand, it's all very developer centric, rather than end user centric. As a regular ole 'how do I use this thing user, it's not very friendly. There are related hubs Campfire and Lighthouse that round out their offerings, but they seem to be a little more profit looking than Github itself. I doubt my project would ever hit the point of requiring one of their for pay services, but hey I can dream can't I ? The last thing I noticed, and probably the biggest negative is how Ruby centric the whole thing appears, at least on the surface. Ruby on Rails is the biggest project they have, and I bet it's presence there is why so many other related projects ended up there. I've nothing against Ruby, it's just another language I don't know (yet?) but it shows the emphasis of the place.

Again, like Sourceforge I think I could make this work, but I don't think it's the best choice.

Trac is pretty easy for me to rule out too. First up, it's subversion, which would be yet another CVS to learn. Second up is the web interface. I don't think I've ever used a Trac based site (again as an end user) that's made a lot of sense to me. These sights seem a confused mix of wiki, faq and bug tracker, with a real blurred line between end-user and developer, and no clear indication of what you can change and what you can't. A good admin could likely herd it into line, but I don't want to get into that.

Tux Family actually looked good for a couple of minutes. There are some neat projects there, and the atmosphere seems great too. It's a moderated sign up process like Savannah. The multilingual FAQ was nice touch I thought, and the European heritage seems to shine through in places, in a good way. What took them out of contention were these little tidbits - "Tux Family is not a test platform", We will not accept "student projects that will die in a month or two" due to lack of resources. Fair enough, but that might just describe these efforts pretty well, so let's go our own ways before we even start :-)

Which brings us to Launchpad. Those of you paying attention already knew my choice since they were on the bottom of the list, so there you have it.... Oh, ok I'll explain why too.

Launchpad looks too complicated, frankly, ala Trac. On the other hand, the emphasis seems to be in all the right places. They want to promote cross project communication and support, and my projects are going to lean heavily on other the efforts of already established software. Their philosophy seem to fit into my objectives pretty well. I'm especially intrigued by the mention of translation services. Multilanguage support was high on my list of things I wanted, and I'm hopelessly unilingual, so maybe I can get some real wins there. Just wandering through the tour made me feel like it's got the right approach. I'm already an Ubuntero, and Launchpad has always performed well for me. As I've started to work my way through the Launchpad documentation, I'm finding it helpful, because it talks alot about 'why' you do things rather than 'how'. That's valuable to me, since I've got zero exposure to software project management prior to this. Launchpad itself seems to have a lot of Python bits to it, so a Python project isn't going to be out of place. Sign up was simple and straightforward, with no moderation steps.

It's not perfect - they use bazaar rather than git, and don't provide any wiki services, or even a home page past the generic one, but I think I can deal with that when I get there.

Posts like this help make Launchpad seem to be the best choice
, let's try 'er out!

(Note to self - enough with the brackets already!)

Saturday, January 17, 2009

Choosing a Project Repository

From that mythical reader out there who is actually following all my posts up to now I can hear the question - 'Are you nuts? You claim you are going to write a program in Python, and before you learn any you're worrying about where to host the project? Delusions of grandeur or what!'

Before you completely go over to my wife's side (who is quite sure I am nuts) let me explain.

The last time I tried anything like this at all, it had two problems. Since it was a sideline hobby, it was done in fits and starts, when I had the time. As a result I was always trying to figure out where I left off, what to do next, what was already done, etc etc etc. It wasted a lot of time I didn't have just trying to keep it all straight. Once it was finally completed (well, once I quit adding features anyway) it ran fine for years, but when I wanted out from under maintaining it, there was no one around who could pick up the pieces from my scattered pile of stuff and keep it running. The new maintainer ended up re-writing it all his way and throwing out all my work. I don't begrudge that - I wasn't doing it anymore and he can't support something he doesn't grok, but it hurt none the less to have all that effort pitched.

Since those who can't understand the past are condemned to repeat it, what can I learn from this?

One - you don't write software, you build solutions. Yeah, I know, sounds like an Apple ad or something, but here's the theory. Start with a clear vision, create a solid list of what the thing is supposed to do, then write the code to do it. Document, then execute, not the other way around. I can think of lots of projects I wish did things this way.... I used to have a friend in high school that was fond of saying 'Plan the work, then work the plan' Maybe I've finally started to listen :-)

Two - This project has zero resources (see rule one) and like the last one is going to be done piecemeal at whatever computer I happen to be sitting in front of when I get 10 minutes to think about it. An internet based, distributed setup is the easiest way to keep this on track and organized. I don't have time to worry about infrastructure any more than required, I want to work on the product. There's no privacy concerns here - quite the opposite, so keeping it local doesn't make any sense.

All right, now that I've blathered on this much, it's getting to be too long a post to discuss who I actually picked. I'll do that as a separate entry.