A02c - H/FOSS Project Ranking and Selection Assignment
Through the project explorations and reviews you have all gained a great deal of familiarity with a wide variety of H/FOSS project. This assignment asks you to form a project team, make a direct comparison between a number of the projects in which your team is interested, and based on that comparison select the H/FOSS project on which your team will work for the year.
Your instructor will use the information from the explorations and reviews that you have posted on the H/FOSS Project Wiki page to identify common areas of interest across the class. During class time, these areas will be presented and you will indicate your interest in working on different projects. We as a class will then negotiate the exact composition of each project team such that everyone has been placed on a team in which they have some shared interest. There will be a maximum of 4 (preferably 3) teams and each team will have between 2 and 6 members. Keep in mind that during the actual project work, teams may divide into smaller groups (sub-teams of two or three) which work on different aspects of the same H/FOSS project.
Once the teams have been formed, each team will complete the Ranking and Selection activities below in order to choose the project on which they will work. There will be one submission for this assignment for each project team. The submission must be completed collaboratively with the involvement of all team members.
To complete this assignment:
- Visit the course Wiki on the course Moodle (link on home page).
- Go to the H/FOSS Projects List page on the Wiki.
- Edit this page and in the Project Rankings section:
- Choose a name for your team and edit the page to reflect it.
- List your team members’ names, as indicated.
- Create a link to a new empty Wiki page that will contain your project rankings.
- Copy the contents of the Project Rankings Template Wiki page into your new page.
- Complete the Projects Considered section below.
- Complete the Project Install Spikes section below.
- Complete the Project Ranking section below.
- Complete the Project Selection section below.
Each project team must consider a minimum of 3 projects and each of those projects must have been explored and reviewed by at least one team member.
- Have a discussion within your team and select at least 3 projects that have been explored and reviewed by at least one member of the team. All members of the team must have equal voice in the decision of which projects are going to be considered. This may ultimately require that the team consider more than 3 projects.
- When your team has settled on the projects to be considered, add each project to the Project Considered section of the Project Ranking Template with links to the project’s home page and to the Wiki pages of all of the Project Explorations and Project Reviews that were completed (including those not done by your team team). Note: You may come back and add additional projects here later.
You have, as a part of the exploration and review stages looked at the documentation for installing, running and working on these projects. However, it is often not until you really attempt to install, use or work on the project that it becomes clear how helpful (or not) this documentation is. The spikes in this section will help you to more fully evaluate how easy or how difficult it might be to get started with the project.
- Add a bullet for each of the projects being considered to the “Install Spikes” section of the Wiki page.
- For each project being considered:
- Assign a sub-set of the team’s members to do the install spike for that project.
- The sub-set of team members assigned to each project will then complete the two Install Spikes for that project as described just below.
User Perspective Spike
The purpose of this spike is to get a feel for what it would be like as a user coming to the product. You will want to find and use the directions that they provide for new users wanting to install the product. This may require you to download and install the executable program or there may be a live demo available online, or you may have to build the executable program from its source code. You want the easiest way to begin using the latest version of the product as a user.
Spend a maximum of 1 hour trying to install/run the latest version of the product as a user. If you are unable to install/run the program within 1 hour stop.
Add the following information under the “User Install” bullet for the project based on your experience.
- Links to any installation documentation that you found helpful.
- A link to the download site or the live demo site you used.
- A paragraph summarizing your experience trying to install/run the program as a user. Your summary should address whether you were successful or not in running the program, how you ran the program (installed/live demo/etc…), the quality of the documentation, how difficult you found it and what the causes were for any difficulties you experienced.
Developer Perspective Spike
The purpose of this spike is to get a feel for what it will be like to get setup to contribute to this project. You will want to find the directions that the project provides for getting set up on your computer to modify the code of the project. This will definitely require forking and cloning the project repository, among other steps. Often projects will call this “getting started” or “how to contribute” or “developer install”. You may need to dig around a little to find the appropriate documentation. See your instructor if you have difficulty finding the relevant information for your project.
Spend a maximum of 3 hours trying to install the development environment and getting it to run from the source code using your local installation. If you are unable to install and run the product within 3 hours stop.
Add the following information under the “Developer Install” bullet for the project based on your experience.
- Links to any installation documentation that you found helpful.
- Links to your fork of the project repository and to the upstream repository.
- A paragraph summarizing your experience trying to install/run the program as a developer. Your summary should address whether you were successful or not in running the program, the quality of the documentation, how difficult you found it and what the causes were for any difficulties you experienced.
Once your team has completed the Install Spikes, you will create rankings for the projects being considered. Information including the Project Explorations, Project Reviews, the Install Spikes (just above) as well as the team members’ backgrounds and interests will factor into these rankings. All team members must have equal voice in this conversation.
- Replace P1, P2, P3 in the Project Name column in the table in the Project Rankings section of the Wiki with the names of the projects you are considering. Add additional rows to the table as necessary.
- Replace the sample values in the table rows with 0’s to indicate the have not been ranked.
- Working as a full team, discuss the information contained in the Project Explorations, the Project Reviews, the Install Spikes and any additional information you find helpful and rank the projects 1,2,3… (with 1 being the best) along the dimensions described below. Ties are allowed.
- Community: How would it be to work within this project’s community? Consider issues such as the size and diversity of the user and developer communities, the availability and variety of communication channels, the quality and tone of communications, how newcomers are treated, etc.
- Complexity: How technically hard is it going to be to work on this project? Consider issues such as the size of the code base, the number of different tools/languages/technologies/frameworks used, degree and quality of documentation (both in code and in other documents), the modularity of the project (can you isolate what you have to know?), etc.
- Activity: How active is this project? Consider issues such as the recent responsiveness of community members, the rate at which the code is changing (is it too slow or too fast?), whether new issues are being opened and old issue are being closed, whether pull requests are being merged, how up to date documentations is, etc.
- Approachability: How hard would it be to get started with this project? Consider the availability, quality and complexity of install/setup directions and documents explaining how to get started as a contributor, the number of new contributors that have joined the project recently, indications and understandability of good first issues, alignment of your team’s current skill set with the projects tools/languages/technologies/frameworks, how much domain knowledge is necessary, etc.
- Appeal: How interested is your team in this project? Consider issues such as the application domain, the benefits to end users, the technologies employed, etc.
- Complete the “Rationale” section by giving a paragraph for each dimension that summarizes your team’s rationale for the rankings in that dimension. The paragraph for each dimension should be comparative. It should make it clear which factors influenced projects to be ranked higher or lower than others on that dimension. Use details from the Project Explorations, Project Reviews and the Install Spikes to support your rankings.
As a full team, have a discussion of the rankings and rationale that you produced in the prior section with the goal of selecting one on which to work. The rankings are to help inform your decision but it is not required that you simply choose the highest ranked project. All team members must have equal voice in this conversation.
When your team has selected a project complete the Project Selection section of the Project Ranking Template as follows:
- Indicate the project that your team has selected.
- Give a paragraph explaining the rationale for your team’s choice. This should include how you considered the rankings, which dimensions you considered most heavily and why.
- Review your experiences with the Install Spikes and give a rough estimate of how many hours you think it might take every team member to get the application running as a user? As a developer?
- List, with a brief explanation, any additional knowledge that your team will need to acquire before beginning work on this project. For example, what tools/languages/frameworks will you need to learn?
- List, with a brief explanation, any additional concerns your team has about working on this project.
This assignment concludes with a presentation to the class. The presentation should aim to communicate the following to the audience:
- a familiarity with all of the projects that were considered.
- a deep understanding of what the chosen project does and why it is important to its user and developer communities.
- a full and detailed accounting of why the project was chosen by the team.
- an understanding of the challenges the team anticipates when working on the chosen project.
- an understanding of the additional technical knowledge that the team and/or its individual members will need to acquire to effectively contribute to the chosen project.
Prepare this presentation for an audience of your peers (advanced undergraduate computer science majors). You may assume that they know a good bit about computer science and free and open source software. However, you should not assume that they know anything about the specific projects your team considered or the project that it ultimately selected. Similarly, you should not assume knowledge of any specific technologies, languages, tools, frameworks, etc… beyond those that have been used in our curriculum. When discussing topics that are outside of the audience’s assumed knowledge, context and background sufficient for the audience to follow the presentation should be provided.
The Project Ranking and Selection activity and presentation will be graded according to the rubric given below:
This assignment builds from and adapts ideas and content from the following activities created by others:
All textual materials used in this course are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
All executable code used in this course is licensed under the GNU General Public License Version 3 or later