Contributing to Free Software


I’ve been interested in contributing to Free Software for the longest time. The primary reason is because I like it. But I’m also fascinated when I observe that most developers do not contribute to the Free Software they use, although they could. A problem that was articulated better than I ever could by talented people, for instance in the context of the contributopia project.

There is no denying it is completely off-topic and I would not be offended if people ask me to redirect this discussion elsewhere. The reason why I chose to post here is because there may be a connection between the dynamic of Free Software contribution (or lack thereof) and our ability to effectively self-host services in a sustainable way. When the energy of most developers is not directed towards Free Software, progress is slower than it could be. And maybe training could be a way to change that?

Another reason is that, in the context of the Enough collective, I’m working on openedX based MOOCs to help users who have no tech background using self-hosted services. I suspect most self-hosted organizations could have something similar instead of traditional documentation or video tutorials. And it would make sense for a MOOC on Free Software contribution to be self-hosted. It could even be a target for students contributions: they could discover how to change their user experience by modifying the software they use to learn how to contribute.

I discussed this informally with a friend today and if there is no objection, I propose we continue the dialog here, in public. Chances are there won’t be anything ground breaking, don’t hold your breath :wink:


1 Like

@loic One of the reasons why there aren’t more people contributing is the difficulty to get started. It can look quite daunting and difficult to contribute a change upstream. Many coders will occasionally find bugs, for example in library dependencies - often the outcome will be to just fork the repo, fix the issue there, and forget about it. Contributing upstream is often perceived as something only better developers do (as the expected quality is much higher than in most proprietary projects most developers work on), or something only those who had the energy and time to figure out how can do effectively. And it’s not completely wrong - contributing effectively does take a lot of effort and skill.

Factors that contribute to perpetuate this situation:

  • There are some resources on how to contribute, but they all underestimate the amount of hand-holding necessary at first, and none of the ones I know of offer a clear and certain path to becoming an effective contributor. As developers, we are used to reading tutorials to interact with machines, but contributing to FOSS is fundamentally a social experience.

    It’s missing a well-built online course or bootcamp, similar to the coding bootcamps that have popped up over the last few years for people who want to learn to code, but didn’t have the privilege of tinkering with computers as a kid (and don’t want to spend 5 years going through traditional university). A bit like what you had started with Upstream University, but online and accessible by all?

  • It’s also missing a strong incentive, to do the initial learning effort. Most of us in the FOSS community have come in contact with contributions and the community iteratively, over many years. It’s often a bit haphazard - someone we know might have put us on the way, then maybe one rainy Sunday afternoon we tried to send a patch/PR, and through small steps over many years, we learned. And then the reward becomes obvious – but at the beginning, it can be hard to see why spend time on contributing. Contributing is rewarding in a way that’s hard to communicate before we have experienced it - especially given how scary and unusual that type of learning can be, compared to something more purely technical.

    We need to figure out new ways to present why a random developer should invest their time into learning how to contribute, vs learning another framework or language. A few ideas:

    • An additional credential, something to put in the resume to differentiate contributors from other candidates?
    • As a sort of master program for the bored developer working only on proprietary software in their job?
    • To get a job in a FOSS company?
    • “Learn from the best”, by getting some FOSS stars/personalities to teach in a course? The millions of people who keep signing up for MOOC courses from prestigious universities/professors shows that brand names can have a strong appeal on their own, especially if the content is of quality, and when successful completion allows to get certified by the brand name.

I’d love to contribute to an initiative that would try to push those points. As you have noted, many of us already have to build our own small courses in the context of our respective projects - you have mentioned a MOOC you’re building for Enough, on our side for Open edX we are planning to build a contributors course to help newcomers do their first steps, Framasoft has started building several courses to teach contributing (their MOOC Chatons, and an upcoming contribution course mentioned in their 2020 recap blog post – though both are only in French currently), and most project have some form of similar introduction. Maybe we could pull our resources together, and instead of building many small redundant courses, build a larger project/effort at the international community level?

1 Like

