Changes

Jump to: navigation, search

DPS909 & OSD600 Fall 2018

17,469 bytes added, 11:59, 30 November 2018
Week 12
** [https://www.youtube.com/watch?v=e41HPOHX9aE On your computer, fix any problems pointed out by your reviewer(s), add the file(s), commit, and push again to update your pull request]
* Real world exampleexamples: ** Filing, Fixing a bug in Filer** Adding a new Feature, Tests, and Docs to Filer - support node's new [https://github.com/nodejs/node/pull/21875 recursive fs.mkdir] in Filer
* [[DPS909/OSD600 Fall 2018 Lab 2|Lab 2]]
 
== Week 4 ==
 
* Learning Licenses: MIT
** [https://choosealicense.com/licenses/mit/ MIT License]
** [https://writing.kemitchell.com/2016/09/21/MIT-License-Line-by-Line.html The MIT License, Line by Line]
** One of the most widely used licenses in Open Source
** Like the BSD License, nothing about patents (created before software was patentable in the US)
** Example software projects licensed under the BSD License:
*** [https://expressjs.com/ ExpressJS]
*** [http://rubyonrails.org/ Ruby on Rails]
*** [https://angularjs.org/ AngularJS]
*** [https://atom.io/ Atom], [https://electron.atom.io/ Electron]
*** [http://getbootstrap.com/ Bootstrap]
*** [https://nodejs.org/ node.js]
*** [https://github.com/photonstorm/phaser Phaser]
*** [https://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]
*** [https://socket.io/ Socket.IO]
 
* More Git
** [https://wiki.cdot.senecacollege.ca/wiki/DPS909_%26_OSD600_Fall_2017_-_Git_Walkthrough Git Walkthrough Part I]
** [[DPS909 & OSD600 Winter 2017 - Git Walkthrough 2| Git Walkthrough Part II]]
** Some basic git commands you should make sure you know how to use:
***<code>git clone</code> - clone an existing repository (i.e., one you've forked on GitHub)
***<code>git status</code> - check what's happening with your repo, working directory, branch info
***<code>git add</code> - add a file, files, or folder(s) of file(s)
***<code>git commit</code> - commit changes in the staging area
***<code>git log</code> - look back at existing commits
***<code>git diff</code> - look at the difference between what's in the working directory and staging area, or between two commits
***<code>git rm</code> - remove a file
***<code>git mv</code> - move or rename a file
***<code>git reset</code> - update the staging area, and perhaps working directory, with files from another commit (e.g., HEAD)
***<code>git checkout</code> - switch to a branch or commit, or create, or get files from a branch/commit
 
== Week 5 ==
 
* [https://github.com/humphd/hacktoberfest-at-seneca-2018 Release 0.2: Hacktoberfest]
** For Tuesday October 9th (Lab 3)
*** First (of 5) PR completed with a Blog Post
*** Submit via https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Student-Submissions
** Add projects that you think are good for other students to https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Interesting-Open-Source-Projects
 
* Merging with git
** Where <code>git branch</code> splits histories apart, <code>git merge</code> brings them back together
** Understanding DIFFs and Patch files
*** <code>git diff</code>, <code>git show</code>, <code>git log -p</code>, etc. to show DIFFs
*** [https://github.com/filerjs/filer/pull/395 Pull Requests] also have links to get the raw [https://patch-diff.githubusercontent.com/raw/filerjs/filer/pull/395.diff .diff] and [https://patch-diff.githubusercontent.com/raw/filerjs/filer/pull/395.patch .patch]
*** [https://blog.humphd.org/vocamus-906/ How to read a DIFF file]
** Types of Merges: Fast Forward, Recursive Merges are the most common
*** <code>--ff-only</code> to force a fast-forward (only the branch pointer is moved, no new commit is created)
*** 3-way merges: two branch commits with a common ancestor (new commit is created with multiple parents)
*** Can have any number of parents though: one of the larges is a 66 commit octopus merge in the Linux kernel
** How to merge
*** start with a clean working directory
**** <code>commit</code> your work if you can; or
**** <code>stash</code> (<code>git stash list</code>, <code>git stash show</code>, <code>git stash pop</code>)
*** checkout the branch you want to merge '''into'''
*** <code>git merge branch_to_merge_into_this_branch</code>
** Various flags and commands to know:
*** <code>git merge --squash</code>
*** <code>git merge --abort</code>
*** <code>git merge --continue</code>
*** <code>git branch -d</code>
** Merge Conflicts
*** Conflict markers <code><<<<<<<<<</code>, <code>=============</code>, <code>>>>>>>>>>>>></code>
** [https://blog.humphd.org/fearless-merges/ Doing big merges in git]
 
== Week 6 ==
 
* Hacktoberfest Updates
** Add any interesting projects you find/work on to [https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Interesting-Open-Source-Projects this list on the wiki]
** Update your Info on the [https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Student-Submissions submissions wiki page] by Monday:
*** Add your Name beside your GitHub username
*** New Pull Request
*** New Blog Post
*** Any Issues you're working on
** [https://github.com/humphd/hacktoberfest-at-seneca-2018/blob/master/data/week01.md Week 1 Summary]
 
* <code>git rebase branch</code>
** Replay commits on a new base branch/commit
** Process goes like this:
*** git finds a common ancestor commit of the branch you're on, and the one you're rebasing onto
*** git calculates DIFFs for each, saves them to disk
*** git checks out the commit you want to branch onto, and begins to replay those diffs one by one
*** if there is a merge conflict, the rebase pauses so you can fix things
*** use <code>git rebase --continue</code> or <code>git rebase --abort</code> to move forward after such a pause
*** use <code>git rebase --skip</code> to ignore the current commit and keep going
** Never rebase commits that are shared publicly in another repo. Only do it on commits you own locally (e.g., a topic branch you are working on)
** Don't use rebase to get rid of commits in a public branch, use <code>git revert commit-sha</code> instead to apply an inverse commit
** If you rebase a branch you've pushed (e.g., for a pull request), when you push, use <code>git push origin branch-name -f</code> (f means force and will overwrite)
** <code>git rebase -i</code> for interactive rebase
*** shows a script of all commits in reverse order (order they will be replayed). You can hand edit this to remove, re-order, or combine commits
** You can squash on the same branch by rebasing on <code>HEAD~n</code> where n is how many commits back from HEAD to go
 
* PRs needing a Rebase
** https://github.com/filerjs/filer/pull/496
** https://github.com/filerjs/filer/pull/437
** https://github.com/filerjs/filer/pull/439
** https://github.com/filerjs/filer/pull/468
** https://github.com/filerjs/filer/pull/545
 
== Week 7 ==
 
* [https://octoverse.github.com/projects.html GitHub 2018 Summary]
 
* Hacktoberfest Week 2
** Update your Info on the [https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Student-Submissions submissions wiki page] by Monday:
*** Add your Name beside your GitHub username
*** New Pull Request
*** New Blog Post
*** Any Issues you're working on
 
* Rebase Review and Demo
 
* Open Source Case Study: Visual Studio Code
** https://code.visualstudio.com/
** https://github.com/Microsoft/vscode
** https://en.wikipedia.org/wiki/Visual_Studio_Code
** Technologies
*** [https://electronjs.org/ Electron]
*** [https://microsoft.github.io/monaco-editor/ Monaco Editor]
*** [https://www.typescriptlang.org/ TypeScript]
*** [https://xtermjs.org/ xterm.js]
*** node.js, express, and hundreds of JavaScript modules
 
* Fixing Bugs in VSCode
** UI Bugs:
*** https://github.com/humphd/vscode/tree/good-first-experience-issue-42726#walkthrough-fixing-a-bug-in-visual-studio-code
*** URL Link Bug: https://github.com/Microsoft/vscode/issues/45515
** Crash Bugs:
*** https://github.com/Microsoft/vscode/issues/47548
*** https://github.com/Microsoft/vscode/issues/49547
** Localization Bug: https://github.com/Microsoft/vscode/issues/49211
 
== Week 8 ==
 
* Hacktoberfest 0.2 Due this Week (Wed Oct 31)
** Finish all 5 Pull Requests + Blog Posts
** Write a 6th and final Blog Post about all of your contributions. Include links to the Bugs you fixed and Pull Requests. Talk about what you learned, your growth through the experience, what went well, what you would do differently next time, and your reflections on Hacktoberfest in general.
** Make sure all PRs and Blog Posts (including 6th conclusion post) are up at https://github.com/humphd/hacktoberfest-at-seneca-2018/wiki/Student-Submissions
 
* 0.3 and 0.4 Releases, Labs 5-10
** Complete 3 larger PRs in external open source projects + 3 PRs in internal OSD/DPS open source run projects
** For 0.3, follow a 2 + 1 pattern: either 2 external and 1 internal, or 2 internal and 1 external.
** For 0.4, follow a 1 + 2 pattern: do the opposite of what you did in 0.3
** Consider working on a project you began working with during Hacktoberfest, though you aren't limited to this.
** PRs for 0.3 and 0.4 are about increasing quality vs quantity. You need to work on larger fixes/features than many of you did for Hacktoberfest. If you want to work on small bugs, you'll need to combine them together.
** Each Monday, a blog post discussing your work from the previous week is due. Link to bugs you are working on, PRs or branches in progress, talk about what you learned, what you're still thinking about, and any plans you have for upcoming weeks.
** You do not need to complete a PR every week for 0.3 and 0.4; though you will need to make progress each week in order to blog, and to stay on track.
 
* [[OSD/DPS Fall 2018 Open Source Project Ideas]]
 
* Open Source Case Study: Redis
** [https://redis.io/ Redis (REmote DIctionary Server)]
** https://github.com/antirez/redis - [https://www.openhub.net/p/redis ~175K lines of code]
** Cross-platform, high performance, in-memory, key/value, data structure database server. Written in mostly in C, as well as Tcl and Lua, with front-ends in just about every language and platform.
** [https://github.com/antirez/redis/blob/unstable/COPYING BSD 3-Clause]
** Started in 2009 by [https://github.com/antirez Salvatore Sanfilippo (antirez)]
** Since 2015, development has been sponsored by Redis Labs (see https://en.wikipedia.org/wiki/Redis_Labs)
** Redis is among the most popular NoSQL databases in the world, and the most popular key/value store. It is used by everyone:
*** Twitter
*** Instagram
*** GitHub
*** StackOverflow
*** Pinterest
*** Snapchat
*** Shopify
*** AirBnB
*** Uber
*** Tumblr
*** Slack
*** Medium
*** Imgur
*** Kickstarter
** Common Use Cases:
*** User Session Cache (e.g., reduce DB lookups for user info, shopping cart data)
*** Full Page Cache (e.g., by URL or route)
*** Queues (e.g., Message Queue, Worker Queue)
*** Counting (e.g., metrics, analytics)
*** Pub/Sub (e.g., chat systems, notifications)
** Redis Tutorial and Walkthrough: https://try.redis.io/
 
== Week 9 ==
 
* https://blog.humphd.org/observations-on-hacktoberfest-2018/
 
* [[OSD & DPS909 Fall 2018 Release 0.3]]
* [[OSD/DPS Fall 2018 Open Source Project Ideas]]
** Make sure you have chosen your projects (both new and existing) and have either filed bugs, or found things to work on. Your blog (due today) should discuss and explain what you plan to do over the coming 3 weeks.
** Spend the time in class talking with people about the projects, filing bugs, doing research, and figuring out your own ways to contribute.
 
== Week 10 ==
 
* Case Study: [https://github.com/prettier/prettier Prettier]
** Web site: https://prettier.io/
** Twitter: https://twitter.com/PrettierCode
** GitHub: https://github.com/prettier/prettier
** [https://www.youtube.com/watch?v=hkfBvpEfWdA James Long introducing Prettier (video)]
** [https://www.youtube.com/watch?v=3p6XR2VeHRw Visualization of Prettier Development (video)]
 
* Using linting and pretty-printing tools in projects
** [https://prettier.io/docs/en/install.html Installing Prettier]
** [https://eslint.org/ eslint]
* Complete your [[OSD & DPS909 Fall 2018 Release 0.3]]
 
== Week 11 ==
 
* [[OSD & DPS909 Fall 2018 Release 0.4]]
 
* 0.4 Project Options:
** Help fix eslint issues in Firefox (talk to Dave if you want to get involved so we can co-ordinate with Mozilla)
** Help fix flake8 issues in Pandas (talk to [https://seneca-open-source.slack.com/team/UCW8B11GD <code>@Alexander Ponomaroff</code>] on Slack if you want to help)
 
* Continuous Integration
** Lots of free-for-open-source services: [https://travis-ci.com/ TravisCI], [https://azure.microsoft.com/en-ca/services/devops/pipelines/ Azure Pipelines], [https://circleci.com/ CircleCI], [https://www.appveyor.com/ AppVeyor], [https://jenkins.io/ Jenkins]
** See also [https://github.com/bleenco/abstruse Abstruse CI], [https://appcenter.ms/ Appcenter], [https://assertible.com/ Assertible], [https://github.com/bosondata/badwolf Badwolf], [http://bitrise.io/ Bitrise], [https://www.browserstack.com/ BrowserStack], [https://buildkite.com/ Buildkite], [https://www.chronoci.com/ ChronoCI], [https://www.codacy.com/ Codacy], [https://codefresh.io/ Codefresh], [https://www.codeship.io/ Codeship], [http://concourse.ci/ ConcourseCI], [https://continuousphp.com/ ContinuousPHP], [https://drone.io/ Drone], [https://ebertapp.io/ Ebert], [https://gocd.io/ GoCD], [https://houndci.com/ HoundCI], [https://nixos.org/hydra/ Hydra], [https://probo.ci/ Probo.CI], [https://semaphoreci.com/ Semaphore], [https://www.shippable.com/ Shippable], [https://www.jetbrains.com/teamcity/ TeamCity], [https://www.visualstudio.com/team-services/ VSTS], [https://app.wercker.com/ Wercker]
 
* Automating build, test, and deploy steps with Travis CI
** https://docs.travis-ci.com/
** https://docs.travis-ci.com/user/for-beginners/
 
* Travis uses YAML for configuration
** YAML Ain't Markup Language (YAML)
** https://en.wikipedia.org/wiki/YAML
** Usually uses the .yml extension
** https://learnxinyminutes.com/docs/yaml/
 
* Stages of a Travis CI Build
** [https://docs.travis-ci.com/user/job-lifecycle/#the-job-lifecycle Stages of Build Lifecycle]
** Adding OS-level dependencies https://docs.travis-ci.com/user/installing-dependencies/
 
* Running Tests per Commit/PR
** https://docs.travis-ci.com/user/languages/javascript-with-nodejs/
** Assumes you want to `npm install` and run `npm test`
** Therefore, you need a working install and test process via `package.json`
 
* Deployment options:
** GitHub and gh-pages
*** https://pages.github.com/
*** https://help.github.com/categories/github-pages-basics/
*** Enable HTTPS https://help.github.com/articles/securing-your-github-pages-site-with-https/
*** Custom 404 page https://help.github.com/articles/creating-a-custom-404-page-for-your-github-pages-site/
*** https://docs.travis-ci.com/user/deployment/pages/
*** https://docs.travis-ci.com/user/status-images/
** [https://docs.travis-ci.com/user/deployment/cargo/ Deploy Rust crates to Cargo]
** [https://docs.travis-ci.com/user/deployment/releases/ Deploy binary releases to GitHub Releases]
** [https://docs.travis-ci.com/user/deployment/heroku/ Deploy web apps to Heroku]
** [https://docs.travis-ci.com/user/deployment/npm/ Deploy node modules to npm]
** [https://docs.travis-ci.com/user/deployment/pypi/ Deploy python packages to PyPi]
 
* Some example .travis.yml files in OSS projects
** https://github.com/Microsoft/vscode/blob/master/.travis.yml
** https://github.com/devtools-html/debugger.html/blob/master/.travis.yml
** https://github.com/brave/browser-laptop/blob/master/.travis.yml
** https://github.com/datalocale/dataviz-finances-gironde/blob/master/.travis.yml
 
== Week 12 ==
 
* News
** event-stream hack
*** https://twitter.com/garybernhardt/status/1067111872225136640
*** https://github.com/dominictarr/event-stream/issues/116
*** https://schneid.io/blog/event-stream-vulnerability-explained/ Hack explained
*** https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident
*** https://blog.tidelift.com/event-stream-100-million-downloads-unmaintained-hacked.-now-can-we-pay-the-maintainers
*** https://tidelift.com/
** LTS for Node Modules - https://medium.com/@nodejs/call-to-action-accelerating-node-js-growth-e4862bee2919
*** https://github.com/nodejs/package-maintenance
*** https://www.npmjs.com/package/readable-stream
*** https://www.npmjs.com/package/mqtt - "MQTT.js is another good example which is used by AWS, Microsoft, and IBM"
** https://arstechnica.com/tech-policy/2018/11/how-i-changed-the-law-with-a-github-pull-request/
** https://humphd.github.io/pretty-effective/
 
* [[OSD & DPS909 Fall 2018 Release 0.4]]
 
* Reading Code to Fix Your Own
** <code>git blame</code>
** GitHub File History
** GitHub Issues, Pull Requests
 
* Examples
** Firefox ESLint - "have any of you dealt with your [https://eslint.org/docs/rules/no-undef no-undef errors] yet? - I am wondering where this 'SpecialPowers' comes from and if it can be ignored" - https://dxr.mozilla.org/mozilla-central/source/testing/mochitest/nested_setup.js#2
** <code>fs.access()</code> - [https://opensource.apple.com/source/cvs/cvs-33.0.1/cvs/src/filesubr.c.auto.html Apple's CVS source], [https://github.com/torvalds/linux/blob/6f0d349d922ba44e4348a17a78ea51b7135965b1/fs/configfs/file.c#L366-L420 Linux file.c]
** "How to structure a Python CLI?" - [https://github.com/tensorflow/hub/blob/master/examples/image_retraining/retrain.py Tensorflow retrain.py], [https://github.com/google/python-fire Python Fire], [https://github.com/aws/aws-cli AWS cli]
** CreativeCollab, other apps using [https://boardgame.io/#/ boardgame.io]: [https://www.npmjs.com/package/fields-of-arle fields-of-arle], [https://www.npmjs.com/package/agricola agricola]
** mySeneca Extension, learning from [https://github.com/sindresorhus/refined-twitter Refined Twitter]

Navigation menu