This page currently has a lot of broken information - it is participating in class exercise. It should return to its corrent state shortly.

CSCI-UA 480 (Open Source Software Development)

Date
Material Covered, Notes, Handouts and Links
Readings, Assignments, Homework
Class # 28
Thu, 5/3

Exam 2 (first date)

Class # 27
Tue, 5/1

Project presentations:

  • django
  • therasology

Class # 26
Thu, 4/26

Project presentations:

  • zulip
  • moment
  • brackets

Class # 25
Tue, 4/24

Project presentations:

  • qutebrowser
  • phaser
  • jupyter

Class # 24
Thu, 4/19

Complete peer evaluations the link was sent to you through Piazza.

Blog posts for this week:

  • report on team project progress - concentrating on your own contributions to the team

  • look at the license for the project that your team is working on and determine what are the rules established by that license (what can one do, what is not allowed, what must one do)

  • You should also update your "contributions" table with any new contributions (do not include the team work in there).

Presentation content:

  • brief intro to the project
  • how complicated was the installation of development environment
  • what went wrong
  • what went well
  • summary/descriptions of types of contributions that the team made
  • how easy was it to collaborate within the team
  • if you were doing this again, would you pick the same or different project

Class # 23
Tue, 4/17

Team work on projects.

Progress reports.

Class # 22
Thu, 4/12

Linux basics, file system, scripting.

slides (finish from two weeks ago) by Jeffrey Korn from CSCI-GA.2246-001 (Open Source Tools) slides Processes and Filters by Jeffrey Korn from CSCI-GA.2246-001 (Open Source Tools)

slides

Other readings:

Blog posts for this week:

  • report on the rescheduled open data week events, if you attended any

  • report on team project progress - concentrating on your own contributions to the team

  • You should also update your "contributions" table with any new contributions (do not include the team work in there).

Class # 21
Tue, 4/10

Team work on projects.

Progress reports.

Class # 20
Thu, 4/5

Quiz (first 10 minutes of the class)

Workshop day - progress on projects.

Blog posts for this week:

  • report on the rescheduled open data week events, if you attended any

  • a reflection on the invited talk: what do you think about the Google's approach to open source

  • report on team project progress - concentrating on your own contributions to the team

  • Visit the code of conduct document for the Go project. Read the document and explain the benefits of having such a document for a project. Do you think other projects would benefit from having such document? Does the project that your team is working on have a code of conduct document. If so, post the link to it.

  • You should also update your "contributions" table with any new contributions (do not include the team work in there).

Class # 19
Tue, 4/3

Invited speaker: Danna Kelmer

  • currently software engineer at Google.

Class # 18
Thu, 3/29

Linux basics, file system, scripting.

slides by Jeffrey Korn from CSCI-GA.2246-001 (Open Source Tools)

Blog posts:

  • come up with three questions for Danna for Tuesday
  • describe the progress that you group made in working on the project, are you (as an individual) able to actively participate in what the group is working on? what are your specific task in the work on the project?
  • report on any additional contributions
  • report on any open data events that you might have attended this week

Contributions list: in your blog create a file called contributions.md. The document should contain a table with a list of all of your Contributions so far. The table columns should be "week #", "contribution", "contribution type". The first column should just include the week number in which you made your Contributions. The second column should contain the name of the project/site to which the contribution was made and a link to your specific contribution and a brief description ("article edit", "issue reported", "pull request", …). The third column should state what type of contribution in is: "course website", "Wikipedia", "Other".

To incorporate this document into your blog, edit the layouts/default.html document and add

<a href="{{ site.baseurl }}/contributions">Contributions</a>

after line 31 (or after the line that contains the link to the About page, <a href="{{ site.baseurl }}/about">About</a>).


Make sure that you have access to a Linux-like environment:

  • a terminal on Mac is fine
  • a terminal on Linux is fine
  • for Windows, you can use the Ubuntu subsystem, setup a virtual machine or use Cloud 9 (talk to me if you need help with any of that - I have a virtual machine image that you can use, I also have a Cloud 9 team account that I can give you access to).

Class # 17
Tue, 3/27

Workshop day: narrowing down on issues to work on for each team.

Class # 16
Thu, 3/22

Mid-semester course evaluations.


Why did you pick the project you did? What makes good first projects? - class discussion

Humanitarian open source projects. slides

Readings:

Class # 15
Tue, 3/20

Exams returned.

Setting milestones for projects.

Class # 14
Thu, 3/8

Midterm exam

Class # 13
Tue, 3/6

NYC Open Data Week, March 3-10

  • attend at least two different events
  • in your blog describe the event (optional: post a selfie of yourself at the event, make sure that it is clear that you are at that event, alternative: email a picture to Joanna)

Class # 12
Thu, 3/1

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:

  • brackets
  • django
  • jupyter
  • moment
  • PDF.js
  • phaser
  • qutebrowser
  • zulip

