CSCI-UA 480 (Open Source Software Development)

Date
Material Covered, Notes, Handouts and Links
Assignments, Homework

May 17, final exam

Class # 28
Mon, 5/13

Project presentations:

  • Material UI
  • React Native

Class # 27
Wed, 5/8

Project presentations:

  • SciKit Learn
  • Gatsby
  • FreeCodeCamp, team 1

Class # 26
Mon, 5/6

Project presentations:

  • Beagle
  • Blockly
  • Vue.js

Class # 25
Wed, 5/1

Project presentations:

  • Caprine
  • Home Assistant
  • FreeCodeCamp, team 2

Class # 24
Mon, 4/29

Git workflow practice: fetch vs pull, merge vs. rebase, working with multiple branches.

activity

Resources:

Class # 23
Wed, 4/24

Workshop day

Class # 22
Mon, 4/22

Mini-exam 4

Git discussion: merge vs. rebase (what are they, how are they different, when to use which).

Resources:

Class # 21
Wed, 4/17

Invited speaker: Kevin Fleming.

Due by the end of this week (4/21):

  • complete the peer evaluations for your group members (link sent out through Piazza)
  • read the inner source article on Wikipedia
  • blog about what you found the most interesting and the most surprising in the talk given by Kevin Fleming in class
  • blog about your personal progress towards the team project: what have you done, what did you learn, what are the tasks that you will be working on next week
  • update the contributions page on your blog (do not include your team contributions there, but make sure that all of your own contributions are there)

Due by the end of this week (4/21) as a team:

  • update the course wiki page for your project

Class # 20
Mon, 4/15

Workshop day.

Class # 19
Wed, 4/10

Workshop day.

Class # 18
Mon, 4/8

  • the Cathedral and the Bazaar discussion, slides

Due by the end of this week (4/14):

  • blog about at least two of the three lessons from The Cathedral and the Bazaar essay listed below (what do you think they mean and what do you think about them):
    • "Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away."
    • "Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong."
    • "When your language is nowhere near Turing-complete, syntactic sugar can be your friend."
  • blog: talk about one of the lessons from The Cathedral and the Bazaar essay that you liked the most and that resonated with you the most (why is it important to you)
  • blog about your personal progress towards the team project: what have you done, what did you learn, what are the tasks that you will be working on next week
  • update the contributions page on your blog (do not include your team contributions there, but make sure that all of your own contributions are there)

Due by the end of this week (4/14) as a team:

  • create a wiki page on the course wiki for your team
  • list the name and github usernames of the team members
  • create a list of contributions that you made so far (these include any community interactions, issue reports, comments on issues, pull request)
    • briefly describe what this contribution was
    • specify who in your team participated in the work that went into that contribution

Class # 17
Wed, 4/3

Workshop day.

Class # 16
Mon, Apr. 1

Mini-exam 3 (20 minutes)

Brief history of open source

Readings:

Due by the end of this week (4/7):

  • read the Cathedral and the Bazaar (the second essay from the book, not the entire book)
  • read chapter 1 in Producing Open Source Software
  • read Why Open Source Misses the Point of Free Software
  • blog about your thoughts based on the above readings:
    • explain (in your own words) the difference between software development following the cathedral model and software development following the bazaar model; which of the two environments do you personally prefer
    • The Cathedral and The Bazaar essay has 19 “lessons”. Pick two of these that you find to be the most intriguing, interesting, telling, or ones that you simply liked. Quote them in your blog and try to explain what they’re supposed to mean.
    • comment on the discussion of free vs. open, in what way are they similar and how are they different?
  • blog about your personal progress towards the team project: what have you done, what did you learn, what are the tasks that you will be working on next week
  • update the contributions page on your blog (do not include your team contributions there, but make sure that all of your own contributions are there)

Class # 15
Wed, 3/27

Workshop day: you should be selecting issues and planning how the group is going to work together.

Last 10 minutes: quick report-out from each group.

Class # 14
Mon, 3/25

