Working backwards through POSSE South Africa – these posts are going to hit all out of order.
Today was our final day: as part of this, Tayo asked me during a coffee break how I (as an experienced contributor) would get started with an unfamiliar project. We called the now-caffeinated professors together, threw my laptop on the projector, had Grant set a countdown timer for 5 minutes, and called out for a random project. “Sakai!” called Boniface. “That’s… an open source project somehow related to education, and… that’s… all I know about it!” I responded, and we all agreed these waters were sufficiently unfamiliar to me to be a fair test.
Grant hit the timer, and off I went. Note that this is a recreation of my steps, retraced a few hours later, with a summary of the “thinking out loud” annotation I gave verbally in the classroom as I went through it, with the addition of two things: (1) the source code, which I didn’t find the first time, and (2) the licensing, which Jan suggested afterwards as something I had forgotten to check (and yes, he’s right, it is important).
Start the clock!
Minute 1: what’s the project? where are the people?
- google: sakai – okay, that first result sounds like what I’m looking for, it mentions “education” and “distributed as free and open source software.” That’s probably the homepage, which is what I’m looking for eventually. Open that in a new tab, look at it later, because first I’m going to…
- google: sakai irc – aha, “freenode.net /join #sakai” – I throw open my IRC client (irssi, running in screen) and join the chat channel to start lurking and letting the conversation (if there’s any conversation) go by, noting at a glance that there are very few people (around 12) in the channel and that I’m not likely to overhear much. All right, minimizing that window, looking at it later, and moving on to…
- google: sakai mailing list – I find the project’s mailing lists (first hit), note there’s a list called sakai-dev that’s “RECOMMENDED for designers, programmers, developers, and quality assurance,” go “ah! I’m a developer!” and click through to the list page and the archives, looking at this month’s postings. BINGO. I’ve found the people. The conversation is thriving now, it’s active now, it looks like there’s a lot of high-quality discussion now, I can pick out a few topics of interest (“ooo, maven!” “there’s a QA meeting tomorrow?”). Note that I don’t actually read list messages now, though I could – what I’ve been looking for is what means of communication this project uses so I know where to ask for help later on.
This project is alive. That’s good. I’ve found the places people hang out, I know how to get in touch the moment I have a question I can’t answer. Let’s move on and find about the project itself.
Minute 2: what can I learn from the homepage?
- I head back to sakaiproject.org, still trying to figure out what the heck Sakai is. Ah, it’s “an enterprise teaching,
learning and academic collaboration platform,” according to the front page. Still a little hazy, but the fancy graphic design and professional-sounding wording on the front page indicates to me that this project has polish, probably momentum – there’s mention of a conference, a merger, awards, etc. on the front page, which indicates to me that this project is probably professional-grade – used in live deployments by customers, probably with companies that make a living in the Sakai ecosystem by supporting it. (This is good news if I think I’d like to work on open source for a living down the line; being a good contributor to this project could make me quite employable.)
- I’m still not sure what Sakai is, though. I head to Project > Project Overview, and am told that you can manage courses with it, that many institutions do deploy it, and hey, look at the features. Okay, it’s online collaboration for schools. Got it. Or at least I understand it at a basic enough level to move forward. Now where do I look for the contributor community?
- I look at the support drop-down menu and notice that community and commercial support is available – cool, but I’m still looking for the contributor community. Aha! Community > community overview gives me… no, it gives me maps and a shiny description of how awesome the community is. Not what I’m looking for yet, though someone who’s never contributed to FOSS might find this page reassuring.
- Community > contributing to Sakai – there, now we’re talking. Hey look, I found a wiki, which is usually a contributor community homepage hub. Awesome. I want to make technical contributions, so I click on Building Sakai. BINGO! I’ve found project teams, developer docs, work in progress… and yep, it advises me to look at the email list as “the place to be,” but I’ve already figured that one out.
All right. It’s pretty mature, it has a focus, it has a development community with useful getting-started resources. I can do this. Next: where’s the code?
Minute 3: where’s the code? what’s it written in? what does development activity look like?
- I’m looking for the source code repository of Sakai. Can’t immediately find it from the “building Sakai” page, so I google: sakai version control. Aha, the 4th hit has it: get the source code. Looks like they use SVN for version control – I don’t really care, so long as they use some form of version control, though I’m going to have to look up the specific syntax for SVN later – and I could start a checkout now if I wanted to, let it run in the background while I do other things.
- I want to dive into the code, see what it looks like. Let me look at the trunk, which is the main branch; other branches might be experimental, or in other ways “not the central location for what developers would consider the most recent version of the code in progress.” Whoa. It looks huge. This is a massive codebase. What’s it written in? Where can I get more stats quickly, because I don’t have the time (or honestly, the skill) to understand things quickly just by looking at a zillion files?
- I head to ohloh and search for ‘sakai,’ which quickly points me to sakai’s project page on ohloh.
- Scroll down, look at the lines of code analysis – seems to be thriving, changing over time, good stuff, all right.
This codebase seems like it’s got reasonably healthy activity. The actual structure of the code, I’ll have to wait until I can read more developer docs and more actual code, but with this much activity around it, the project’s probably either in decent shape or rapidly moving towards it. It’s not a guarantee, but it’s a probability – projects without clean code architecture tend to not be able to build that active of a dev base (not to mention commercial support services!) so I’m feeling pretty good about this.
Minute 4: how is this licensed?
- It does no good to get invested in a code project unless I can legally use it – and my code – for things I want to do later on, so back we go to the project’s ohloh code analysis page to look at the license, and… what the heck is the “educational community license” most of its files are licensed under? I’m not a lawyer, so I want to do more than read the legal text.
- First question. Is it an open source license? The OSI says yes. That’s good.
- Is it a Free Software license? The FSF says no. Specifically, “the scope of the patent license has changed so that when an organization’s employee works on a project, the organization does not have to license all of its patents to recipients. This patent license and the indemnification clause in section 9 make this license incompatible with GPLv2.” Okay.
- I hit up Wikipedia’s comparison of free software licenses and decide that – for me, right now – the Educational Community License is good enough. It’s OSI-approved so it’s got the basic open source “license features” I personally care about, it’s also okayed by Fedora which is my favorite distribution, so I’d be able to package (or if it’s already packaged, easily deploy) Sakai there. Cool.
Note that this may not be okay for someone else – if you care about the code you work on having an FSF-approved license, you might decide to find another project. That’s totally all right – it’s about personal preference, it’s about making sure you can do what you want to do with your code, that other people have the freedoms that you want them to have regarding your code.
Minute 5: how do I set an instance up so I can start playing around with what this software does?
Blackboard integration screenshot from a collection by Jim Pease, uploaded to the Sakai wiki
- Back to the wiki – this time, I want to look at deploying Sakai, because I want a local instance up and running. Look at these instructions, see if they’re sane… great, there’s stuff here like release documentation, sysadmin guides – it looks like there are clear directions I can follow, step-by-step, to get my own test instance going. I’m not actually doing the installation now, I’m just making sure I can find the resources to do it later.
At this point I look back at the IRC channel to see if there’s been activity in the last few minutes (nope) and survey my open browser tabs; I have lots of information about the project at my fingertips, I know how to begin navigating it, and at this point I’d probably head for the bugtracker and try to find a first ticket to dive in on, knowing where the developer docs are (they’re on the wiki) and where to ask for help if I get stuck (the mailing list).
What did I miss? (If you’re from Sakai – how off are my impressions, and what resources do you wish I’d found?) What would your own 5-minute dive look like – on this project or on any other? Comments welcome – the objective of this exercise was to show a “think out loud” from an experienced FOSS contributor, with the caveat that every contributor thinks differently, and that every contributor comes up with their own way of doing things as they go along.