View on GitHub

COMP 491/492

Dickinson College Computer Science Senior Seminar

A02c - H/FOSS Project Ranking and Selection Assignment

Introduction

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.

Team Formation

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.

Assignment

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:

  1. Visit the course Wiki on the course Moodle (link on home page).
  2. Go to the H/FOSS Projects List page on the Wiki.
  3. Edit this page and in the Project Rankings section:
    1. Choose a name for your team and edit the page to reflect it.
    2. List your team members’ names, as indicated.
    3. Create a link to a new empty Wiki page that will contain your project rankings.
    4. Copy the contents of the Project Rankings Template Wiki page into your new page.
    5. Complete the Projects Considered section below.
    6. Complete the Project Install Spikes section below.
    7. Complete the Project Ranking section below.
    8. Complete the Project Selection section below.

Projects Considered

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.

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

Install Spikes

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.

  1. Add a bullet for each of the projects being considered to the “Install Spikes” section of the Wiki page.
  2. For each project being considered:
    1. Assign a sub-set of the team’s members to do the install spike for that project.
    2. 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.

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.

Project Ranking

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.

  1. 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.
  2. Replace the sample values in the table rows with 0’s to indicate the have not been ranked.
  3. 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.
  4. 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.

Project Selection

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:

  1. Indicate the project that your team has selected.
  2. 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.
  3. 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?
  4. 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?
  5. List, with a brief explanation, any additional concerns your team has about working on this project.

Presentation

This assignment concludes with a presentation to the class. The presentation should aim to communicate the following to the audience:

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.

Grading

The Project Ranking and Selection activity and presentation will be graded according to the rubric given below:

Click rubric to enlarge image.
Project Review Rubric. Project Ranking and Selection Activity. 3 pts - On time; Wiki contains all required information;  Information presented gives a clear and highly detailed picture of why the team selected the project that they did; Rankings and Selection are clearly and well supported by thoughtful, reflective and insightful rationales that draw directly on the gathered information; Writing is clear, concise, well organized, uses complete sentences and proper grammar; Wiki is correctly linked, neatly formatted and easy to read. 2 pts - On time; Wiki contains all required information; Information presented indicates why the team selected the project that they did; Rankings and Selection are supported by rationales that mention gathered information; Writing has minor organizational or grammatical issues that do not distract significantly from meaning or understanding; Wiki is correctly linked but is poorly formatted and/or difficult to read. 1 pt - On time; Wiki is missing required information; Information in the Wiki does not give an adequate picture of why the team selected the project; Rankings and Selection are insufficiently connected to the rationale or rationale does not use and/or align with provided information; Writing, organization or grammar interferes with understanding; Wiki is incorrectly linked, poorly formatted and/or difficult to read. 0 pts - Late, missing or substantially incomplete; Clearly demonstrates little to no investment in the assignment. Presentation. 3 pts - Presentation was interesting, engaging and told a cohesive story;  All required information was clearly presented in a well organized and easy to follow manner; Language, terminology and explanations were appropriate to the target audience; Use of media (slides, etc.) was visually appealing and enhanced the presentation; Participation was well balanced across team members;  Presentation was at the target length. 2 pts - Presentation was generally well organized and included all required information; Language, terminology and explanations were generally appropriate to the target audience; Use of media effectively supported the presentation; Participation by individual team member was mildly unbalanced (more or less) as compared to others;  Presentation was  moderately shorter or longer than the target length. 1 pt - Presentation was difficult to follow and/or was missing some required information; Language, terminology and explanations missed the target audience at numerous points; Use of media was ineffective or distracting; Participation by individual team member was moderately to heavily unbalanced (more or less) as compared to others;  Presentation was  significantly shorter or longer than the target length. 0 pts - Presentation was substantially incomplete; Clearly demonstrates little to no investment in the assignment; Individual team member did not participate.

Acknowledgements

This assignment builds from and adapts ideas and content from the following activities created by others:


Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License All textual materials used in this course are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

GPL V3 or Later All executable code used in this course is licensed under the GNU General Public License Version 3 or later