A base level course in FOSS

For those of you who don’t visit the site, the iLUG-Cal wiki has a proposed FOSS Certificate Course drawn up largely by Pradeepto. The content is kept intentionally general so as to enable the cultivation of the basic hygiene of FOSS. There’s a subtle difference between programming in FOSS and making FOSS a practice or, as someone said “a way of life”. The course is aimed more towards the latter than the former. So, if you don’t want to go clicky-clicky on the above URLs here’s what the structure looks like:

[1] Programming - How to program? Note : Not specific to any language of the day or the latest buzz word. (40 hours)
* How to Design Programs - some elementary ideas
* Elementary Programming Best Practices
* Constructs and Structures that are part of everyday programming
* Collaborative Programming Practices
* How not to program?
* Choice of Programming Languages
[2] Version control. (6 hours)
* First, Second and Third Generation of Version Control System
* Introduction to Version Control as a workflow
* What are the fundamental aspects of setting up a Version Control System
* Examples of various Version Control System
* Setting up and Administration of a Version Control System using either CVS or Subversion
* Becoming aware of the developments in Version Control Systems - follow the commits
[3] Bug tracking (3 hours)
* Various Bug Tracking Tools
* How to report a bug
* How to follow bug reports
* Setting up a method to track bug reports
[4] Collaborative ways - mailing lists, irc, wikis etc.(Handout) (15 hours)
* Participating in collaboration
* Best behaviour on mailing lists
* Best behaviour on IRC
* Netiquette
* How to work with wikis
* Setting up and Administration of a wiki
* Content on a wiki used for brainstorming
* Overview/General introduction on documentation, testing and localisation ( and tools involved in each of the process )
[5] Day-to-day Linux(y) stuff - Bash [this should be a compulsory part of the course] (25 hours)
* Preliminary system administration
* Troubleshooting issues
* Network
* System
[6] Introduction to Bash scripting. (18 hours)
* Becoming Comfortable with Bash scripting
* Using Bash to complete system administration tasks
[7] FOSS : Licensing, copyright and patents. (8 hours)
[8] External Reading
[9] Project (appropriate bits from an upstream project) - (30 hours or more)

I am informed that Mrugesh is also doing up similar stuff for the NRCFOSS node in Mumbai. That’s good news. What is excellent news for the course is that there are identified folks who are keen to deliver content which is already present in a cohesive format. A discussion late last night on IRC also came up with the idea of coaching the participants in Bug Triaging/Zapping as part of the course. A very basic approach to this would be to set up a machine that has the “devel” builds for the Operating System, the applications and the desktop environment and allowing the participants to reproduce upstream bugs for the userland to get a feel of what proper bug reporting would be. Now a small percentage of the bugs would require fancy hardware or extensive knowledge – but a large percentage of them would be nicely handled/triaged if the coaching is on-the-mark.

The single most important thing that is happening is that the “commit to mailing lists” is being slowly but surely replaced by “commit to tasks”. One hopes that this will lead onwards on to “commit to upstream projects” and the hype over the Google SoC regarding the number of participants from India will be justified. Although it would be best served if all the aspects of FOSS are taken care of. “FOSS” as an word is constrained to “software” and even though the notion of “free culture, free knowledge” is talked about it would be good to see some action on those fronts too. There’s a large amount of work (and this is heavy lifting) that needs to be done in the areas of Open Access, PLoS, SELF Project

There is a need to talk about the MIT OpenCourseware bits and figure out how relevant parts from them can be integrated into the syllabus.