Stephen Jacobs (SJ) and I are co-teaching “Project in FOSS Development” at RIT this semester, which basically means “hey students, want to get course credit for contributing to a FOSS project?” The class is centered around 5 project sprints of two weeks each. The first 3 weeks of class are preparing for the sprint periods; the week before spring break is a pause to reflect on how sprints are going. Otherwise, class efforts will be centered around executing project work… (aka “getting stuff done”).

This course is a studio-centric experience designed to immerse students in the praxis of FOSS (Free and Open Source Software) communities. Notice that we focus on praxis, which is a conscious enactment of practice deeply informed by theory. In other words, it’s important to be practitioners who can think about their shared practice.

Notice also that we talk about the praxis of FOSS communities, which includes but is not limited to software development — ways of communicating, collaborating, designing, testing, marketing, budgeting, meeting, etc. are just as much a part of FOSS (and software engineering) praxis as writing code. You will be creating FOSS software, and you will be engaging with the rhythms, relationships, and routines of an established FOSS community with a complex set of sociotechnical dynamics that exist independently of yours. It is our hope that this course will help you navigate the kinds of delightfully messy, large-scale, long-term projects that you will encounter out in the real world.

I’ll be liveblogging the class, as one does. Right now, students are working on their project proposals, which is a big messy task that involves spelunking into existing FOSS communities, figuring out what’s up, and thinking about what’s possible to accomplish during the course of the semester. During our last class, we collaboratively brainstormed a list of starter questions we want to find out while doing that initial community spelunking. I was impressed by how much the students were already thinking about sociotechnical dynamics (instead of just starting to myopically look at the code in isolation), which makes me super happy.

Here’s what we came up with, in thematic clusters. You can think of these as guiding questions for a spelunking quickstart such as http://blog.melchua.com/2010/10/08/possesa-fri-5-minutes-of-improvisation/ (basically, if you only had a few minutes to get a sense of whether you wanted to contribute to a FOSS project, what questions would be the highest-priority ones to ask)?

What are we gathering around?

What are the goals and the roadmap to get there?

What’s the purpose of the project? Do they have use cases?

Why should I want to contribute?

How do I find people and information and ask for help?

How do they communicate? Do they have forums, chatrooms, mailing lists, etc. and how can I start lurking?

Who’s leading it and who’s working on it?

What is the governance/leadership structure? How do decisions get made, and how fast?

Do they have local meetups and/or online ones I could attend?

How complete are the docs? Where do I go and what do I Google if the thing I want isn’t in the docs?

How thoughtful have people been about the contributor experience (and do I want to have that contributor experience?)

Do they have a code of conduct? How good is it?

Do they have contributor guidelines?

How well do they Onboard?

How can I help and what skills do I need? (Can these questions be answered easily?)

Ooh! The students may already mostly have come in with projects in mind, but feel free to suggest ideas and I’ll make sure they see it – proposals are due on Jan 30th, so a couple of sentences (and then interested students can contact you / relevant parties) is probably the effort level most worthwhile here.

librsvg is a small library to render Scalable Vector Graphics (SVG files) and it’s used by a lot of other websites, applications, and projects, including Wikipedia. Right now the maintainer of librsvg is rewriting a bunch of it from C into a newer language, Rust, which has an emphasis on being easier to learn for systems programming work, and he’s actively looking for more new contributors.

And I’m currently working on Warehouse, the software behind the Python Package Index, a website that serves LOTS of developers and administrators each day as they run “pip install”. It’s in the midst of a revamp. It’s a Django application and needs coding help (CSS, HTML, JavaScript, Python), testing help, writing help, and publicity help; it’s a bit tougher than Zulip in terms of onboarding for a contributor who is very new to FLOSS but it’s also the only one out of these that I can personally suggest specific first tasks for. :)