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").
From the syllabus (http://bit.ly/rit-foss-projects-syllabus-2018):
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?)
- What does the code activity look like?
- What’s the infrastructure?
- What is the license? (Make sure it’s actually a FOSS project.)
- What and when was the last commit to a core repo?
- What/when was the latest release and how is it working?