Team assesment and plan:

  • Based on the team, what are the strengths and weaknesses of the team in terms of being able to participate in the project you selected? (Use your teammates' blog posts to assess their strengths and weaknesses)
  • Come up with a common meeting time (2 hours block outside of class) to which all team members can commit. Come up with an alternative meeting time (2 hours block outside of
    class) to which all team members can commit - the second time slot will serve as an alternative for weeks during which the first time slot does not work and as a second meeting time during weeks when you need to be able to spend more time working together.
  • Create a list of milestones that you need to achieve in order to be able to successfully contribute to the project you selected.

Setup team repositories:

  • create a team repository with the fork of the project that your team selected
  • create another team repository that will be used for coordinating work on the project (use the project board to set up your milestones)

Class # 11
Tue, 2/27

Invited speaker: Aurelia Moser from Mozilla

slides

Class # 10
Thu, 2/22

no class meeting

Class # 9
Tue, 2/20

  • Website fixes discussion
    • who should verify that the submitted changes work? when should it be verified?
    • who tested their changes before submitting a pull request?
    • how do we test changes in general?
  • Contributions going forward:
    • each small contribution earns you 1 point
    • goal for the end of the semester 20 points for small contributions (you can make more of them, of course)
    • what are contributions:
      • report issues (can be for the course website, but they need to be non-trivial and you cannot be the one solving it), -comment on issues (can be for the course website related issues, but they have to be substantial comments suggesting fixes and such),
      • solve course website related issues and submit a PR that is accepted,
      • contribute to WikiMedia projects,
      • contribute to OpenMaps project,
      • contribute to any Open… non-code writing project
    • limitations:
      • max of 8 points can come from course website related contributions
      • max of 5 points can come from Wikipedia related contributions
    • balance so far:
      • most of you have a one Wikipedia contribution (1 point)
      • most of you have three course website contributions:
        • report an issue (1 point),
        • comment on an issue (1 point),
        • create a pull request for a fix (1 point),
    • whenever you make a small contribution, add it as a last entry in that week's blog under the heading My Contributions This Week - the listing should contain description of your contribution and a link to it
  • The etherpad for today's class.

  • In your group, work on the assigned project:
    • locate information about contributing to the project
    • as you go through the process, have one team-member enter comments on the eherpad under your team's name (the comments should describe the steps you followed, if they worked or not, and if they did not, what happened)
    • one team-member should start working on installing the development environment (this may be trivial or complicated depending on the project) - make sure you include the descriptions of steps and issues you encounter on the etherpad
    • look through the labels used in the project, find a label that suggests that it is a good issue for beginners and then locate all the issues with that label
    • pick one of the issues from the previous step, add a link to it to the etherpad, study the issue, if it is is a bug, are you able to reproduce it, if it has not been verified, try to verify it, if nobody commented on it, see if you can add a constructive comment
    • repeat the previous step for a few issues

Class # 8
Thu, 2/15

git activity - hands on practice

slides

Class # 7
Tue, 2/13

Bug trackers and issue trackers.

slides

Readings:

Code triage:

  • create CodeTriage.com account
  • pick a project or two or three
  • either wait for the emails with issues or start looking at the issues on the project pages
  • triage some reports (Keep in mind that you are working in a real world! Be nice, be professional. )

Class # 6
Thu, 2/8

Project evaluation - hands on activity. Work in groups of 3-4 students.

Class # 5
Tue, 2/6

Version control systems.

slides

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.

  • if you are not comfortable with using git from the terminal, go through the tryGit tutorial

  • make a contribution to Wikipedia or any other WikiCommons project (it can be as small or as large as you wish);

    • create an account on Wikipedia
    • select an article to contribute to
    • make your changes
    • blog about it; describe the following things
      • how you selected the article to contribute to,
      • what the contribution was
      • include the link to the contribution page for your account (in the upper right corner of any page there is a menu with the Contributions as one of the items - when you are logged in, this link shows your contributions

Readings:

  • Producing Open Source Software by Karl Fogel,
    • chapter 3, section on Version Control (pages 52-61)
  • ProGit by Scott Chacon and Ben Straub,
    • Getting started (pages 5-18)
    • Git Basics (pages 19 - 56)

Class # 4
Thu, 2/1

Open Encyclopedia

  • discussion about Tom's presentation
  • reflections about The Cathedral and The Bazaar
  • thinking about projects to which we might contribute
  • Wikipedia as an example of collaboratively developed project
    • how to figure out how to contribute
    • how to contribute
    • where to find ideas for contributions

  • if you have not done so already, go to Piazza and vote for the date of the midterm exam

  • start looking for Wikipedia articles to which you can contribute (these could be small edits that fix broken links or typos, or something much more significant if you feel ready for it); next week you will need to include links to your edits in the blog posts

  • make your next post (due Feb. 4, midnight), try to discuss the following ideas:

    • 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 would you be more comfortable
    • 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.

Class # 3
Tue, 1/30

Invited speaker: Tom Callaway from RedHat

Class # 2
Thu, 1/25

  • read the materials posted for class 1 and 2 (note that some of them may be linked to from the slides).

  • setup your course blog (due Jan. 28, midnight):
    • locate your repository in the class organization, it should be called YOUR_NETID-weekly
    • goto Settings and scroll down to GitHub Pages section
    • switch the None option to master branch
    • edit the about.md file to include some information about yourself (make sure that you are using mardown to format this page)
  • make your first post (due Jan. 28, midnight)
    • in the _posts directory, edit 2018-01-28-week01.md file to update your first week 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?)
      • 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)
      • questions for Tom: come up with two (or more) questions that you would like to ask Tom Callaway from RedHat when he visits the class next week

Class # 1
Tue, 1/23

Intro to the class.

Course logistics

Material:

  • complete this questionnaire - if you do not have a GitHub account, create one first