Review of some licensing concepts:

  • copyright
  • license
  • public domain
  • fair use

Discussion about OSI and Patrick's presentation.

Open encyclopedia - how does one contribute to Wikipedia, how are the articles moderated and updated, how can you see historical versions of current articles, similarities between open source software projects and Wikipedia

Readings:

Due by the end of this week (3/31):

  • blog about your personal progress towards the team project: what have you done, what did you learn, what are the tasks that you will be working on next week
  • blog about your take on Wikipedia and other projects like that:
    • from your own point of view, what kind of people contribute to Wikipedia
    • do you think you might one day become a regular contributor
    • how will you select the articles to contribute as part of the required contributions for this class?
    • watch and comment on the TED talk that Jimmy Wales gave on the Birth of Wikipedia in 2005 (did you find any ideas and topics that were out of date?)
  • update the contributions page on your blog (do not include your team contributions there, but make sure that all of your own contributions are there)

Due in the next couple of weeks:

  • make contributions to 2-3 articles on Wikipedia (they can be simple typographical or linking fixes or larger edits) - make sure that you create an account and make those contributions using your account, since we will need to verify the edits (put the links to your contributing page on your blog under contributions)

3/18 - 3/22

Spring Break
No classes scheduled.

spring
Free image Spring flowers on white background (Free photobank torange.biz) / ©torange.biz Creative Commons Attribution 4.0 International License.

Class # 13
Wed, 3/13

Project group presentations:

  • what the project is about
  • why you picked that particular project
  • how the group assessed the health of the project
  • what is your plan for getting started

List of projects:

Class # 12
Mon, 3/11

Invited speaker: Patrick Masson, General Manager & Director of Open Source Software Initiative (OSI), Linkedin

Patrick's presentation

Class # 11
Wed 3/6

Humanitarian open source and projects for social good.
slides

Mini-exam 2 (20 minutes)

Readings:

