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.
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.
- 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.