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