Curriculum

Course Objectives

  1. Student knows the foss ecosystem and its philosophical and technical aspects
  2. Student is capable for leading a foss project or working with a foss project
  3. Student knows the foss development workflow
  4. Student is capable of designing, implementing, deploying, maintaining a FOSS based solution for the society for solving a problem

Theory Course

Unit 1: Free and Open Source Software philosophy and history [4]

FOSS definition; Free and Open Source Software; GNU project; History of GNU/Linux development; Development process of important FOSS software; Development process of various GNU/Linux distributions

Unit 2: Legal, social aspects of FOSS and parallels in other fields [4]

Various licenses including GPL, LGPL, BSD, etc; Copyleft; Patents, copyrights and trademarks; Concept of free culture with reference to Wikipedia, Creative Commons, Open Street Map; Open Movies; Open Access Journals; Open Standards; Open Hardware

Unit 3: Practical aspects of FOSS: business models [6]

Sharing the burden; Augmenting services; Supporting Hardware Sales; Undermining a competitor; Dual licencesing; Donations; Support service; Study of examples of each type of business model

Unit 4: FOSS development process and tools [10]

Development environments: Eclipse, Anjuta, Kdevlope, Netbeans; Version control; Bug tracking; Wiki; Mailing lists; Forums; Developer communities; IRC; Non technical issue resolution; Promotion; Communication: You are what you write, structure and content, tone, face, pitfalls, best practices; Process:Benevolent dictators, do-ocracy, consensus based democracy

Unit 5: Packaging applications [6]

Package; Package management tools; Building a package; Packaging guidelines; Package acceptance criterion; Packaging for .deb and .rpm based distributions

Unit 6: Case studies [8]

Following projects: Linux kernel, GNU Project, Open office, Mozilla Firefox, Gimp, Inkscape, Scribus, Silpa, LaTeX, Vlc, Mplayer, Virtualbox, MySQL, Postgresql, Sugar, Gnome, KDE, Blender, Google Chrome, Vuze, Scilab, Octave, Pidgin, Evolution, Thunderbird

Laboratory Course

List of assignments

  • Mediawiki: Set up a mediawiki installation with configuration specified by the instructor.
  • Version Control: Install, configure and create a project for the course using git version control system.

Note: this project will be used for all your work during the course

  • Forums: Install, configure a php bulletin board with access control as specified by the instructor.
  • Development:
    • Start participating in at least 1 known FOSS project
    • Take up a task as specified by the instructor
    • Test the software and report bugs to the community
    • Improve the software as per the specification and with quality acceptable to the community.
  • Packaging
    • Demonstrate your packaging capabilities by maitaining packages in upstream distributions
  • Technical capability strengthening: One of the following (in discussion with the instructor)
    1. System administration
    2. network administration
    3. Website maintenance & design
    4. Database management
    5. Shell scripting and intro to programming languages like python, C/C++

Textbooks

  1. Introduction to Free Software, by David Megías Jiménez and David Megías Jiménez (coordinator) et.al., Published by SELF Project (http://www.selfproject.eu/en/Coursebook_Intro_Free_Software)
  2. Free/Open Source Software: A General Introduction, by Kenneth Wong and Phet Sayo, published by International Open Source Network and United Nations Development Programme
  3. Producing OSS (http://producingoss.com) by Karl Fogel
  4. Free Software, Free Society: Selected Essays of Richard M. Stallman (http://www.gnu.org/philosophy/fsfs/rms-essays.pdf)

References

  1. The Cathedral and the Bazaar (CatB), by Eric S. Raymond Published by O'Reilly Media
  2. GNU Project Website http://www.gnu.org
  3. Free Technology Academy Materials http://ftacademy.org/materials
  4. Various online resources for learning the tools