Evaluating an Open Source Project

To be able to teach about open source development, I need to be able to identify projects that are suitable for my students. The previous field trips gave me leads to how to find projects, but not how to decide their suitability for various classes of students.  The next step is to learn how to use various criteria for evaluating projects for this purpose.   I watched  two different videos, one explaining mission critical criteria and the other, secondary criteria. Then I evaluated the OpenMRS project in terms of these criteria and filled in a spreadsheet provided by the POSSE team. The completed spreadsheet (as a PDF) is here: OpenMRS_eval.


Posted in Uncategorized | Tagged | Leave a comment

A Field Trip to SourceForge and OpenHub

Visiting SourceForge

In preparation for teaching about free and open source software (FOSS) development, my first activity was a “field trip”  to the SourceForge website. SourceForge is, to quote from its website,  “an Open Source community resource dedicated to helping open source projects be as successful as possible.” It acts as a public repository for open source software projects as well as providing many resources for a project’s shared development.

The first task was an exploration of SourceForge. I picked a category of software somewhat arbitrarily, namely I searched for projects related to graphics (or at least those that would match a search on the search key “graphics.”) I chose graphics partly because that is a category of open source software I have used extensively.

I found 675 programs that matched my search key. Fifteen different programming languages were used in this collection of projects. The four most frequently used languages were as follows:

  • 237 were written in C++
  • 178 were written in C
  • 145 were written in Java
  • 56 were written in Python

I found this reassuring, because in spite of the rise of Java and Python as programming languages, I am still an avid C/C++ programmer.

A project can be classified by its development status. SourceForge identifies seven different statuses, although I could not find a formal definition of them anywhere on their website. (Does anyone know where they are defined?) They are:

inactive, mature, production/stable, beta, alpha, pre-alpha, and planning

The sequence roughly corresponds to the maturity of the project, from the oldest to the youngest.  SourceForge does not make it easy to see the status of an individual project. To see the status of a particular project, you have to click on the project link and look for the tag on the page that is loaded. This works for all statuses except production/stable and mature statuses, which do not seem to be tagged. Therefore, one can distinguish all project statuses except whether it is mature or stable.

Which projects are the most used? How do I know?
If, by “used” we mean downloaded, we can tell which because the number of weekly downloads is always posted. For example, when I looked at my list,  libjpeg-turbo was the most popular of the graphics filtered projects, with 10,089 weekly downloads. Since it was so popular, I decided to investigate it further. There were specific questions that I needed to answer. They are given below.

What does it do?
libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2, NEON, AltiVec) to accelerate baseline JPEG compression and decompression on x86, x86-64, ARM, and PowerPC systems.

What programming language is the project written in?
It is written entirely in C.

Who is likely to use the project? How do you know this?
This is intended for software developers who are working on applications to process jpeg images and who are interested in obtaining greater speed by using SIMD instructions available on common chips.

When was the most recent change made to the project?
This is an active project. Some files were modified within the past week, such as the change to cmakelists.txt to add integer versions to jconfig.h

How active is the project? How can you tell?
It is a very active project. I can tell this by looking at the GitHub repository (which is where the SourceForge code link points.) One can see the list of commits and some are very recent.

How many committers does the project have?
The GitHub page showing contributors has a time-line with the contributors, who presently number 11.

Would you use the project? Why or why not?
I would not use this software. I do not do software development. Since this is a library that can be linked to an application, its only usefulness is to software developers who are working with jpeg images.

Visiting OpenHub

OpenHub is a different type of open source resource. As their About page explains, it is an online community and public directory of free and open source software (FOSS), offering analytics and search services for discovering, evaluating, tracking, and comparing open source code and projects. Unlike SourceForge, the Open Hub is not a forge — it does not host projects and code, and it is editable by everyone, like a wiki.

I visited OpenHub and searched for information about OpenMRS, one of the projects that is of interest to many in the POSSE community. Some of what I learned follows.

  • The main programming language used in OpenMRS is Java.
  • OpenMRS has 3,753,673 lines of code.
  • OpenMRS is written in 15 languages.
  • After Java, the  language with  the second highest number of lines of code is Javascript, with 769,673 lines of code.
  • Of the programming languages used in OpenMRS , the language with the highest comment ratio is Java, with 35.5%.
  • The average number of contributors in the last 12 months is 142/12 or about 12.
  • The top three contributors have been involved in the project for about 5 to 6 years.
  • The average number of commits to the project per month, over the past year, is 543/12 or abut 45.
  • The average number of commits made by each committer over the past year is 543/78 or about 7 commits per person.

Clearly one can learn a great deal about a project on OpenHub just by exploring the information on its pages, with very little effort.

Posted in Uncategorized | Tagged | Leave a comment

Participating in POSSE

I was fortunate to discover that, thanks to Red Hat, Inc.,  there is an annual workshop held each year that is designed to help faculty who are interested in teaching free and open source software development. Its acronym is POSSE (website here), standing for Professors Open Source Software Experience (although originally it was the Professors Open Source Summer Experience.) I applied and was accepted into and funded to participate in the 2016 workshop, for which I am grateful.  Being in POSSE has connected me to a group of professors and others interested in computer science education who are trying to aid in  the development of open source software.

Many of my future posts will be related to my experience with POSSE.

Posted in Uncategorized | Tagged | Leave a comment

Towards Teaching Free and Open Source Software


I have used open source software for almost my entire career as a computer scientist and I always encouraged my students to do the same, and yet I never encouraged them to participate in an open source project. One reason I did not was that I thought it would be too difficult for them or that the water into which they would have to jump would be too deep.  Another reason is that I did not know how to encourage them, never having participated myself in such a project. I felt that I should first become adept at it myself. This is how I usually prefer to teach, although sometimes I have taught courses in which I was just a few steps ahead of my students. This was usually a nerve-racking experience.

So now, after many years, I have summoned the nerve, the courage, and willpower to change this, in the twilight of my career, and my objective is to interest my students in free and open source software, to motivate them to contribute to it, and to teach them how they can.

Posted in Uncategorized | Leave a comment