Due by the end of this week (3/10):

  • read Humanitarian Free and Open Source Software by Chamindra de Silva

  • blog about your take on using open source software in projects for social good and with humanitarian goals in mind (do you think such projects are easier or harder to get involved with, do you think involvement in such projects bring more or less prestige to the contributor (compared to other projects), would you want to be involved in a project like that?)

  • pick one of the humanitarian/social good projects that were mentioned in the slides, the articles linked, or anywhere else that you look for projects AND perform the project evaluation (following the same template as you did for previous projects)

  • add a question for Patrick Masson from OSI, Linkedin, to the course wiki
    • add your own question, and enter a number 1 next to it
    • read through existing questions, and up-vote the questions you like (replace the number next to them with a number one higher
    • go back to the page towards the end of the week to cast your vote on additional questions if you like them
  • decide what project you want to work on (propose a new project on Piazza or join one of the proposed projects)

Class # 10
Mon, 3/4

Snow day. University closed.

snow flake
Plate XIX of "Studies among the Snow Crystals … " by Wilson Bentley, "The Snowflake Man." Work in public domain.

Class # 9
Wed, 2/27

No in-class meeting.

Two talks to watch in place of the lecture:

Additional resources:

  • Creative Commons Licenses is the website in which the Creative Commons describes and explains its various licenses.
  • GNU's Summary of Various Licenses is an excellent, comprehensive summary and guide to the various free software and non-software licenses (e.g., for documentation and other intellectual property).
  • choosealicense.com is a website that guides you through a question and answer process to the right license, and then displays the license text.

Due by the end of this week (3/3):

  • Look at the license for the project that you evaluated last week. In your blog, describe (in human readable terms, not legalese), what the terms of that license are (what can one do, what is not allowed, what must one do, etc.).

  • You should work with the project that you evaluated last week (unless, you decided that there is absolutely no chance that you might be interested in working on that project, in which case you should chose one of the projects evaluated by your fellow students - and read their evaluation first!). Locate the instructions for installing development environment. Install the the development environment and verify that it actually works.
    In your blog, report on the experience of installing the dev. environment (did it work, are the instructions detailed enough, can you think about improvements to the instructions, if it failed, what went wrong? did you figure out how to fix it? )

  • (Optional, but strongly recommended) Look for documentation related or newbie kinds of issues in the project that you evaluated. Attempt to fix it and submit a pull request.

Class # 8
Mon, 2/25

Invited speaker: Christos Bacharakis from Mozilla Foundation, Linkedin

Due by the end of this week (3/3):

  • In your blog, reflect on the short presentation given by the invited speaker last week. What new things did you learn (if anything)? What do you think about the Mozilla mission?

Class # 7
Wed, 2/20

Mini-exam #1

Project evaluation - how to decide if an open source project is a good place for your first contribution.

Activity instructions

Due by the end of this week (2/24):

  • add a question for Christos Bacharakis, Linkedin, to the course wiki
    • add your own question, and enter a number 1 next to it
    • read through existing questions, and up-vote the questions you like (replace the number next to them with a number one higher
    • go back to the page towards the end of the week to cast your vote on additional questions if you like them
  • pick an open source project (something that you might be interested in contributing to) and perform a project evaluation on it (following the steps and questions similar to the ones in class)

  • blog about
    • introduce the project that you selected to evaluate (your own, not the one you worked on in class) and explain why you picked it (why is it interesting to you)
    • post your project evaluation (make sure that it is easy to follow by others who may be interested in the same project)
    • add an entry to the course wiki listing the project name, a link to the project website, a link to the project repository and a link to your evaluation page (your blog post)

Mon, 2/18

President's Day.
No classes scheduled.

Class # 6
Wed, 2/13

Invited speaker: Kevin P. Fleming from Bloomberg, Linkedin (postponed till later in the semester)

What makes a good issue report?
Guidance for Writing Issues by Stewart Weiss

What types of characteristics are we looking for in an open source project to contribute to in this class?

Readings:

The list that we produced:

  • active community of users, contributors and core developers
  • friendly community with enforced code of conduct
  • friendly to beginners
  • relevant to the potential contributor's interests
  • familiar to the potential contributor
  • using technologies (including programming languages) that the potential contributor is familiar with
  • good documentation
  • a lot of closed issues
  • recent changes to the codebase
  • list of goals/direction for the future of the project
  • lack of controversy / drama surrounding the project or it's developers

Class # 5
Mon, 2/11

Due by the end of this week (2/17):

  • try to get involved in other groups projects:
    • report issue, file feature requests, comment on design
    • claim reported issues and try to resolve them, make pull requests to the original product
  • blog about your own experience with creating the browser extension, comment on collaborative aspect of it, how easy was it to work with your team members, were you collaborating remotely, did you meet to work on the code together, how were the decisions made about the design of the project, how were you communicating

Class # 4
Wed, 2/6

Finish up with slides on GitHub workflow.

Work in groups of 2-3 students on GitHub Workflow Activity

Due by the end of this week (2/10) :

  • look at the blogs of 3-5 of your classmates (links should be present at the organizations wiki page)
  • if you find any problems (configuration, formatting, factual, …), report issues in the blog repository
  • add the list of reported issues to the list of contributions on your own blog (make the link to the issue you reported)

Due for Monday class (2/11):

  • each team should be ready to give ~5minutes presentation/demo about their own extension

Class # 3
Mon, 2/4

Follow up discussion to browser activity:

  • what should be located in a repository of an open source project?
  • how did you determine if your favorite extension was open source or not?
  • examples of extensions that are open source
  • examples of extensions that are not open source

Version control systems

Slides:

Resources:

  • hands on practice with self-tests to make sure you are doing the right things: gitruler is a tool for self-grading of some basic git activities
    if you are new to git follow the Learn git through Problem Based Learning exercises

  • for resolving some potential future issues with git and GitHub, you might want to keep git-flight-rules on hand
    this project is open for contributions as well

  • Katocoda: Git Version Control - explore different scenarios that may arise and learn how to resolve them. (Note: I have not tried these yet, but they come highly recommended.)

  • some tutorials, cheat sheets and visualizations of how git works: try.github.io

Readings:

Due immediately:

If you answered 0 (0 = never really used git) or 1 (1 = basic user, used git before but would not be able to define most of the terms above and/or is not very confident in their abilities) for the question about your git familiarity, then complete the Learn git through Problem Based Learning exercises

Due by the end of the week (2/10):

  • add a question for Kevin P. Fleming, Linkedin, to the course wiki

    • add your own question, and enter a number 1 next to it
    • read through existing questions, and upvote the questions you like (replace the number next to them with a number one higher
    • go back to the page towards the end of the week to cast your vote on additional questions if you like them
  • make a blog post for this week addressing the following:

    • describe your own contributions to your team's efforts of building your browser extension
    • describe the state of your browser extension project: what progress your team make, what problems you encountered, will you have a working product by the due date

    • describe at least one thing about git or gitHub that you learned this week (something that was new to you)

Class # 2
Wed, 1/30

Create your first open source project (at least, in this class).

Find your team members and make sure you are sitting together so that you can work together.

The instructions for the activity are at Browser Add-on Activity repository.

Readings:

Due by the end of the week (2/3):

  • if you did not complete the in-class activity, work with your team members to finish it (up to and including Part 5)

Due by the end of the following week (2/10):

  • read the Getting Started section of the MDN Browser Extensions

  • with your team members work on the code of your proposed browser extension (make sure that this is a team work with all team members making contributions - keep in mind that individual commits made to the repository are tagged with your username so it is easy for us to identify who is working on what and when)
    Note: you may need to revise your original vision of what this extension will do.

Class # 1
Mon, 1/28

Intro to the class.

Course logistics

Materials:

Due immediately:

Due by next class:

  • watch the talk by Kevin P Fleming
  • install a recent version of Firefox on your computer (if not there already)

Due by the end of the week:

  • read the chapters for the Producing Open Source Software,
  • setup your blog site (this can only be done AFTER you complete the immediate part above)
    • locate your repository in the class organization, it should be called YOUR_USERNAME-weekly
    • edit the _config.yml file and make changes indicated by the CUSTOMIZE comment
    • edit the about.md file to include some information about yourself (make sure that you are using markdown to format this page)

    Note: files are in the gh-pages branch, not a master branch of your repository.

  • make your first post
    • in the _posts directory, edit 2018-02-03-week01.md file to update your first weekly blog post
    • answer the following points in your post (each item should be in its own section)
      • open source (what do YOU think about when you hear the term "open source"? what are some advantages of open vs. closed source, what are some potential problems with open source, why did you decide to register for a class about open source software development?)
      • projects: list names of four open source projects that you regularly use or that influenced you in some way in the past; give brief descriptions for each, explain why you use it and what the alternatives might be (note, the projects do not have to be source code based) (Keep in mind that these blogs are publicly available to anybody who stumbles upon them. Make sure that the posts are appropriate.)

    HINT: look at your blog page after you are done editing to make sure it has the correct content and that the text is formatted the way you intended it to be. Your blog page is at https://nyu-ossd-s19.github.io/YOUR_USER_NAME-weekly/ (after you replace YOUR_USER_NAME with your actual username, of course).

  • add your name to the course Wiki

    The course organization on GitHub contains a private repository called wiki. We will use this for content that needs to be jointly edited by everybody in the class. All of you should have write access to the existing pages and permission to create new pages.

    • go to the existing page called OSSD participants
    • edit it to add your name and some information about you;

      you should list your name, link to your blog, link to your GitHub profile and the name (and link) of your favorite open source project (challenge: pick a project that nobody else listed; you can list more than one) - follow the formatting in my entry if you are not familiar with markdown

    NOTE: With our Wiki anyone can edit any page. This is great for collaborative creation of the pages, but it also comes with great responsibility. Please do not edit anyone else's personal entries. Keep in mind that the software logs all changes and the user that makes them (Have a look at the "History" tab).