class: center, middle # CSCI-UA 480,: OSSD ## Open Source Software Development
## Course Logistics .author[ Instructor: Joanna Klukowska
] .license[ Unless noted otherwise all content is released under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). ] --- ## What is Open Source? Or, - what do you think open source is / is not? - how do you use open source? - why do you use open source? - do you contribute to open source? - why do people write open source software? - why do companies use open source software? --- ## Who are we? In this class you will be working a lot with people sitting around you. You may know some of them, but definitely not all. -- Pair up with someone who you do not know (from a previous class, club, internship, dorm, ...) or at least do not know well! -- Find out the following information about the other person - their name - their major/minor and year in college - why did they sign up for this course - one strange or unusual fact about them After 5-8 minutes, we will go around the room and each of you will introduce their partner to the class. --- name:course ## What is this course? -- .large[.centered_80[ Open Source Software Development ]] --- template:course .large[.centered_80[ Open Source .red[Software] Development ]] -- __Software is a set of instructions, data, or programs__ used to operate a computer and execute specific tasks. In simpler terms, software tells a computer how to function. It’s a generic term used to refer to applications, scripts, and programs that run on devices such as PCs, mobile phones, tablets, and other smart devices. Software contrasts with hardware, which is the physical aspects of a computer that perform the work.
.small[.right[[from Webopedia article, retrieved Jan. 17, 2023](https://www.webopedia.com/TERM/S/software.html)]] -- __Software is a set of computer programs and associated documentation and data.__ This is in contrast to hardware, from which the system is built and which actually performs the work.
.small[.right[[from Wikipedia article, retrieved Jan. 17, 2023](https://en.wikipedia.org/wiki/Software)]] --- template:course .large[.centered_80[ .red[Open Source] Software Development ]] -- Open-source software comes with a free software license, granting the recipient the rights to modify and redistribute the software.
.small[.right[[from Wikipedia article, retrieved Jan. 17, 2023](https://en.wikipedia.org/wiki/Software)]] -- Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria: ... (ten criteria follow)
.small[.right[[from Open Source Initiative page, retrieved Jan. 17, 2023](https://opensource.org/osd)]] -- .left-column2[ [_What is Open Source_](https://youtu.be/7c0IrsDsNaw) by a few Mozzillians (2:51 min)
] .right-column2[ [_What is Open Source_](https://www.youtube.com/watch?v=a8fHgx9mE5U) explained in LEGO (4:40 min)
] --- template:course .large[.centered_80[ Open Source Software .red[Development] ]] --- template:course .large[.centered_80[ Open Source .red[Software Development] ]] -- Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.
.small[.right[[from IBM, _What is Software Development_, retrieved Jan. 21, 2023](https://www.ibm.com/topics/software-development)]] -- Software development is the process programmers use to build computer programs. The process, also known as the Software Development Life Cycle (SDLC), includes several phases that provide a method for building products that meet technical specifications and user requirements.
.small[.right[[from Indeed, _What is Software Development_, retrieved Jan. 21, 2023](https://www.indeed.com/career-advice/career-development/what-is-software-development)]] --- ## This Course This course attempts to prepare students to become active participants in open source projects (and, to the large extent to any software project that requires collaboration with a community of people). -- Topics to be discussed (order will differ): * collaborative nature of free and open source projects, * community structure, * a brief history of free and open source development, * an in-depth look at different types of free and open source projects, * the study of a few tools that are essential in free and open source development, * licensing and intellectual property, * types of contributions (programming and non-programming), * use of open source software in industry, government, non-profit organizations, etc * ... -- .big[.centered_80[.standout[.center[ __The students are expected to contribute to existing open source projects.__ ]]]] --- ## This Course The students: * mostly independent work (often in groups) of exploring and learning * regular class discussions (participation matters a LOT) * regular reading and writing assignments (to document what you are working on) * regular contributions (small and large, code and not) -- The instructor: * sets topics to be discussed (suggestions are welcome) * coordinates the class discussion * creates assignments * coordinates assessment * will not be able to answer many of students' questions --- ## Course Website * URL: https://cs.nyu.edu/~joannakl/ossd_s24/ This page contains the syllabus and daily summaries as well as loads of links to all other resources and services you will need for this class. -- * Github repository: https://github.com/joannakl/ossd Throughout this semester, you can become active contributors to the course website: reporting and fixing problems, suggesting content, etc. --- ## Weekly blogs / journals - Each student has a public repository for the course related blog. - General blog template repository: https://github.com/ossd-s24/XXX-weekly - General blog template site: https://ossd-s24.github.io/XXX-weekly/ - (XXX in the above is your GitHub username.) - Each week (by Sunday night) a new post should be added - answer assigned prompts for that week (if any) - reflect on reading assignments, class discussions, invited talks, activities, etc. - list all (if any) contributions that you made that week --- ## Ed ### course message board / discussion / reporting / logging - not an open source tool, but handy for communication - you should be automatically added to the site since the roster is synchronized with Albert, you can access it directly at https://edstem.org or go through Brightspace -- - when posting, make sure you select an appropriate channel that matches the topic/reason for your post/question - __General__ channel will can be used for saying hi, and conversations that do not require answers in general - ask course related questions in the __Questions__ channel - ask questions about blogs in the __Blogs__ channel - additional channels will be created as we go through various activities -- - organize the discussion so it makes sense - respond to questions in student/instructor answer boxes - comment on questions, or ask follow-up questions in the comments below the original question - the above is an important distiction and a good practice for communication with other communities --- ## Types of Contributions - non-code contributions to - non-code projects - code projects - non-code contributions - small (fixing a typo or rewriting something for clarity) - larger (adding paragraphs, redesiging/restructuring articles/documentation) - large (creating an article, adding instructions / documentation) - code contributions to - non-code projects (for example a website) - code project --- ## Examples of Success Stories - California Design System project, the students' work has been mentioned on the State of California Office of Digital Innovation blog [Working in the open on the California Design System](https://digital.ca.gov/blog/posts/working-in-the-open-on-the-california-design-system/) - Open Library Project, the students' work has been mentioned in the Open Library Blog, [It takes a Classroom to build an Open Library](https://blog.openlibrary.org/2022/06/30/it-takes-a-classroom-to-build-an-open-library/) - Two students from Spring 2023 semester were named among _top contributors_ to the freeCodeCamp project, [freeCodeCamp's Top Open Source Contributors of 2023](https://www.freecodecamp.org/news/top-open-source-contributors-2023/) - Another student from Spring 2023 became one of the top 50 contributors to scikit-learn project and was asked to join their triage team. - Two strudents from Spring 2023 submitted three separate patches to the [Linux kernel](https://git.kernel.org/). -- I hope some people from this semester will join the above list :)