Onboarding courses - Learning to upstream (MOOC)

@omar Huge kudos for starting this initiative, along with @nimisha and Michelle! Many of us have been working independently on onboarding material and courses for our own purposes, but that’s a lot of duplication of work. We will all gain by working together on onboarding materials that we share - the result will be higher quality, and easier for everyone to maintain.

There is one in particular that we (OpenCraft) were planning to develop, to facilitate the training of our new recruits, and capitalize on our experience with contributing upstream - so that’s one that we could also contribute as part of this effort:

It’s worth discussing it, as we have a few goals in mind with this, some of them go beyond the scope of the current initiative - but that seem to align well:

Contribution to the larger free & open source community

We would like it to be both a contribution to the Open edX community and to the larger free & open source community - i.e. both a way for people interested in learning how to contribute to Open edX to do so, but also for people interested in learning how to contribute to free & open source in general. It’s a great contribution to make, as there is currently no good course on how to become an usptream contributor!

One consequence of this approach though is that we wouldn’t just focus on Open edX, and wouldn’t have other Open edX courses as mandatory prerequisites, only optional - it could be taken as a standalone course. Though of course people already familiar with the other courses, in particular with the Open edX intro course, could skip some sections that explain the relevant parts of Open edX.

It could be a great opportunity for Open edX to get more contributors, as Open edX could feature prominently as a project to which learners would be encouraged to try contributing to, as part of the learning experience.

Working with other communities

If possible, we would like to work on it with other members of the free & open source community - we have identified several initiatives that the course could build upon and/or with:

Sustainability & money

To make the initiative sustainable & ensure it has resources and time allocated to keep improving it on the long term, we are also thinking about ways to allow people & organizations working on it to optionally earn money from it. A couple of ideas so far:

  • The course content would be under a free & open source license, so its content would be free, but we would consider offering a version that would include mentoring (as a course mode, or a separately hosted one). I.e., a similar business model to the “learn to code” bootcamps. It would specifically target existing developers who want to try to improve their professional skills and/or get a better job, in a master-like program.
  • Another option, also inspired from bootcamp programs, is to also use the program as a job search & recruitment tool, matching the desire of learners to work for a free & open source company after completing the program on one side, and on the other side the need of such companies to find and evaluate good candidates, who know how to contribute well upstream.


One thing that we want to carefully consider is doing proper marketing for the course - especially, find a way to attract the attention of developers outside of the free & open source community:

  • One idea is to involve high profile figures / open source stars - people who would be known to all developers. I.e. a bit the masterclass.com approach, if you will. Ideas of names welcome :slight_smile:
  • The other would be to get exposure to the audience on edx.org – which is likely full of people who could be interested in working with free & open source. We would gain both more contributors for the community in general, and also provide a way for learners on edx.org to give back to the project that helps them learn!


For the license, to ensure that its source remain published by anyone republishing & modifying the course, we are considering the AGPL license - does that work? This way we would always all have access to the course archive, not just the rendered Open edX course.

Next steps

The very next step is to get the opinion of the various communities & community members that have an interest in seeing such a course come to life. And if there is interest, see if & how we would be able to collaborate on it.

On the OpenCraft side, we are still figuring out the assignation, i.e. who of our core committers would be in charge of our contributions, but we are ready to put some significant effort into this, especially if there is interest from other community members, and core committers from OpenCraft will likely focus our work on onboarding courses on this specific one.

(To also contribute what we have already produced/written that is related to the other courses, @Fox_Piacenti has also done a pass to publish all our relevant documentation that was previously still kept internal, to make it available as source material for other core committers working on other courses.)

Then once we know who and how we work on this, we would start working together on a more specific concept, learning objectives & syllabus.

What do you think?


Preamble: very nice (and very rare :wink: ) initiative, kudos to everyone already involved.

The OpenStack Upstream Institute which I created about six years ago is very similar, except it is in the context of OpenStack instead of Open edX.


I’d like to highlight two essential aspects of this course:

  • It is by not specific to OpenStack, it uses OpenStack as an example. Contributing to a Free Software project effectively requires hard skills (covered by the technical courses) and soft skills (covered by this course) that could be summarized by "learning how to work together around Free Software"
  • It is effective when the learning experience is validated by a commit being merged in an upstream project, with peer guidance. The guidance is most effective when a skilled mentor is available but it can also works with a peer (or a rubber duck).

