H/FOSS Project Review
Introduction
In the H/FOSS Project Exploration assignment you collected basic information about some projects to which you might be interested in contributing. In this assignment you will build on that background by gathering more in depth and detailed information about a few of the projects that you are most interested in. This will include assessing how welcoming a community is to new comers, how responsive they are to questions, how well documented the project is, and thinking about what you’ll need to learn to get started. Collecting this additional information will take some time and effort, but it will be very helpful in making a well informed decision in the next activity, which asks you to select the project community with which you will work for the remainder of the year.
Assignment
Students pursuing a FOSS Project must each complete an H/FOSS Project Review for 2 H/FOSS projects of interest. Students pursuing Honors Projects must each complete the review questions below for 1 H/FOSS project. Ideally, your project reviews will build upon your project explorations. However, they may also be projects that were explored by others (see the Wiki) or they could include a newly discovered project. If you elect to review a project that you did not explore, you will need to complete the Project Exploration assignment for the new project before continuing with this review.
For each project that you review:
- Visit the course Wiki on the course Moodle (link on home page).
- Go to the H/FOSS Projects List page on the Wiki.
- In the “Project Reviews” section, add a line that links to the project’s home page and to the the Wiki page that you created for the project during the project exploration (you will be adding your review to that same Wiki page). The format of the link line should be the same as for the Project Exploration assignment.
- Add the information described in the H/FOSS Project Review section below to your Wiki page for the project.
H/FOSS Project Review
Your H/FOSS Project Review must contain the information indicated below. Please use headings and bulleted lists corresponding to each section below to make it easy for the instructor (and you) to identify the information.
-
Project Exploration:
- This is the information from the Project Exploration assignment. It will have been completed previously for projects that were explored, but will need to be created if a new project is being reviewed.
-
Developer Community Communication: This section will explore how active and responsive the community is. It will give you an idea of what it would be like to try to ask questions of the community.
-
Channels: What what are the main channels that developers use to communicate with each other (IRC/Gitter/Mailing List/Forums/etc)? For each channel answer the following questions:
-
Name/Link: What is the communication channel? Give a link to the main page for the communication channel.
-
Currency: When was the most recent information added to the channel?
-
Activity: How active has the channel been recently (e.g. how many messages in the last day? week? month?)
-
Responsiveness: Approximately what fraction of requests for information/help receive responses?
-
Response Time: When a response is received, on average how does it take?
-
Members: Who are a few of the most communicative project members (nicknames or handles are fine)?
-
Tone: Describe the tone of the discussion on the channel?
-
-
Issue Tracking: This section will explore how issues are reported/tracked/discussed by the community. It will give you an idea of what it will be like to work on bugs/features within the community.
-
Name/Link: What system is used to rack bugs/features? Give a link to the main page of the issue tracker.
-
Volume: How many open (non-closed) issues are there?
-
Currency: When were the most recent 5-10 issues opened?
-
Activity: When were the most recent 5-10 comments/edits/revisions of issues?
-
Resolution: When were the most recent 5-10 closed issues closed?
-
-
Getting Started: This section will explore what resources are available to new developers looking to join the community. It will give you an idea of what it might be like if you decide to work on this project.
-
Documents: Identify and give links to any documents relevant to newcomers (e.g. getting started, how to contribute, newcomer threads, etc.)
-
Organization: How well organized is the project? How easy was it to find information for newcomers to the project?
-
Communication: Find some messages/comments posted by newcomers to the project (e.g list serve, tickets comments, etc). Have they received responses? Does the tone of communications seem welcoming to new developers? Why?
-
Issues: Does the issue tracker designate any issues as good for new developers? If so… How many are there? How recently were they posted? Have comment/questions on them received responses from the community?
-
-
Planning: This section will explore how the project is being planned. It will give you an idea of how well organized and communicated the overall vision for the product is.
-
Documents: Identify and give links to any project roadmaps, project architecture, design documents, or other documents outlining future plans.
-
Currency: When were these documents produced? When were they last updated?
-
-
Project Distribution & Maintenance: This section will explore how users obtain the application, how developers obtain the source code and contribute back to the project. Note: Some project will use multiple sites or migrate from site to site. Be sure you are considering the most current repository. Use information from the code repository to answer the following questions:
-
User Distribution: How is the code distributed to users of the product? Also, give a link to the download site if one exists. Developer Distribution: How is the code distributed to developers working on the project (e.g. git/svn/cvs/zip/etc)? Also, give a link to the repository where the source code can be obtained.
-
Origins: When was this code first made available?
-
Currency: When was the most recent update made to this code?
-
Activity: How many updates have been made to this code recently (you define recently)?
-
Locality: Have recent updates been localized or spread widely across the project (you’ll need to browse the repository to see where changes have been made)?
-
Documentation: What resources are there that describe how to make contributions to the project (e.g. new documentation? bug fixes? ect.)? Give links to any documentation that you can find.
-
-
-
Project Statistics: This section explores the size and rate of change of the project and the technologies/languages that are used in the project. It will help you assess how possible it will be to keep up with the project and what you would need to learn before getting started. Use data and information from the project web page, repository and from Open HUB to answer the following questions about the project. Be sure to explore the links at the bottom of the project’s Open Hub page under “Code Data” and “SCM Data” and “Community Data”.
-
Currency: How recent is the Open Hub analysis? If the project you are reviewing is not in Open Hub or has not been updated for over 6 months, submit a request to the “Open Hub General Discussion” Forum at Black Duck Open Hub (this will require you to create a free account). Then wait a few days for the data to see if the statistics have updated before answering the questions. If the statistics are not updated, then you should make a serious effort to complement/verify the Open Hub data using the project’s own website and repository (e.g. GitHub).
-
Size: How many lines of code are in the project?
-
Documentation: What is the percentage of lines that are comments?
-
Growth: How would you characterize the growth of the code base: decreasing, stable, growing slowly, growing quickly?
-
Main Language: What is the main programming language used in this project?
-
Main Language %: What is the percentage of comment lines in this language?
-
Other Languages: What other programming languages are used by the project?
-
Technologies: What other frameworks and/or technologies are used in this project? Include testing frameworks as well. You will likely need to consult the project web page and repository for this information.
-
People: How many different people have contributed to this project?
-
Active People: How many different people have contributed to this project in the last year?
-
Contributors: Who are the top contributors to the project? When was their last commit?
-
Openness: Of the newest contributors, how many are new to the project (e.g. how many have a small number of commits)?
-
-
Assessment: Give an overall assessment of how you would feel about joining this open source project. What gives you confidence it would go well? What concerns you?
Grading
The grading critera for the Project Exploration are included in the Project Selection rubric on the Course Syllabus.
Acknowledgements: This assignment builds from and adapts ideas and content from the following activities created by others:
- https://github.com/ChrisMurphyOnline/open-source-software-development-course/blob/master/activities/foss-evaluation-activity.txt
- http://foss2serve.org/index.php/Intro_to_FOSS_Project_Anatomy_(Activity)
- http://foss2serve.org/index.php/FOSS_Field_Trip_(Activity)
- http://foss2serve.org/index.php/Project_Evaluation_Activity_V2
- https://github.com/ChrisMurphyOnline/open-source-software-development-course/blob/master/activities/foss-get-involved.txt