The Humanitarian FOSS Project http://hfoss.org Allen Tucker Bowdoin College allen@bowdoin.edu http://bowdoin.edu/~allen http://myopensoftware.org
Origin and Definition David Patterson (ACM president) message to CS faculty: Nov. 2005 “Let’s help our neighbors!” Mar. 2006 “Join the open-source movement!” The HFOSS Project began in 2006 to: Promote collaboration among Trinity, Wesleyan, and Connnecticut College faculty. Broaden student interest in computing (especially among women and other underrepresented groups) Revitalize computing curriculum (especially software engineering) Help the community (service learning) “HFOSS” = humanitarian free and open source software
HFOSS Project Elements The HFOSS Project received two NSF CPATH grants (20072011). These grants help support: Academic courses in the computer science curriculum Partnerships: academia ⇔ industry ⇔ clients Summer student internships Public presentations, workshops, symposia FOSS Certificate program Community growth beyond the three colleges Incubation of new software projects for specific clients
HFOSS Project Community (2009)
Typical HFOSS Software Projects Sahana – disaster resource management (sahanafoundation.org ) OpenMRS – on-line medical records system (openmrs.org) RMH Homebase – volunteer scheduling (myopensoftware.org) GNOME Accessibility – helps disabled users (live.gnome.org) POSIT – portable open search identification tool code.google.com/p/posit-mobile/)
For more details, see hfoss.org/index.php/projects2.
The RMH Homebase Project Volunteer scheduling software supported by the HFOSS project: Developed in Jan-May 2008 by 4 Bowdoin CS students and an instructor during a 1-semester course Installed in May 2008 at the Ronald McDonald House in Portland, ME (rmhportland.org/volunteers/homebase) GPL-licensed: sources downloadable at (sourceforge.net/projects/rmhhomebase) Inspired a new textbook: Software Development: An Open Source Approach, CRC Press, 2011 (myopensoftware.org/textbook) Now being adapted in 2011 for the Ronald McDonald House in Wilmington, DE (rmhde.myopensoftware.org)
FOSS in the CS Curriculum Three major points of contact for undergraduates: 1. Service course Open to non-majors with little/no programming: teaches FOSS principles; students interact with a live FOSS project 2. Summer Internship Open to students with programming experience: competitive application process, students contribute to a live FOSS project 3. Software Development Course/Project Open to CS majors, intermediate level (precursor/replacement for a software engineering course), students contribute to a live FOSS project
Example FOSS Service Course CPSC 110 – Computing on Mobile Phones (Spring 2011) 24 students, no prior CS or programming experience Focuses on building socially useful open source Android apps using App Inventor (http://appinventor.googlelabs.com/about/) Students post their homework and apps on their own websites (using http://sites.google.com). Students have completed their first projects, and are now working on a GPS application. For details, see http://turing.cs.trincoll.edu/~ram/cpsc110/
Example “first projects” in CPSC 110 1. Kat and Eva: “Pop a Dot” https://sites.google.com/site/katspportfolio/creative-project-1-1
2. Amir: “Trinity App” https://sites.google.com/site/amirsharifemamiportfolio/trinity-app
3. Elliott: “Bantam Dropper” https://sites.google.com/site/elliotbauersportfolio/checkpoint-1/creativeprojects/creative-project-1-bantam-dropper
Hypothesis: Students find CS interesting and exciting when given good tools, meaningful projects, and a FOSS perspective. Hypothesis: CS is accessible to a much more diverse range of smart students than the current culture admits.
HFOSS Summer Internships Intensive 10-week summer experiences for undergrads working on FOSS projects. Interns work in small teams with faculty mentors Competitive application process On-campus residency; $4000 stipend + room and board Immersion with an ongoing FOSS project. Students learn to use collaboration and development tools (IDE, VCS, discussion threads, bug tracking, new feature contributions, documentation, presentation).
Some Internship Stats Summer 2008: Trinity, Wesleyan, and Conn; 13 interns; 5 projects (Sahana, OpenMRS, AppTrac, InSTEDD, POSIT) For more, see http://2008.hfoss.org/Projects Summer 2009: Trinity, Wesleyan, and Conn; 11 interns; 6 projects (GNOME, Virtual EOC, OpenMRS, AppTrac, POSIT, InSTEDD) For more, see http://2009.hfoss.org/HFOSS_Summer_2008 Summer 2010: Trinity (8 interns), Wesleyan(5 interns), Conn (6 interns), Mt. Holyoke College, Bergen Community College, and Oregon State University; 8 projects For more, see http://notes.hfoss.org/index.php/Trinity Summer 2011: 30 applicants from 9 colleges (selection process hasn't completed yet)
Internship Outcomes A sample of student testimonials: “All the development teams projected a warm home-like feeling, and learning from others brought a new perspective to the field of Computer Science for me” “To actually work on a project that was going to be used in the real world was quite motivating and inspiring, creating an experience I had not found anywhere else” “The best part was how well we all got along and the flexibility of working hours. I'm satisfied with the work we did. For a first shot at a ‘real’ application, I think we did a pretty OK job” “Open source development allows for experience that can usually only be gained in industry; this experience is hard to come by as an undergrad”
FOSS Development Course (CS260) Intermediate-level 1-semester course for CS majors (prereq: CS1 and data structures) at Bowdoin College Students collaborate in teams on a live FOSS project, with a concrete goal at the end of the course. Agile development, requirements come from a real client. Students: Learn to use collaboration tools (discussion threads, videoconferencing), development tools (IDE), version control (SVN, Mercurial, Git), unit testing and coding standards Instructor: Sets milestones, schedules weekly meetings, assigns tasks, provides code exemplars, evaluates outcomes.
CS260 Course Offerings Spring 2008: 4 Bowdoin College students developed RMH Homebase for the Ronald McDonald House in Portland, ME. Spring 2011: 2 Bowdoin students are developing RMH Homeroom, a room scheduling application Each project is a 1-semester software development course. The course runs like a FOSS project: weekly Skype meetings, monthly milestones, direct client involvement, client training, installation on client's server.
CS260 Syllabus (milestones) WeekActivities 1-2
Using FOSS tools for collaboration and development
3-5
Developing the domain classes
6-8
Developing the database modules
9-11 Developing the user interface modules 12-13User documentation, training Final Presentation and installation (For details, see http://myopensoftware.org/content/extended-course-syllabus)
CS260 Cloning 1. Textbook Software Development: An Open Source Approach, CRC Press (January 2011) http://www.crcpress.com/product/isbn/9781439812907
2. Integrated with real-world software projects: http://myopensoftware.org/content/software-projects
3. On-line course support tutorials (Creative Commons licensed): Setting Up Collaboration Tools Setting up a Local Server and Database Setting up an IDE and a VCS Setting Up Documentation Tools Setting Up Debugging and Unit Testing Tools
(see http://myopensoftware.org/textbook for details)
Textbook Organization Chapters 1. Overview and Motivation 2. Working with a Project Team 3. Using Project Tools 4. Software Architecture 5. Working with Code 6. Developing the Domain Classes
7. Developing the Database Modules 8. Developing the User Interface 9. User Support 10. Project Governance 11. New Project Conception
HFOSS Future Challenges The FOSS Certificate: a new credential by which individual students can become “certified FOSS developers.” Community Growth: how to port the model to a wide range of institutions – undergraduate, 2-year, secondary schools? Sustainability: how to sustain the HFOSS project after its NSF grants expire?
The FOSS Certificate Demonstrates student mastery of FOSS principles and practice. Specifies a curriculum of FOSS principles and practice Accessible to all students in 2- and 4-year programs On-line application by portfolio Review by HFOSS faculty and developers First applications and certificates will be issued in Spring 2011 For details, see http://cert.hfoss.org
FOSS Certificate Curriculum Applicant must: demonstrate understanding of the FOSS Concepts, and complete at least one FOSS Practice while contributing to a live FOSS project. FOSS Concepts History of the FOSS movement Important FOSS writings: The GNU Manifesto, The Cathedral and the Bazaar, The Open Source Definition Distinctions between proprietary and open source software Types of open source licenses
FOSS Certificate Curriculum (cont'd) FOSS Concepts (cont'd) Various project roles: user, contributor, committer, leader, etc. Project organizational models: benevolent dictator, core team The “software release� and its components: code base, documentation, license, etc. FOSS Practices Perform meaningful code testing, including unit testing Perform meaningful debugging, including replication and fixing Perform meaningful refactoring of a portion of a code base Implement a new feature in the code base
Growing the HFOSS community (2011) New chapters (see details at hfoss.org/index.php/chapters) Rensselaer Polytechnic Institute: hfoss.rpi.edu Mount Holyoke College: hfoss.cs.mtholyoke.edu Oregon State University: web.engr.orst.edu/~sharifpa/HOSS Bergen Community College: notes.hfoss.org/index.php/Bergen New projects POSIT RMH Homebase RMH Homeroom Gnome Accessibility
HFOSS Project Sustainability Measurement of the HFOSS Project impact on: computing curricula computing enrollments software development practice Transition to an HFOSS Institute Continue activities when the NSF grant expires Locate new corporate sponsors Add new partner institutions Identify new student-friendly FOSS projects You are welcome to join this community: please contact me or Ralph Morelli, Trinity College, ram8647@gmail.com
References Morelli, R. et al., Revitalizing Computing Education through Free and Open Source Software for Humanity, Communications of the ACM 52, 8 (August 2009), 67-75. Tucker, A., Teaching client-driven software development. Proceedings of the ACM CCSC South Central Conference (April 2009). Tucker, A., R. Morelli, and C. da Silva, Software Development: an Open Source Approach, CRC Press, 2011 (see myopensoftware.org/textbook).