The technical specifics of how a contribution is made in Open edX or OpenStack or another context are very different and need to be factored in otherwise the contributed commit can’t be merged. But it would be very beneficial to isolate the parts of this course that are not project specific so they can be shared and developed in a technology agnostic way. For instance, explaining why it is beneficial to get in touch with the software project immediately instead of waiting even for a few days is universal and takes some convincing. But the specific channels to get in touch are obviously project specific.

This is a challenge and I’m not aware of any initiative that already tried what you propose. It’s definitely worth a shot and I believe it has a good chance of success. That being said, I tried a few things that had mitigated success so I’m not the best judge :roll_eyes:

  • Embed the course in a software project that has lots of company employees who never worked in a Free Software context (works well, that’s OpenStack)
  • Insert the course in a CS curriculum at the university (worked well during a few years but faded away)
  • On premise training for large companies (somewhat worked difficult to sell)
  • Paid for course, in person, on the same footing as “learning C++” (did not work at all, no demand)
  • Gratis week-end course, in person (did not work at all, noone subscribed)
1 Like

Glad to read you here @dachary :slight_smile:

Btw, to keep everyone here in the loop: good news! Marc,the professor from Telecom Paris which Framasoft mentioned has replied on the Libreho.st thread about the upstreaming MOOC course. He has published the content he has already started authoring for his course (which should actually end up on edx.org btw, at https://www.edx.org/school/imtx - FYI @nimisha ) - it is under a CC-BY-SA license and open to contributions. It looks like a good opportunity to try to work together on this?

+1 - that’s why I think the free software community as a whole would benefit from having such a course, shared and contributed to by multiple projects.

Do you think the Open Stack community could potentially be interested in contributing to a shared initiative, btw? Learners could have several projects highlighted, like Open Stack or Open edX, who partner with the course and are welcoming people who want to learn how to contribute?

Also, how do you think we could try to reuse some of the content you have already produced as part of Upstream University, to build a MOOC?

Big +1 on that one too - until we have a commit merged in a third party project somewhere, we never really know what contributing actually means. Anyone can publish some code on a gitlab repo – but getting even a minor change upstream somewhere is rarer, and more scary. Having it done once clears a lot of the fog, and allows to do it again much more easily. This is also a huge part of the value of “byte-sized” bugs, to onboard contributors to a project, and know how contributing works, before being able to make more significant contributions.

That actually also matches Open edX a lot ;p Maybe there is a trend we could refactor around, here?

What made it fade away, do you think? The fact that Marc is looking to build such a course, shows there is still some interest there too, no?

@dachary and @antoviaque thank you for your notes. I realized that I’ve only read them but didn’t reply.

I will reply briefly on the main points and continue listening to the interesting replies on this thread.

License … we are considering the AGPL license …

AGPL is a good license for code. For courses I think Creative Commons makes more sense so I’m starting with that: Creative Commons Attribution-ShareAlike version 4.0 license by OmarIthawi · Pull Request #1 · openedx/onboarding-course-introduction · GitHub .

Contribution to the larger free & open source community and Working with other communities

I think there’s a couple of great ideas here.

Sustainability, money and marketing

As I focus on engineering, I tend to not focus much on those topics.

Do you think it is a blocker for having usable initial release for the courses?

Having the project gone into multiple iterations in the past without a initial release makes me wonder if we can make it this time or it would be paused for the lack of funding in one form or another.

Thank you again for the valuable insights. It sounds like we have a consensus around the idea of validating the learning by getting a commit merged, which is great.


That’s debatable - the CC-BY-SA is more the equivalent of the GPL, while the AGPL would ensure that the source of a course (the course export archive or whatever is used to generate it) is kept available as long as it’s made available in a course, while the CC-BY-SA cares more about the produced output.

But since the MOOC from Telecom is under CC-BY-SA, I’m fine with keeping this. We might however regret it if people fork the course and don’t provide the modified course export.

Marc has already started working on course content at mooc-floss / mooc-floss · GitLab - and as long as the work is done under a FOSS license the risks are somewhat limited, we can start moving forward. However, I do think we need to discuss this early, or we risk blocking the project on a misunderstanding later on, with worse results than if we handled this early.

On our side, it revolves around one main element – is it ok if we fund our own involvement in the project, by providing - besides the main free version of the course - one that includes mentoring and which is paid? The content would remain the same, but we would add the value of the time of OpenCraft developers who would be mentoring users. And can we do this as a separate course mode on the course we host on edx.org?

@nimisha Would that also be acceptable, on the edX side?

I’ve been out of touch with the OpenStack community for years now and I can’t tell.

The problem (not just with Upstream University) is that most of what is valuable is not recorded. You have the slides and that’s a good start. I don’t think we ever recorded a session. I suppose the right approach would be to repeat a session for the sake of recording it, with someone who already gave the training a few times. And record everything. Although I could try to fake it in front of a camera, I’m pretty sure that won’t work. One or two participants would be enough though.

It’s just an idea for capturing the unwritten content of the course.

I think the mentoring part is problematic because it does not fit in the usual curriculum. The timing is dictated by the upstream project and it could be as quick as a few days. Or as long as months. But there is no sense is skipping it or faking it. In theory the process is easy and everybody can do it. In practice very few people actually do it. And although one could imagine reasons why there is such a gap, it does not really help. What actually helps is contributing once and repeat and after a short while it becomes natural an never leaves you.

For the record they published a call for participation yesterday. Great initiative :slight_smile:

1 Like

OK - would you know to whom we could reach out to ask?

That’s a great idea! :smiley: Definitely +1 for that. Do you think this could be done remotely, over a videoconference call? And would you be volunteering to give it? :stuck_out_tongue:

+1 on not faking it, and the timing issue - there are actually some discussions with Marc that are related to those concerns:

To help with the timing, imho working with partner projects could help? That could allow to guarantee a response time for the reviews. It’s “cheating” a bit compared to a pure out-of-the-blue contribution, but it’s better than faking it completely, and it’s likely useful to encourage new contributors in the early stages?

Yup! There is a meeting scheduled today about this actually.

I’m afraid everyone I knew has moved in different directions. The company I worked for is gone (sold). The company I worked for after that is also gone (absorbed in a gigantic company)…

Since the idea is to capture what Upstream University built, I think it could only work over a course of two consecutive days IRL, with at least one participant. I volunteer to deliver the course (there are not many candidates, I have to :wink: ) but I won’t have time to recruit someone and find a location and the time slot suitable to them and me.

I don’t think so. I tried and that does not work IMHO. I mean it could work but in general I don’t think it does. The timing is problematic regardless: it can’t fit within a day (that’s absolutely cheating :wink: ). And since it does not, it makes little difference that it spans over days or weeks. And if it does make a difference… that’s something that needs to be addressed. As you very well know, managing the delta between your availability and the availability of the upstream is at the very center of a successful relationship between a contributor and the upstream.

To first give a quick update about the recent developments on the upstreaming course, we have started doing a series of meetings with the other people involved in the project, at the pace of 2 meetings of 1h30 every week, to brainstorm on syllabus and the content of the different modules, one module/week during each meeting. That should allow covering the whole course syllabus by the end of the month, before starting to author the content itself.

The list of meetings, including descriptions, times & recordings can be found there:

We have also started populating the list of tickets with actions items & topics that need to be resolved. My MR from my initial review pass has also been merged.

OK, I’ll try cold-emailing people then :slight_smile: I see two people listed as training organizers at OpenStack Upstream Institute — Upstream Training Guide documentation - I’ll send them an email.

Cool! :smiley: I’ll ask to see if one or more of the participants to mooc-floss / mooc-floss · GitLab wants to do this – some are around Paris, so that might work.

Btw, during the workshop for the first module, we have discussed using minetest to introduce participants to the base principles of contribution and FLOSS, taking inspiration from the way you used Legos for this at the beginning of the in-person training. There was a lot of enthusiasm for the idea. :slight_smile: There are some outstanding questions around how to do this, and how to best transcribe it online - there is a ticket about this on the project’s GitLab, I’ve pinged you there :slight_smile: Evaluate using minetest as an introduction to contributions (#14) · Issues · mooc-floss / mooc-floss · GitLab

Other tickets where I think your experience and comments could be useful are:

1 Like

It is now in my todo list and will attend tomorrow. I somehow missed the previous meetings bug not surprised I did: starting a new job is demanding :slight_smile:

I also thought about using minetest and even rehearsed what it could look like with two friends and kept a 7 minutes recording dated june 2013. I played the bossy upstream and they played two contributors tasked to build a house. The rythm is rather slow compared to IRL lego. But once you start building and chatting, it actually keeps you busy.


Thanks for the pointers! I’ll take a look.

1 Like

It was not at the begining, rather in the middle, as a way to apply theory and make it so people would not fall asleep :smiley: It also makes for great photos: here are a few from the session of May 2013. I sent you a few.

@dachary Thanks! I copy them here, as they are actually really cool - it shows very nicely and visually the act of contributing :smiley:

1 Like



Quick update about the status of the Upstreaming / Contributing course:

Brainstorming meetings (series 1 & 2)

The first series of brainstorming meetings has concluded, with a lot of great material brought up for each of the modules content. We have just started a second series of brainstorming meetings, also one per module, to start structuring the content of each module. See the list of meetings (with dates, links to join, recordings and transcripts) at Issues · mooc-floss / mooc-floss · GitLab

Kandall and Ildiko from OpenStack have also started contributing and joining the meetings, which is great! :slight_smile:

The first meeting of the second series happened last week for module 1: From brainstorm to course - week 1 (#19) · Issues · mooc-floss / mooc-floss · GitLab It gave a first draft of the module 1 structure, which I’ve turned into a document – I have also added the content from the first brainstorm meeting about module 1 there, to start populating it:

Assignation of work on the content

During the last meeting, the different sections of content for module 1 were assigned to different project members (cf the PR from the previous bullet point). I have taken two for OpenCraft (one of them shared with Kendall), and made PRs to start growing the content for these sections – it’s still drafty, but the content is starting to shape up:

Reviews, comments and suggestions welcomed!

Next meeting

Monday April 5th at 5PM UTC (7PM summer time in Europe) – then every Monday at the same time. These meetings are open to everyone who would like to join!

1 Like

An update about the progress on the Upstreaming / Contributing course. If anyone is interested in contributing, don’t hesitate and let me know.

Completion of the second series of brainstorming meetings

The second series brainstorming meetings have now been completed a couple of weeks ago – now, for each of the 7 modules, we have in addition to the brainstorming material for each module, a detailed structure for that content, as well as assignees to write the different sections of each module.

First drafts of the content

Work to structure the raw brainstorm content from the meeting transcripts into proper structured sections has started, and drafts are available, at different stages of completion:

Discussions with partner organizations

Discussions are ongoing with the different organizations either involved in the project or discussing an involvement, to establish the relationship of the organizations to the project, figure out the business aspects, etc. Currently, the organizations in active discussion or contribution are: Open edX / edX, OpenStack, Telecom Paris, Wikimedia, OpenCraft. We have also reached out to Gitlab recently.

Project landing page - Text content

@ali_hugo has been working on preparing a landing page for the project (as well as figuring out a proper name for the project :slight_smile: ). The proposed text content for that home page is currently up for review:

Course autopublish from git via continuous integration

@toxinu and @jill have contributed the autopublish of a base course skeleton added to the course git repository:

The corresponding course doesn’t yet have any of the actual course content described above, but one of the upcoming steps will be to start moving it there. The resulting course is currently visible at https://courses.opencraft.com/courses/course-v1:MOOC-FLOSS+101+2021_1/course/ - it will be moved to its proper URL once it is decided and available (which should be on edX.org).

Follow-up project updates meetings

We are now switching to more asynchronous work, with a bi-weekly project update meeting, focused on providing updates on work done & figuring out blockers. Anyone is welcome to join the meeting – see details at Project management follow-up meetings (#40) · Issues · mooc-floss / mooc-floss · GitLab

And again, don’t hesitate if you would like to contribute – or simply review/provide comments.

1 Like

(Splitting the posts about the upstreaming course to their own thread.)

What is new?

Quick update about the onboarding course about upstreaming:


Remote Sprint - Winter 2021

During the last update meeting yesterday, we discussed organizing a remote sprint with other contributors, to work together towards our goal of having a draft text for the course ready by the end of the year. It could also be a fun occasion to see each other, whether you’re a regular of the project, contributing from time to time or just curious to see what this is about. :slight_smile:

We have suggested the following dates for it:

Anyone is welcome and invited to join! Or simply to say hi ;p

1 Like

Quick reminder that the first session of the remote sprint for the Upstreaming course is in a few hoursWednesday, December 8th from 15:00 to 19:00 UTC!

We will be editing the course from the following URL, at which Marc, Remi and I have finished adding the base structure today:

The first steps to participate tomorrow will be:

  1. Connect to the videoconference at MOOC FLOSS
  2. Create an account at Sign in or Register | OpenCraft Courses and send me the email you’ve used, so I can give you editing rights on the course
  3. Connect to the matrix chat at #mooc-floss:matrix.r2.enst.fr
  4. Pick task(s) tagged for the sprint
  5. Have fun! : )

See you in a few hours.

1 Like