For the record the upcoming contribution course workgroup led by Telecom Paris is mentionned in Framasoft annual report:

Nous avons aussi accepté avec joie de faire partie du groupe de travail du futur MOOC sur la contribution au logiciel libre qui sera produit par Telecom Paris.

However I don’t know anything about it and have not clue where to find more (but I asked). As a first step to bring these efforts together (i.e. apply the contribution logic to each other :wink: ) it would be useful to collect links to where the public discussions happen. That would be a preliminary step enabling everyone to participate and find ways to cooperate.

What do you think?

@loic Thanks for posting on Framasoft’s thread - it would definitely be useful to get more details on their plans. Definitely +1 to collecting the links to the different discussions, that’s a good first step, to at least understand each other better.

On the Open edX side, the discussion currently happens in a Google Doc, so I’m trying to move it to a forum discussion on the project’s discourse. I’ll post a link to it when/if it gets there.

1 Like
1 Like

The discussion thread within the Open edX community is up! :slight_smile: And I’ve posted about the potential upstreaming contribution course there:

Comments welcome - either here or there :slight_smile:



Xavier encouraged me to answer here, so here I go:

I’m leading an initiative to create a MOOC titled “Contributing to Free/Libre Open Source Software”, in partnership with Framasoft. We are currently at the scenarisation phase and I just put what we have online at

It’s a bit difficult to start, but I think we’ll make it :slight_smile:


Hey @loic

This has been amazing, I would like to point out to you that we use to run #dgplug, which was an online
bootcamp kind of a program. Where we helped contributors to start contributing to open source, we help
them to learn about communication, programming and other skills that is required for you to be an upstream contributors.

You can check out the logs for the IRC sessiosn and also

The curriculumn was easy and we had a lot of good lecturers over IRC.

I am interested to help build up a curriculumn where we can foster this culture.


@_Mc \o/ Thanks for posting this :smiley: The initial step is always tricky yep, so thank you for publishing what you have already worked on.

It looks like a great start! Lots of good ideas in there already. :slight_smile:

I have done a first pass of review. To be able to post comments inline, having a merge request is useful. I couldn’t set it up on the main repo, as it would require an empty initial commit and a branch that doesn’t already include the content, so I’ve done it there:

But if you open a MR for the current content on the main repo, I can copy my comments there. I’m also happy to submit MRs for some of the change I’ve suggested - just let me know.

NB: I was limited to 3 replies on this thread, due to having a new account. I created a second account to post this reply now, but I can remove this latest reply if that’s not OK. I’ve asked on the Introductions thread! how to get the right to participate more here. We could also move the discussion somewhere else if that’s inadequate here – there is for example the thread on the Open edX forum about this same course, which I was linking to above.


@farhaan it’s great to hear :slight_smile:

If I’m not mistaken there are currently two ongoing projects:

  • Open edX that OpenCraft chose to contribute to, in English. I commented a little and pledged to spend two full days recording an Upstream University training session.
  • Telecom Paris lead by _Mc that Framasoft supports and with contributions from OpenCraft (and a typo fix from me :smiley: ).

This is more or less a textbook Free Software contribution situation and a great way to demonstrate our abilities to provide useful material to each other. In this landscape I’m a typical contributor with at most one hour work time this week. There are two project leads here: @_Mc and antoviaque. And my question to you is: how can I be of assistance? Ask me anything that takes roughly one hour and ends up being a commit somewhere in your project and I’ll do it!

@farhaan are you with me on this?

@loic Actually, if we manage to find a common line, I think it could be only one project here, so we can pull our resources together – so far I’ve started working with @_Mc on the course. There have already been 3 work sessions, which have been pretty fruitful:

The recordings are available at

We still have to have a discussion about the business model, both with Telecom and with edX, so we might still have different instances/subprojects. But it seems like we’ll at least be able to share some of the content production.

I’d be curious what you think of the discussions during those conf calls btw, if you ever have time to watch them :slight_smile:

1 Like

They are great and the recordings are an asset that can be shared. Excellent initiative @_Mc!

1 Like