Professional Documents
Culture Documents
Teaching Open Source
Teaching Open Source
Abstract
Open-source software development model has proven to be effective in collaborative
development of large-scale software with quality. The unique characteristics of the model, such
as the transparency of the development process and artifacts, the community involvement, and
the underlying hacker culture make it a rich learning tool for aspiring software engineers.
Contributing to open-source projects exposes to the students state-of-the-art software
engineering practices and tools and can potentially benefits the open-source community, which
is a win-win situation. This paper presents our experience getting students involved in open-
source projects as their capstone project.
Introduction
Software engineering is hard and it is not getting easier, as Fred Brooks puts it -- there is no
silver bullet (at least not in the foreseeable future). The difficulty lies in the abstract nature of
software products, which makes it hard to conceptualize and communicate them, and such
complexity only intensifies as the projects evolve and the team sizes increase. After decades of
research with limited success, people start treating such challenges as facts to be accepted
rather than problems to be solved. New process models, such as Agile method, are invented
and practiced to better cope with changes in software development processes. Good software
engineering practices often slowly find their way from industry to classrooms. Unlike other
disciplines software engineering (or computer science) programs traditionally offer no
apprenticeship programs to help students gain practical experience in real-world situations. The
closest experience students may get includes capstone projects, in which they solve real-world
problems for real clients. Computer science departments often struggle to identify and create
such projects for students and the result is often not real-world enough in terms of the scale and
the complexity of projects. Many good software engineering practices just make no sense
unless in real-world scenarios. For instance version control and issue tracking only become
essential when developers need to collaboratively create a code base without interfering each
other. Faculty members often found themselves inadequate to advise the teams because they
are not necessarily well versed with the best practices either. At the same time another world is
out there called open-source community that has endless real projects that seem fit the bill.
Contributing to open-source projects offers opportunities for students experience real-world
software development with lasting impact. In the rest of the paper we will introduce the open-
source concept, the benefit of involving students in open-source software development, and our
experience engaging students in such development as their capstone projects - challenges and
lessons learned.
Experiment Design
To experiment with involving students in open-source development our department assigned a
team of students to work on the mediawiki project [5] as their year-long capstone project.
Mediawiki is the software package that powers wikipedia and many other wikimedia foundation
[10] projects. Because it is open-source software anyone can use it to setup a wiki site with the
same functionalities as wikipedia.
The goal for the project is to help students gain experience contributing to open-source software
projects. They will study the mediawiki project: its design and architecture, the development
model, and tools used by the community. As the students explore the project and understand
the culture of the community they will discover ways to make meaningful contributions, which
can happen on various levels, such as reporting issues/bugs, improving documentation,
reviewing code, writing tests, and implementing new features or extensions. We ask students
focus on their own areas of interests because we believe they must be internally motivated to
persevere in this type of task.
Initially we gave the students a general goal and some vague objectives such as to serve the
mediwiki developer community by making meaningful contributions, to explore and learn the
practices and the culture. The faculty mentor for the team initially served as the project sponsor
by learning with the students, giving them reading assignments on open-source development,
and connecting them connected to the community.
Fortunately we were able to contact a developer at wikimedia foundation by asking for help on
the mailing list. He helped us overcome the first hurdle in committing the first change to the
code base. During the first several pair programming sessions we learned to setup the
development environment with the tool chain and learned about the workflow for submitting
code changes for review. The developer has agreed to take over the project sponsor
responsibilities and will offer guidance and directions to the students. The first task the students
were asked to do is to make a single contribution, however small, to the project as their ticket to
enter the partnership.
So far the students have gained experience with the following:
● version control with git
● issue/bug tracking with Bugzilla and Phabricator
● communication and collaboration via IRC, mailing lists, and Google hangout
● automated UI/browser testing with Ruby and Cucumber
● getting unstuck by being bold and asking for help
References:
[1] http://opensource.org/history
[2] Practical Open Source Software Exploration: How to be Productively Lost, the Open Source
Way http://teachingopensource.org/index.php/Textbook_Release_0.8
[3] https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
[4] How To Become a Hacker http://www.catb.org/~esr/faqs/hacker-howto.html
[5] Mediawiki http://mediawiki.org
[6] Heidi J.C. Ellis, Michelle Purcell, and Gregory W. Hislop. 2012. An approach for evaluating
FOSS projects for student participation. In Proceedings of the 43rd ACM technical symposium
on Computer Science Education (SIGCSE '12)
[7] Google Summer of Code https://code.google.com/p/google-summer-of-code/
[8] Google Code-in https://code.google.com/p/google-code-in/
[9] Facebook Open Academy https://www.facebook.com/OpenAcademyProgram
[10] Wikimedia Foundation http://wikimedia.org
[11] https://www.gnu.org/philosophy/free-sw.html
[12] The Open Source way
https://www.theopensourceway.org/wiki/Stuff_everyone_knows_and_forgets_anyway
[13] Open Hatch https://openhatch.org
[14] http://opensource.com/
[f] Teaching Open-source http://teachingopensource.org/
http://www.oreilly.com/openbook/freedom/index.html
[b] https://en.wikipedia.org/wiki/Open-source_software#Definitions
https://www.mozilla.org/en-US/about/manifesto/details/
John David N. Dionisio, Caskey L. Dickson, Stephanie E. August, Philip M. Dorin, and Ray Toal.
2007. An open source software culture in the undergraduate computer science curriculum.
http://doi.acm.org/10.1145/1272848.1272888
http://dl.acm.org/citation.cfm?id=2157136.2157413&coll=DL&dl=ACM&CFID=606719359&CFT
OKEN=56820364
Involving students from a wide range of backgrounds in Free and Open Source Software
(FOSS) project communities gets them a hands-on, portfolio-building experience in the creation
of a real-world project while simultaneously building their institution's public profile. The
group working on scaffolding to bridge the cultural differences between academic and FOSS
FOSS participation into existing and new curricula as well support resources for doing so.
Alumni and current members of the POSSE (Professors' Open Source Summer Experience,
at the SIGCSE 2010 BoF on Teaching Open Source (TOS) indicates that student involvement in
FOSS projects is a teaching and learning approach of interest for many faculty members. The
transparency of both artifacts and process make FOSS an attractive real-world experience that
enhances peer learning and intrinsic motivation for a diversity of courses, from introductory,
interdisciplinary, and non-major classes to software engineering core offerings and senior
capstones. However, such student participation involves a significant learning curve and effort
on the part of the faculty member, and support structures for faculty are still maturing. 2011-
2012 marks the 3rd academic year the TOS community has explored this realm together, and
the past year has seen the emergence of more best practices, support resources, and curricular
material. Community members are starting to design cross-institutional research on the impact
of FOSS participation on students. BoF attendees will be encouraged to ask questions, network,
and take advantage of the TOS community as a support structure for their own courses and
projects.
The audience is expected to consist of instructors who 1) are interested in learning how to get
started in involving students in FOSS projects; or 2) have involved students in FOSS projects
and are looking for better ways to facilitate student learning within FOSS projects.
http://myweb.lmu.edu/carnegie/webport/Knowgrid.htm
Free Software has provided a template, and a kind of inspiration for people to experiment with
new modes of reuse, remixing, modulating and transducing collaboratively created objects.
pursuit of knowledge
and deployment. O