May 17, final exam
Mon, 5/13
Project presentations:
- Material UI
- React Native
Wed, 5/8
Project presentations:
- SciKit Learn
- Gatsby
- FreeCodeCamp, team 1
Mon, 5/6
Project presentations:
- Beagle
- Blockly
- Vue.js
Wed, 5/1
Project presentations:
- Caprine
- Home Assistant
- FreeCodeCamp, team 2
Mon, 4/29
Git workflow practice: fetch vs pull, merge vs. rebase, working with multiple branches.
Resources:
- Collaboration Workflow Basics slides by Stewart Weiss
- Atlassian BitBucket Tutorial: Fetching
Wed, 4/24
Workshop day
Mon, 4/22
Mini-exam 4
Git discussion: merge vs. rebase (what are they, how are they different, when to use which).
Resources:
-
Git Tutorial: Merging and Rebasing slides by Stewart Weiss
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
Mon, 4/15
Workshop day.
Wed, 4/10
Workshop day.
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
Wed, 4/3
Workshop day.
Mon, Apr. 1
Mini-exam 3 (20 minutes)
Readings:
- Producing Open Source Software by Karl Fogel
- Cathedral and the Bazaar by Eric S. Raymond
- Why Open Source Misses the Point of Free Software by Richard Stallman
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)
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.
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:
- Contributing to Wikipedia
- Wikipedia:Cleanup - minor issues that can be fixed without deeper knowledge on the subject, like broken links, incorrect formatting, etc.
- Wikipedia:Community Portal - This page provides a listing of current collaborations, tasks, and news about English Wikipedia.
- Elsavier guide to contributing
- BBC article Wikipedia blocks hundreds of 'scam' sock puppet accounts from 2015
- 4 tips for creating a Wikipedia article
- How WikiFundi is helping people in Africa contribute to Wikipedia
- How I accidentally wrote a Wikipedia page on a layover in Dublin, 21 Apr 2018, Justin W. Flory
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.
Free image Spring flowers on white background (Free photobank torange.biz) / ©torange.biz
Creative Commons Attribution 4.0 International License.
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:
- Gatsby.js
- Scikit-Learn
- Home Assistant
- Blockly
- FreeCodeCamp
- React
- React (Native)
- Caprine
- Vue.js
Mon, 3/11
Invited speaker: Patrick Masson, General Manager & Director of Open Source Software Initiative (OSI), Linkedin
Wed 3/6
Humanitarian open source and projects for social good.
slides
Mini-exam 2 (20 minutes)
Readings:
-
Humanitarian Free and Open Source Software by Chamindra de Silva
-
Open Source for Humanitarian Action by Brandon Keim
-
Open source job opportunities grow at crisis groups by Kate Chapman
-
11 ways to get involved with Humanitarian FOSS by Heather Leson
-
Five Open Source Projects We Love by John Jones
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)
Mon, 3/4
Snow day. University closed.
Plate XIX of "Studies among the Snow Crystals … " by Wilson Bentley, "The Snowflake Man." Work in public domain.
Wed, 2/27
No in-class meeting.
Two talks to watch in place of the lecture:
- A Crash Course in Open Source Licensing is a YouTube video of a presentation by Kevin Fleming about open source licenses.
- Tom Callaway's Talk on Licenses is a YouTube video of a presentation by Tom Callaway (of RedHat) about patents and licenses entitled "Understanding FOSS licenses (without a lawyer)".
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.
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?
Wed, 2/20
Mini-exam #1
Project evaluation - how to decide if an open source project is a good place for your first contribution.
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.
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:
- Project Evaluation by Stewart Weiss
- Finding a Project to Contribute to, part of the How to Contribute to Open Source published by GitHub
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
Mon, 2/11
- FacebookPanic
- tabi clock
- nopepad
- screen cracker
- memeify
- mood
- seasonal theme
- candela
- email detector
- tickStop
- Joannify
- notepad
Demo session for student browser extension projects:
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
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
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 togit
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:
-
Producing Open Source Software, chapter 3, section on Version Control (pages 52-61)
-
- Getting started (pages 5-18)
- Git Basics (pages 19 - 56)
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
orgitHub
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:
- MDN Browser Extensions documentation
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.
Materials:
- Videos:
-
Open Source Basics by Intel Software
A simple explanation of how open source projects manage change as well as the structure, roles, and terminology of open source software.
-
How to jump start your career in open source by Eric D. Schabell, Red Hat, All Things Open 2018.
Very briefly talks about the main idea in open source.
-
What is Open Source, and Why Should You Care?
This a YouTube video in which Kevin P Fleming gives a brief history of open source software, and talks about open source beyond software, and various ways that students can get involved in open source projects to develop useful and marketable skills.
-
- Readings:
- Producing Open Source Software, , chapter 1 (skim it)
- Producing Open Source Software, , chapter 2
- For Windows/Mac users.
- MarkdownTutorial
- GitHub Markdown Cheatsheet
Due immediately:
- complete this consent form
- complete this questionnaire - if you do not have a GitHub account, create one first
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 theCUSTOMIZE
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 amaster
branch of your repository. - make your first post
- in the
_posts
directory, edit2018-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 replaceYOUR_USER_NAME
with your actual username, of course). - in the
-
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).