class: center, middle ## CSCI 395.86 Open Source Software Development
## Project Evaluation ### (or, is a project right for you?) .author[ Stewart Weiss
] .license[ Unless noted otherwise all content is released under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by/4.0/). ] --- ## What to Consider: A Synopsis -- - Project documents -- - what is there, how complete are they, how hard to follow -- - Project tools and technology -- - what issue tracker do they use, what communication channels, what languages, tools in general, development environment -- - Project activity -- - how active is the community, lots of issues and pull requests, many questions asked and answered -- - Issue tracking -- - are issues triaged and tagged, are they marked for newcomers, do they all look hard -- - Community responsiveness -- - are pull requests merged quickly, are issues talked about, are questions answered timely -- - Community welcomeness -- - is the community welcoming, is it newcomer-friendly, is the conduct helpful and respectful --- ## The Project Documents - Make sure they are all there. That is not enough. Need to inspect them. -- - `README`: __Read it!__ Is it - easy to follow? - designed for beginners to understand? - thorough - says where to find everything else, etc? -- - `LICENSE` (and/or `COPYING`) - Without this this project is not open source. __Pick a different project.__ - Which license? Is there a CLA with it? A DCO? -- - `CONTRIBUTING`: __Read it!__ Is it - easy to follow? - designed for beginners to understand? - thorough - have style guides, coding guides, all procedures detailed? -- - `CODE OF CONDUCT`: __Browse it!__ - If it missing it is not a good sign. __Pick a different project.__ --- ## Other Project Documents? - Are there other important documents that can make or break it for you? -- Maybe. What about: - `INSTALLATION` - Are the instructions easy for newcomers? - Do you understand them? - If it is a real candidate, try to install it. --- ## Tools and Technology - Various questions about the code and languages: -- - Can you program in the primary languages of the project? - Can you read code in those languages? - How hard is it to understand the project code? Is it a large code base? - Does the project depend on external additional software modules such as graphics libraries? - Do you need to have specialized knowledge to work on this project? -- - Find the issue tracker. -- - Is it in the repository or elsewhere? - Is it triaged? - Are issues tagged? -- - What are the asynchronous channels used in the project? -- - Do they use email? - Do they use IRC or some other type of chat that has an asynchronous mode such as _Slack_? - Is there a discussion board? --- ## How Active is This Project? - This is the million-dollar question. You need a way to assess how active it is. - Many questions to answer. -- - How recent are the last few commits? -- - How many people are maintaining the project? -- - How many contributors has the project had in the past year? in the past few months? -- - How long do issues stay open? -- - How long do pull requests/merge requests stay open? -- - How many issues are currently open? -- - Is there a lot of discussion about issues and pull requests? -- - Stay away from projects with small staff with long periods of inactivity. These people have jobs or other obligations that keep them from handling your contributions in the time frame you want. --- ## Issues and Issue Tracking - You want a project that makes it easy for you to jump in and find a good issue on which to work. -- - Are the issues tagged for easy filtering? -- - Are they marked with tags like _First-Timers Only_, _Newbie_, _Good First Issue_, _Easy_, and so on? -- - Are there detailed descriptions, and do they require very detailed descriptions? -- - Do they have an __Assignee__ field so that you will know if they are taken? -- - Are there long discussions that can be read for some of the issues? Read them! Read the conversations about __closed issues__. --- ## Community Responsiveness - Responsiveness is not the same as welcomeness. How long does it take to get a response, regardless of its tone? -- - Do the people in this project respond quickly to questions in general. such as how to install, or a question about ambiguous documentation? -- - Do the people respond to questions about existing issues? -- - Do they respond to submitted pull requests or to questions before pull requests are submitted? -- - In conversations, do people address the questions or do they skirt them? --- ## Community Welcomeness - You should not become involved in a toxic community or in one that _feels_ toxic to you. __Read the various discussions and conversations, especially the long ones.__ - Look at the closed issues and read their conversations. -- - Is the project's community welcoming? Are their communications not just polite, but friendly, and maybe even __understanding__? -- - Are responses generally constructive? -- - Do the conversations and discussions adhere to the Code of Conduct? -- - Do people use civil language? -- - Do they refrain from personal attacks? -- - Do maintainers thank people for their contributions? -- - Are you afraid to reach out, or are you intimidated? You need to decide if it is because of something in the community or if it is just your own anxiety or fear or shyness. You must overcome it and see what happens. --- ## Is That It? - After you consider all of the facets of a project and its community, you still need to decide if it is a good fit for you. -- - This is where your goals, skills, resources, and interests enter the picture. Is this project something __*in which you are really interested*__? -- - If not, find a different project because your lack of enthusiasm will win. -- - Do you have the skills to tackle some of the issues that you found? Are there enough open issues that you'll be able to find one or two? -- - If you do not have the time to achieve your goals in this project because there is just too much to learn, find a different project or modify your goals. --- ## Sources 1. VM Brasseur, _Forge Your Future with Open Source_, The Pragmatic Programmers, LLC. 2018. 2. https://opensource.guide/how-to-contribute/#finding-a-project-to-contribute-to ---