Textbook:
Producing Open Source Software
How to Run a Successful Free Software Project
By Karl Fogel
October 2005
ISBN 10: 0-596-00759-0
ISBN 13: 9780596007591
Overview:
Students will use the semester to learn how open source software is
developed in terms of its process as a cognitive unit of evolving
software. They will use real world development tools such as a version
control system, bug tracker (ticketing system), mailing list, as well as
open source IDE's or programming text editors, open source compilers (or
interpreters depending on the chosen language for implementation),
documentation generation tools will also be used for both the overview
of software usage and the API for the code base, we will also use a wiki for
public access to the documentation, an irc channel is also a potential means
of communication as this ia quite common for development discussions.
Course work:
The students will start the semester with lecture, the lecture will
cover topics out of the text book in order to gain a grasp on how the
process as a whole happens. The lecture portion will be generally fast
paced as most of the topics can be covered quickly in order to move on to
the development portion.
The development portion will start roughly 2-3 weeks into the course and
will begin either with a fresh slate or pick up where the previous
semester left off in terms of bug fixing, enhancements, etc. Key points of a
good software project will be enforced such as code style, modularity,
and potentially a design pattern or two depending on the direction of the
software project.
Once the development cycle has begun, students will be given assignments
in form of either a module to implement or a required number of commits to
the version repository in both code and documentation form with a base line
for an acceptable commit (in order to avoid several one line commits just to
"get the grade"). Exams will still be given over content from the text book
as well as course lecture will continue in this fashion (in order to further
refine topics, but the requirements to start development will be covered
early on).
The idea for the software project is to team up with the DF track majors and
create some sort of a DF tool which can be decided upon before class starts
by the Faculty or can be decided in class by a combination of students. This
software project will have a user base (The DF Tools course) and I would
like to encourage the DF Tools students to comment on the tool during their
time in their course and either post to the mailing list, file a ticket to
request a feature enhancement, or report a bug.
Infrastructure:
- Version Control System: Mercurial or Git
- Bug/Ticking System: Bugzilla or Trac
- Wiki: MoinMoin or Trac (built in)
- Editory/IDE: Anything with syntax highlighting
-- The rest will be enforced with code style standards
- Programming Languages: C or Java
-- Both are already taught at SHSU and their respective courses
could be pre-req's to this one, therefore no additional need for
teaching a language in this course.
-- C would be preferred as this language is "taught less" and would
allow the students to branch out slightly more. Also would
provide interaction with gcc and gdb.
-- Java would have the advantage over C as it is cross platform and
we would not have to force an OS/platform on the students as I
think change of OS might be a bit much to add to all of the
material already being covered in the course. (C can be cross
platform, but it ends up limiting the language as most of the
highly capable libraries for it are platform specific)