March 16, 2015

HFOSS Commarch Project (Socket.io)

Humanitarian Open Source Software
Fall 2013 – Professor decause
Original Design Professor David Shein

“Commarch” — Community Architecture

Open Source Community Characterization Assignment

Working in groups of two or three (formed during class), you are going to look
at FOSS community/project and deduce how that community is organized. You may
also use some of these techniques to assess pre-existing FOSS projects you wish
to contribute to for your term project (highly recommended!)

0. Choose your team. We’ll be doing this in class, and teams must be approved
by your instructor.

1. Choose a FOSS Project. You can use Ohloh.net and OpenHatch.org collect
general information on Free/Open Source projects (including games!). Select
one active software project about which to write. Have an alternative handy
if you find that you cannot get much information about your first choice.
Project choices must be approved by your instructor.

2. Follow the instructions included in the “Git By A Bus” repository on Github
to generate a report on your selected project, available here:
https://github.com/tomheon/git_by_a_bus

3. Calculate your project’s “Callaway Coefficient of Fail” using the rubric available here:
http://hfoss-fossrit.rhcloud.com/static/books/tomspotcallaway-howtotellifyourfossprojectisdoomedtofail.pdf

4. Dig deeper. Provide answers to the following questions:

If applicable, list or provide links to:
I. The project’s IRC Channel
II Source Code repository
III. Mail list archive
IV. Documentation
V. Other communication channels
VI. Project Website and/or Blog

A. Describe software project, its purpose and goals.

“Socket.IO enables real-time bidirectional event-based communication. It’s a nodeJS framework that uses websockets.”

B. Give brief history of the project. When was the Initial Commit? The
latest commit?

The initial commit was: May 1, 2011
The most recent commit was: 23 Days ago

C. Who approves patches? How many people?

Lead developer “rauchg” approves patches. He seems to be the only one.

D. Who has commit access, or has had patches accepted? How many
total?

The project has 86 contributors who have had patches accepted. Those contributors have had 1,391 commits.
Source: https://www.openhub.net/p/socketio

E. Who has the highest amounts of “Unique Knowledge?” (As per your
“Git-by-a-bus” report. If there is a tie, list each contributor, with
links if possible)

According to the report created by Git By A Bus, Guillermo Rauch (rauchg) has the highest amount of unique knowledge (by a significant margin)

F. What is your project’s “Calloway Coefficient of Fail?”

15pts, lack of email list

G. Has there been any turnover in the Core Team? (i.e. has the same
top 20% of contributors stayed the same over time? If not, how has
it changed?)

Contributor “rauchg” has had the most commits and has been working on the project since the start. The other top contributors no longer seem to contribute to the project. Beyond the top six contributors, everyone has contributed less than ten commits.

H. Does the project have a BDFL, or Lead Developer? (BDFL ==
Benevolent Dictator for Life)

One lead developer, “rauchg” seems to do the majority of the development. They have authored 741 commits of the 1,391. Over half.

I. Are the front and back end developers the same people? What is the
proportion of each?

The front and back end developers are the same people. There is no GUI so the front end development is minimal.

J. What have been some of the major bugs/problems/issues that
arisen during development? Who is responsible for quality control
and bug repair?

The biggest issue people have seems to be with unexpected disconnects. This issue is normally caused by the user, and they typically figure out how to fix it. The vast majority of issues reported are solved by the reporter and don’t seem to be the fault of socket.io itself. There don’t seem to have been many issues that were serious blockers. Most actual bugs in the past have been related to connection/disconnection issues on one specific platform.

K. How is the project’s participation trending and why?

The project’s participation has varied highly over time. Over the last year it has been more steady, and that trend seems to continue into 2015.

L. In your opinion, does the project pass “The Raptor Test?”
(i.e. Would the project survive if the BDFL, or most active
contributor were eaten by a Velociraptor?) Why or why not?

No. The lead developer seems to have a lot of unique knowledge, and seems to do the vast majority of the actual writing.

M. In your opinion, would the project survive if the core team, or
most active 20% of contributors, were hit by a bus? Why or why not?

No. Beyond the top six contributors most people have contributed relatively little work.

N. Does the project have an official “on-boarding” process in place?
(new contributor guides, quickstarts, communication leads who focus
specifically on newbies, etc…)

No official on-boarding process, but they do actively direct people to their Slack channel.

O. Does the project have Documentation available? Is it extensive?
Does it include code examples?

The project has documentation on how to implement it from the users’ standpoint. There doesn’t seem to be information on on-boarding new developers.

P. If you were going to contribute to this project, but ran into
trouble or hit blockers, who would you contact, and how?

They have an active Slack channel. That is where they direct people with questions.

Q. Based on these answers, how would you describe the decision making
structure/process of this group? Is it hierarchical, consensus
building, ruled by a small group, barely contained chaos, or ruled
by a single or pair of individuals?

The lead developer seems to make all of the final decisions. However, there are some people who help him review and test patches.

R. Is this the kind of structure you would enjoy working in? Why, or
why not?

In this case, it seems like a fine system. The lead developer is active and quick to respond. He seems to make well informed choices for the good of the project. Most people would probably be fine working in this system.

5. Write up a set of answers to these questions including how you arrived at
your conclusions (links, convo quotes, irc logs, email threads, etc.) to be
posted to your blogs individually. Each member can link to the same
analysis, but should give a personal account “in your own voice.”

6. Prepare in a brief slide-deck to present as a group to the class based on
your research.