class: center, middle # CSCI-UA 480.10: OSSD ## Open Source Software Development
## Anatomy of a FOSS Project .author[ Instructor: Joanna Klukowska
] .license[ Unless noted otherwise all content is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). ] --- ## Elements of a FOSS Project ### (or what you should pay special attention to) - the community and its structure - files with information and guidance - tools - issue trackers - communication channels --- ## Community and Its Structure: The Onion Model .left-column2-large[ .center[
] ] .right-column2-small[ .small[ (1) Walt Scacchi. Role Migration and Advancement Processes in OSSD Projects: A Comparative Case Study. 29th International Conference on Software Engineering (ICSE’07). 2007, [PDF](https://www.ics.uci.edu/~wscacchi/Papers/New/Jensen-Scacchi-ICSE-2007.pdf) (2) Y. Ye and K. Kishida. Towards an Understanding of the Motivation of Open Source Software Developers. 25th International Confererence on Software Engineering (ICSE’03). 419-429, 2003. [Web](https://dl.acm.org/doi/10.5555/776816.776867) ] ] --- ## The Onion Model .left-column2[ __Center__ - founder(s) - the person(s) who started the project; they may or may not be involved in the leadership and decision making - BDFL = _Benevolent Dictator For Life_ - general leadership - group of people making decisions about direction of the project (generally based on the community feedback) __Core Contributors__ - most senior and experienced people in the project - provide guidance and mentorship to the newer community members - hold the _commit bit_ - they are able to approve changes made to the project ] .right-column2[ __Non-core contributors__ - make regular contributions - active in issue discussions - provide feedback to the newer members of the community __New contributors__ - people interested in contributing to the project - still learning the structure of the project and how to interact with the community __Users__ - people who use the project ] --- ## Important Files - README - LICENSE (and/or COPYING) - CONTRIBUTING - Code of Conduct - Styleguides - Other - INSTALL / INSTALLATION - CHANGES / CHANGELOG - AUTHORS --- ## Tools: Issue Tracking issue tracking = bug tracking = ticketing system - the _place_ where the project tracks issues related to the project - what are _issues_? - feature requests - feature suggestions - bugs / problems discovered with the code or documentation - improvement suggestions - support questions - discussions about project design - team discussions - how should _you_ use the issue tracker? - first study existing issues (both open and closed), to learn how the community uses the issue tracker - if there is documentation about how to use the issue tracker, study it - follow what you learned above in your own use of the issue tracker for that project --- ## Tools: Communication Channels Communication channels fall into three different categories: -- - __asynchronous__ channels (parties do not need to be connected at the same time) - examples: discussion forums, mailing lists, issue trackers -- - __synchronous__ (parties must all be connected at the same time) - examples: conference calls, video-conferencing, live meetings, meet-ups -- - __partly asynchronous__ channels (provide both synchronous and asynchronous modes) - examples: real-time Chat (IRC[1], Mattermost[2], Rocketchat[3], Slack[4], ... ) .footnote[ 1 IRC is the acronym for Internet Relay Chat. See https://en.wikipedia.org/wiki/Internet_Relay_Chat
2 https://mattermost.org/
3 https://rocket.chat/
4 https://slack.com/ ] --- ## Other Tools - Other tools depend on the project itself - You need to make sure that you are familiar with (or are willing to learn / have time to learn) the tools that the project uses. --- ## 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 ---