Project Evaluation (Activity)
Darci.burdge (Talk | contribs) (→Walk through of an evaluation of the OpenMRS project) |
Darci.burdge (Talk | contribs) (→New contributor) |
||
(32 intermediate revisions by 6 users not shown) | |||
Line 5: | Line 5: | ||
Project Evaluation | Project Evaluation | ||
|overview= | |overview= | ||
− | This activity | + | This activity guides a person or team to evaluate a FOSS project and decide if they might want to contribute to it. |
+ | This includes instructors who want to choose an HFOSS project for a course. | ||
+ | This activity evaluates characteristics that include: | ||
+ | pattern of contributions, pattern of commits, programming languages used, and more. | ||
+ | This activity uses OpenMRS as a sample project to evaluate. | ||
|prerequisites= | |prerequisites= | ||
− | * Completion of [[FOSS Field Trip (Activity)]] or an understanding of GitHub and OpenHub | + | * Have Google Chrome installed. |
− | + | * Understanding of the course or context in which an HFOSS project will be used. | |
− | + | * Completion of [[FOSS Field Trip (Activity)]] or an understanding of GitHub and OpenHub. | |
|objectives= | |objectives= | ||
− | * Identify HFOSS projects that | + | * Identify HFOSS projects that seem good for new contributors. |
− | |process skills= | + | |process skills= Information Processing, Assessment |
}} | }} | ||
=== Background === | === Background === | ||
− | Not all projects are equally good for | + | Not all projects are equally good for a new contributor. |
+ | Some projects are welcoming and provide clear pathways to join their community. | ||
+ | Other projects are less welcoming, or not well organized to support new people. | ||
+ | Thus, it is helpful to evaluate a project before getting involved and contributing. | ||
+ | This is particularly important when a teacher selects a project for students, | ||
+ | or when students select a project for assignments or a project. | ||
+ | The criteria below provide a framework to consider, but are not foolproof. | ||
=== Directions === | === Directions === | ||
+ | === Walk through of an evaluation of the OpenMRS project === | ||
− | + | To choose a FOSS project for yourself or your class, it helps to consider multiple criteria, which are explored below. | |
+ | The [http://foss2serve.org/index.php/Project_Evaluation_Rubric_(Activity) Project Evaluation Rubric] | ||
+ | has descriptions and instructions to score each criterion. | ||
+ | Copy the [http://foss2serve.org/index.php/Project_Evaluation_Rubric_(Activity) Project Evaluation Rubric] onto your wiki page. | ||
+ | Include your findings (notes and the answers to the questions below) in your rubric, along with your scores for each. | ||
− | + | This activity uses OpenMRS as an example to evaluate. | |
− | + | Thus, go to the OpenMRS core repository (https://github.com/openmrs/openmrs-core). | |
− | + | ||
− | + | ||
− | + | ||
[[File:ProjEval-Img1.jpg|600px|thumb|center]] | [[File:ProjEval-Img1.jpg|600px|thumb|center]] | ||
− | ''' | + | |
− | + | ==== Licensing ==== | |
− | + | A FOSS license allows anyone to use, change, and redistribute the software. However, there are many FOSS licenses. | |
− | + | The [https://opensource.org Open Source Initiative (OSI)] lists ''open source licenses'' at https://opensource.org/licenses/alphabetical. | |
− | + | The [https://fsf.org Free Software Foundation (FSF)] lists ''free software licenses'' at https://www.gnu.org/licenses/license-list.html. | |
− | + | In general, the OSI definition is broader, and so that list is longer. | |
− | + | # On the repository page (see image above), click on the "<> Code" tab below the repository name. | |
− | + | # Look below the tabs for a license name or a link to the license. | |
− | # Click the | + | # If the license is not shown, or the project is not on GitHub, look for a license file in the top level files of the repository. |
− | + | # Does the project use a license approved by the OSI? In the rubric, record your findings. {{Answer|Yes, Mozilla Public 2.0.}} | |
− | + | ||
− | + | ==== Language ==== | |
− | + | If you, your team, and your students are already familiar (or expert) with the project's language(s), | |
− | + | it will be much easier to learn how the project works and make contributions. | |
− | + | # On the "<> Code" tab, click on the language details bar (see image above). | |
− | + | # In the rubric, record the top three languages used and the percentages. {{Answer|96% Java, 3% SQL, 1% other (as of 2019-01)}} | |
− | + | ||
− | # How many open ( | + | ==== Activity ==== |
− | # How many closed issues are there? | + | A project with little or no activity in the last year might be abandoned and dead, |
− | # When was the | + | or it might be stable, mature, and not actively developed. |
− | # | + | One measure of activity is the number of ''commits'' (changes) made to the code. |
− | + | # Click on the "Insights" tab, and then click on "Commits" on the left menu. | |
− | + | # The graph shows the number of commits in each week of the last year. | |
− | # Are there instructions | + | # Define a quarter (3 months) to be "active" if there were commits in a majority (over half) of the weeks in that quarter. |
− | # Are communication mechanisms, such as IRC, | + | # Decide (at a glance, no need to count) how many quarters were active, and record in the rubric. |
− | # Is there a discussion platform? If so, | + | |
− | # Is there Web presence? This might include information about the project, how to get started as a developer, links to blogs, links to IRC logs, links to pages that contain information about coding standards and the code submission process. | + | ==== Number of contributors ==== |
− | + | A FOSSism states that "It's all about community" - a healthy project usually has an active user community. | |
− | + | The community is a great resource to help newcomers learn about the project, its culture, and norms. | |
− | + | # Click on the "<> Code" tab. | |
− | + | # The number of contributors is listed above the language details bar. Record this in the rubric. | |
− | # | + | |
− | # | + | ==== Size ==== |
− | + | A large project that uses many technologies might overwhelm a CS2 student, but be perfect for a senior capstone course. | |
− | + | A simple measure of size is the lines of code (LoC), and you could do more research to explore complexity. | |
− | # Does there appear to be a user base? | + | By default, Github does not show the size or lines of code for a repository. |
− | # Are there instructions for | + | However, you can install an extension for Google Chrome that will display the size. Follow the instructions below. |
− | # Are there instructions for how to use the software? | + | # Open Chrome and go to: https://chrome.google.com/webstore/search/github%20repository%20size |
+ | # Click the "Add to Chrome" button for the ''GitHub Repository Size'' extension | ||
+ | # Return to the project page in GitHub. You should now see the repository size next to license type. Record the size in the rubric. | ||
+ | |||
+ | ==== Issue tracker ==== | ||
+ | An active issue tracker should highlight key issues that clients and developers have raised, and show that they are being addressed. | ||
+ | # Click on the "Issues" tab, which should be next to "<> Code". (Note: If you do not see this tab, then no issues are logged in Github). | ||
+ | #* OpenMRS uses a separate issue tracker. | ||
+ | ## Click the link to openmrs.org located near the top of the repository page. | ||
+ | ## Scroll to the bottom and click the "OpenMRS Issue Tracking" link. | ||
+ | ## Scroll to the table labeled "Two Dimensional Filter Statistics: All JIRA Tickets" located near the bottom of the page. | ||
+ | ## Use this to answer the rubric questions below. | ||
+ | # How many ''open'' ("ready for work") issues are there? | ||
+ | # How many ''closed'' issues are there? | ||
+ | # Scroll to the top to see a list of ''Curated Introductory Tickets.'' When was the third issue opened? | ||
+ | # Browse through other issues in the table, and click on some of the cells, to assess whether issues are actively being added and resolved. Record this in the rubric. | ||
+ | |||
+ | ==== New contributor ==== | ||
+ | A healthy project should welcome new contributors. | ||
+ | For example, there should be links to "getting started" pages and information on ways to get involved. | ||
+ | These pages, in turn, should have more detail on '''how''' to become involved, and '''how''' to connect with the community. | ||
+ | # Browse the GitHub repository and associated links. Are there signs that the project welcomes new contributors? | ||
+ | # Indicate which of the following are present and include links in the rubric. | ||
+ | #* Note: For OpenMRS you will find two links quite useful: one at the top to openmrs.org and one near the bottom to the OpenMRS wiki. | ||
+ | ## Are there instructions to download and install the development environment? | ||
+ | ## Are there communication mechanisms, such as IRC, listserves, meeting notices, etc. and instructions on how to access them? | ||
+ | ## Is there a discussion platform? If so, are there recent posts and responses? | ||
+ | ## Is there Web presence? This might include information about the project, how to get started as a developer, links to blogs, links to IRC logs, links to pages that contain information about coding standards and the code submission process. | ||
+ | # Record your findings in the rubric. | ||
+ | |||
+ | ==== Community norms ==== | ||
+ | How community members interact with one another is important, especially for students. | ||
+ | You do not want to point students to a project that advocates or permits lewd and unprofessional behavior. | ||
+ | # Some projects have a "Code of Conduct", but others do not. Such codes are not in a standard location, so you might find it more quickly with a Google search. | ||
+ | #* For OpenMRS, look in the "Developer Guide" (link along the left side in the OpenMRS wiki) and then choose "Conventions". | ||
+ | # Review some actual interactions for any rude or inappropriate behavior. This could be time consuming since you must first find the type of communication typically used by the community, and then find and review interactions. Choose two topics with at least 5 members and 15 or more replies. | ||
+ | #* For OpenMRS, click the "TALK" link at the top of the OpenMRS wiki page. | ||
+ | # Record the following in the rubric. | ||
+ | ## Three observations about the project's Code of Conduct. | ||
+ | ## Three observations about communication that occur in the community. Is there any sign of rude or inappropriate behavior? | ||
+ | |||
+ | ==== User base ==== | ||
+ | A project will not thrive without a core ''user base'' of clients who use the project on a day-to-day basis. | ||
+ | They give the development team necessary feedback about the project, what works, what doesn't, and what new features they want. | ||
+ | If no one uses the project, then developers are more likely to abandon it. | ||
+ | # Browse the repository and related links, and record your answers to the following in the rubric. | ||
+ | ## Does there appear to be a user base? | ||
+ | ## Are there instructions for clients to download and set up the software? | ||
+ | ## Are there instructions for how to use the software? | ||
=== Deliverables === | === Deliverables === | ||
− | POSSE Participants: On your user wiki page, create a section | + | POSSE Participants: On your user wiki page, create a section with the [http://foss2serve.org/index.php/Project_Evaluation_Rubric_(Activity) Project Evaluation Rubric] that describes your evaluation of OpenMRS as a suitable project for your course. |
= Notes for Instructors = | = Notes for Instructors = | ||
− | The remaining sections of this document are intended for the instructor. | + | The remaining sections of this document are intended for the instructor. |
+ | They are not part of the learning activity that would be given to students. | ||
=== Assessment === | === Assessment === | ||
− | * For a more introductory class, assessment can be based on simply answering the question included above | + | * For a more introductory class, assessment can be based on simply answering the question included above to evaluate OpenMRS. This generally requires nothing more than being able to point and click and record the correct information. Students will get a simple view of evaluation in one context. |
− | * For more advanced students, | + | * For more advanced students, possible extensions include: |
− | ** | + | ** Provide the activity as shown above, but have students evaluate another HFOSS project, perhaps one not on GitHub. |
− | ** | + | ** Have students assess (and compare) several HFOSS projects. |
− | ** | + | ** Add assessment questions that require interpretation or comparison of data for various criteria. |
− | ** This | + | ** This activity could lead to a larger discussion or reflection about the general problem of product evaluation, selection, and comparison. Those issues are relevant whether the product is FOSS, commercial, or developed in-house. |
** This activity could also prompt discussion of measurement problems including qualitative vs. quantitative measures, development of frameworks for evaluation, and weighting of criteria to reach an overall evaluation conclusion | ** This activity could also prompt discussion of measurement problems including qualitative vs. quantitative measures, development of frameworks for evaluation, and weighting of criteria to reach an overall evaluation conclusion | ||
+ | <!-- QUESTIONS: | ||
+ | Do we need this table, or should we refer to (or insert) the more polished rubric? | ||
+ | Should we create a template for the rubric, so it looks more consistent? | ||
+ | --> | ||
The table below provides an outline of a rubric reflecting the recommended evaluation criteria. | The table below provides an outline of a rubric reflecting the recommended evaluation criteria. | ||
− | {| | + | {| class="wikitable" style="width:50%;" |
− | ! | + | |- |
− | ! Level | + | ! Evaluation Factor |
− | + | ! Level<br/>(0-2) | |
− | ! | + | ! style="width:60%;" | Evaluation Data |
− | + | ||
|- | |- | ||
| '''Licensing''' | | '''Licensing''' | ||
− | |||
− | |||
| | | | ||
| | | | ||
− | |||
|- | |- | ||
− | | ''' | + | | '''Language''' |
− | + | | | |
− | + | | | |
− | | | + | |
− | | | + | |
|- | |- | ||
− | | '''Activity''' | + | | '''Level of Activity''' |
− | + | | | |
− | + | | | |
− | | | + | |
− | | | + | |
|- | |- | ||
− | | '''Contributors''' | + | | '''Number of Contributors''' |
− | | | + | | |
− | | | + | | |
− | | | + | |- |
− | | | + | | '''Product Size''' |
+ | | | ||
+ | | | ||
|- | |- | ||
| '''Issue Tracker''' | | '''Issue Tracker''' | ||
− | + | | | |
− | + | | | |
− | | | + | |
− | | | + | |
|- | |- | ||
| '''New Contributor''' | | '''New Contributor''' | ||
− | + | | | |
− | + | | | |
− | | | + | |
− | | | + | |
|- | |- | ||
− | | '''Norms''' | + | | '''Community Norms''' |
− | + | | | |
− | + | | | |
− | | | + | |
− | | | + | |
|- | |- | ||
− | | ''' | + | | '''User Base''' |
− | | | + | | |
− | | | + | | |
− | | | + | |- |
− | | | + | | '''Total Score''' |
− | + | | | |
+ | | | ||
|} | |} | ||
=== Comments === | === Comments === | ||
− | * | + | * These criteria are general, but the specific ways to evaluate each one will vary by project and forge. OpenMRS provides a good example for evaluating each criterion for projects on GitHub. Projects on other forges will require different approaches to evaluate many of the criteria. |
− | * | + | * FOSS projects tend to have similar structures. If you repeat this evaluation for several projects, it gets easier and quicker, since you know what to look for. (A bit like learning multiple programming languages.) |
− | + | ||
=== Variants and Adaptations === | === Variants and Adaptations === | ||
Line 167: | Line 220: | ||
{{Learning Activity Info | {{Learning Activity Info | ||
|acm unit= | |acm unit= | ||
+ | SE/Software Project Management, SP/Professional Ethics, SP/Intellectual Property, SP/Professional Communication | ||
|acm topic= | |acm topic= | ||
+ | * Project Management | ||
+ | * Exposure to the idea that a project has a code of conduct | ||
+ | * Exposure to the idea that licensing of an open source project is essential | ||
+ | * Professional communication and exposure to communication and collaboration tools | ||
|difficulty= | |difficulty= | ||
+ | Easy | ||
|time= | |time= | ||
− | 60-90 minutes | + | 60-90 minutes |
− | + | ||
− | + | ||
|environment= | |environment= | ||
* Access to Internet/Web and web browser | * Access to Internet/Web and web browser | ||
Line 191: | Line 248: | ||
[[Category:Learning Activity]] | [[Category:Learning Activity]] | ||
[[Category:Use and Evaluate]] | [[Category:Use and Evaluate]] | ||
− | [[Category: Good Draft]] | + | [[Category:Good Draft]] |
Latest revision as of 15:36, 14 April 2019
Title |
Project Evaluation |
---|---|
Overview |
This activity guides a person or team to evaluate a FOSS project and decide if they might want to contribute to it. This includes instructors who want to choose an HFOSS project for a course. This activity evaluates characteristics that include: pattern of contributions, pattern of commits, programming languages used, and more. This activity uses OpenMRS as a sample project to evaluate. |
Prerequisites |
|
Learning Objectives |
After successfully completing this activity, the learner should be able to:
|
Process Skills Practiced |
Information Processing, Assessment |
Background
Not all projects are equally good for a new contributor. Some projects are welcoming and provide clear pathways to join their community. Other projects are less welcoming, or not well organized to support new people. Thus, it is helpful to evaluate a project before getting involved and contributing. This is particularly important when a teacher selects a project for students, or when students select a project for assignments or a project. The criteria below provide a framework to consider, but are not foolproof.
Directions
Walk through of an evaluation of the OpenMRS project
To choose a FOSS project for yourself or your class, it helps to consider multiple criteria, which are explored below. The Project Evaluation Rubric has descriptions and instructions to score each criterion. Copy the Project Evaluation Rubric onto your wiki page. Include your findings (notes and the answers to the questions below) in your rubric, along with your scores for each.
This activity uses OpenMRS as an example to evaluate. Thus, go to the OpenMRS core repository (https://github.com/openmrs/openmrs-core).
Licensing
A FOSS license allows anyone to use, change, and redistribute the software. However, there are many FOSS licenses. The Open Source Initiative (OSI) lists open source licenses at https://opensource.org/licenses/alphabetical. The Free Software Foundation (FSF) lists free software licenses at https://www.gnu.org/licenses/license-list.html. In general, the OSI definition is broader, and so that list is longer.
- On the repository page (see image above), click on the "<> Code" tab below the repository name.
- Look below the tabs for a license name or a link to the license.
- If the license is not shown, or the project is not on GitHub, look for a license file in the top level files of the repository.
- Does the project use a license approved by the OSI? In the rubric, record your findings.
Language
If you, your team, and your students are already familiar (or expert) with the project's language(s), it will be much easier to learn how the project works and make contributions.
- On the "<> Code" tab, click on the language details bar (see image above).
- In the rubric, record the top three languages used and the percentages.
Activity
A project with little or no activity in the last year might be abandoned and dead, or it might be stable, mature, and not actively developed. One measure of activity is the number of commits (changes) made to the code.
- Click on the "Insights" tab, and then click on "Commits" on the left menu.
- The graph shows the number of commits in each week of the last year.
- Define a quarter (3 months) to be "active" if there were commits in a majority (over half) of the weeks in that quarter.
- Decide (at a glance, no need to count) how many quarters were active, and record in the rubric.
Number of contributors
A FOSSism states that "It's all about community" - a healthy project usually has an active user community. The community is a great resource to help newcomers learn about the project, its culture, and norms.
- Click on the "<> Code" tab.
- The number of contributors is listed above the language details bar. Record this in the rubric.
Size
A large project that uses many technologies might overwhelm a CS2 student, but be perfect for a senior capstone course. A simple measure of size is the lines of code (LoC), and you could do more research to explore complexity. By default, Github does not show the size or lines of code for a repository. However, you can install an extension for Google Chrome that will display the size. Follow the instructions below.
- Open Chrome and go to: https://chrome.google.com/webstore/search/github%20repository%20size
- Click the "Add to Chrome" button for the GitHub Repository Size extension
- Return to the project page in GitHub. You should now see the repository size next to license type. Record the size in the rubric.
Issue tracker
An active issue tracker should highlight key issues that clients and developers have raised, and show that they are being addressed.
- Click on the "Issues" tab, which should be next to "<> Code". (Note: If you do not see this tab, then no issues are logged in Github).
- OpenMRS uses a separate issue tracker.
- Click the link to openmrs.org located near the top of the repository page.
- Scroll to the bottom and click the "OpenMRS Issue Tracking" link.
- Scroll to the table labeled "Two Dimensional Filter Statistics: All JIRA Tickets" located near the bottom of the page.
- Use this to answer the rubric questions below.
- How many open ("ready for work") issues are there?
- How many closed issues are there?
- Scroll to the top to see a list of Curated Introductory Tickets. When was the third issue opened?
- Browse through other issues in the table, and click on some of the cells, to assess whether issues are actively being added and resolved. Record this in the rubric.
New contributor
A healthy project should welcome new contributors. For example, there should be links to "getting started" pages and information on ways to get involved. These pages, in turn, should have more detail on how to become involved, and how to connect with the community.
- Browse the GitHub repository and associated links. Are there signs that the project welcomes new contributors?
- Indicate which of the following are present and include links in the rubric.
- Note: For OpenMRS you will find two links quite useful: one at the top to openmrs.org and one near the bottom to the OpenMRS wiki.
- Are there instructions to download and install the development environment?
- Are there communication mechanisms, such as IRC, listserves, meeting notices, etc. and instructions on how to access them?
- Is there a discussion platform? If so, are there recent posts and responses?
- Is there Web presence? This might include information about the project, how to get started as a developer, links to blogs, links to IRC logs, links to pages that contain information about coding standards and the code submission process.
- Record your findings in the rubric.
Community norms
How community members interact with one another is important, especially for students. You do not want to point students to a project that advocates or permits lewd and unprofessional behavior.
- Some projects have a "Code of Conduct", but others do not. Such codes are not in a standard location, so you might find it more quickly with a Google search.
- For OpenMRS, look in the "Developer Guide" (link along the left side in the OpenMRS wiki) and then choose "Conventions".
- Review some actual interactions for any rude or inappropriate behavior. This could be time consuming since you must first find the type of communication typically used by the community, and then find and review interactions. Choose two topics with at least 5 members and 15 or more replies.
- For OpenMRS, click the "TALK" link at the top of the OpenMRS wiki page.
- Record the following in the rubric.
- Three observations about the project's Code of Conduct.
- Three observations about communication that occur in the community. Is there any sign of rude or inappropriate behavior?
User base
A project will not thrive without a core user base of clients who use the project on a day-to-day basis. They give the development team necessary feedback about the project, what works, what doesn't, and what new features they want. If no one uses the project, then developers are more likely to abandon it.
- Browse the repository and related links, and record your answers to the following in the rubric.
- Does there appear to be a user base?
- Are there instructions for clients to download and set up the software?
- Are there instructions for how to use the software?
Deliverables
POSSE Participants: On your user wiki page, create a section with the Project Evaluation Rubric that describes your evaluation of OpenMRS as a suitable project for your course.
Notes for Instructors
The remaining sections of this document are intended for the instructor. They are not part of the learning activity that would be given to students.
Assessment
- For a more introductory class, assessment can be based on simply answering the question included above to evaluate OpenMRS. This generally requires nothing more than being able to point and click and record the correct information. Students will get a simple view of evaluation in one context.
- For more advanced students, possible extensions include:
- Provide the activity as shown above, but have students evaluate another HFOSS project, perhaps one not on GitHub.
- Have students assess (and compare) several HFOSS projects.
- Add assessment questions that require interpretation or comparison of data for various criteria.
- This activity could lead to a larger discussion or reflection about the general problem of product evaluation, selection, and comparison. Those issues are relevant whether the product is FOSS, commercial, or developed in-house.
- This activity could also prompt discussion of measurement problems including qualitative vs. quantitative measures, development of frameworks for evaluation, and weighting of criteria to reach an overall evaluation conclusion
The table below provides an outline of a rubric reflecting the recommended evaluation criteria.
Evaluation Factor | Level (0-2) |
Evaluation Data |
---|---|---|
Licensing | ||
Language | ||
Level of Activity | ||
Number of Contributors | ||
Product Size | ||
Issue Tracker | ||
New Contributor | ||
Community Norms | ||
User Base | ||
Total Score |
Comments
- These criteria are general, but the specific ways to evaluate each one will vary by project and forge. OpenMRS provides a good example for evaluating each criterion for projects on GitHub. Projects on other forges will require different approaches to evaluate many of the criteria.
- FOSS projects tend to have similar structures. If you repeat this evaluation for several projects, it gets easier and quicker, since you know what to look for. (A bit like learning multiple programming languages.)
Variants and Adaptations
POGIL-style combined FOSS Field Trip and Project Evaluation used by Chris Murphy in his FOSS Course, UPenn, Murphy.
Additional Information
- Explore this list of HFOSS Projects that may be of interest.
- Read the SIGCSE paper on evaluating FOSS projects
- Watch these videos introducing the FOSS project evaluation criteria:
- Other sources that may help you select a project include:
- How to Tell if a FLOSS Project is Doomed to Fail or a summarized version: Why your open source project is failing
- Producing Open Source Software (2017) by Karl Fogel is a great reference for many topics. Chapter 2, Getting Started, discusses things a project should address to be successful. That chapter can also be read as a checklist for things a project should have completed if you are considering being a contributor.
ACM BoK Area & Unit(s) |
SE/Software Project Management, SP/Professional Ethics, SP/Intellectual Property, SP/Professional Communication |
---|---|
ACM BoK Topic(s) |
|
Difficulty |
Easy |
Estimated Time to Complete |
60-90 minutes |
Environment / Materials |
|
Author(s) |
Darci Burdge, Greg Hislop, Michele Purcell |
Source | |
License |
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License |
Suggestions for Open Source Community
None at this time.