Difference between revisions of "DPS909 & OSD600 Winter 2018"

From CDOT Wiki
Jump to: navigation, search
(Week 1)
 
(23 intermediate revisions by the same user not shown)
Line 44: Line 44:
 
** [https://www.ic.gc.ca/eic/site/cipointernet-internetopic.nsf/eng/h_wr02281.html Copyright Guide]
 
** [https://www.ic.gc.ca/eic/site/cipointernet-internetopic.nsf/eng/h_wr02281.html Copyright Guide]
 
** In a software project, there can be many copyright holders (e.g., many contributors), or all contributors may assign their copyright to the project (e.g., [https://en.wikipedia.org/wiki/Contributor_License_Agreement CLA], which we'll cover later)
 
** In a software project, there can be many copyright holders (e.g., many contributors), or all contributors may assign their copyright to the project (e.g., [https://en.wikipedia.org/wiki/Contributor_License_Agreement CLA], which we'll cover later)
 +
 +
== Week 2 ==
  
 
* Licenses
 
* Licenses
Line 70: Line 72:
 
** Approved licenses by the Open Source Initiative: https://opensource.org/licenses
 
** Approved licenses by the Open Source Initiative: https://opensource.org/licenses
 
** Choose a License: https://choosealicense.com/
 
** Choose a License: https://choosealicense.com/
 +
 +
* Learning Licenses: BSD
 +
** Family of Licenses, including [https://opensource.org/licenses/bsd-license.php 2-Clause BSD], [https://opensource.org/licenses/BSD-3-Clause 3-Clause BSD (aka New BDS)], [https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29 4-Clause BSD]
 +
** [https://www.freebsd.org/doc/en/articles/bsdl-gpl/article.html "Why you should use a BSD style license for your Open Source Project"]
 +
** BSD Licenses code is usually compatible with other open/closed code, when you want to mix them.
 +
** Example software projects licensed under the BSD License:
 +
*** Many Google Projects, including [https://developers.google.com/v8/ V8], [https://www.chromium.org/Home Chromium], [https://golang.org/ Go]
 +
*** [https://d3js.org/ D3.js]
 +
*** [https://www.djangoproject.com/ Django]
 +
*** [https://www.nginx.com/ nginx]
 +
*** [http://ex-vi.sourceforge.net/ Vi]
 +
*** Facebook uses a modified version of the 3-Clause BSD they call [BSD + Patents license].  This has been controversial
 +
**** [https://opensource.org/licenses/BSDplusPatent BSD + Patent]
 +
**** [https://github.com/facebook/react/blob/master/PATENTS PATENTS in React]
 +
**** https://code.facebook.com/posts/112130496157735/explaining-react-s-license/
 +
** Summary:
 +
*** You need to retain the license and copyright notice
 +
*** You can use it commercially or non-commercially (privately)
 +
*** You can distribute it freely
 +
*** You can modify it freely
 +
 +
* [[DPS909/OSD600 Winter 2018 Lab 1|Lab 1]]
 +
 +
== Week 3 ==
 +
 +
* TODO:
 +
** Finish [[DPS909/OSD600 Winter 2018 Lab 1|Lab 1]]
 +
** Complete [[OSD & DPS909 Winter 2018 Release 0.1|Release 0.1 Part A]]
 +
** Start Learning Git, GitHub
 +
 +
* Source Code Reading: by reading code we didn't write, we often learn things we didn't know were possible.
 +
** Consider libphonenumber's <code>Leniency</code> type and Constant-Specific Methods in Java.  ENUMs can define an abstract method and override them with a concrete method in each constant
 +
*** [https://github.com/googlei18n/libphonenumber/blob/0068d861a68d3d4612f7bf8646ab844dd3cefce5/cpp/src/phonenumbers/phonenumbermatcher.h#L54-L74 C++ impl]
 +
*** [https://github.com/googlei18n/libphonenumber/blob/3db7670b42c4c03c3d69d9ed43cfe15fde978c5e/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L473-L570 Java impl]
 +
** Consider <code>\p{...}</code> Unicode categories in Regex
 +
*** https://mothereff.in/regexpu
 +
*** https://en.wikipedia.org/wiki/Unicode_character_property
 +
*** <code>/\p{Sc}/u;</code> becomes <code>/[\$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BF\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]/;</code>
 +
** [https://blog.safia.rocks/post/170269021619/tips-for-reading-new-codebases Tips for reading new codebases (blog post by Safia Abdalla)]
 +
 +
* '''Introducing [http://git-scm.com/ git]'''
 +
** [[DPS909 & OSD600 Fall 2017 - Git Walkthrough | Git Walkthrough - Basics]]
 +
 +
* '''Readings/Resources'''
 +
** Courses on [http://www.senecacollege.ca/lynda/ Lynda]
 +
*** [https://www.lynda.com/Git-tutorials/Git-Essential-Training/100222-2.html?srchtrk=index%3a0%0alinktypeid%3a2%0aq%3agit%0apage%3a1%0as%3arelevance%0asa%3atrue%0aproducttypeid%3a2 Git Essential Training]
 +
*** [https://www.lynda.com/Git-tutorials/Up-Running-Git-GitHub/409275-2.html?srchtrk=index%3a0%0alinktypeid%3a2%0aq%3agit%0apage%3a1%0as%3arelevance%0asa%3atrue%0aproducttypeid%3a2 Up and Running with Git and GitHub]
 +
** Books
 +
*** [http://git-scm.com/book Pro Git]
 +
*** [http://www.ericsink.com/vcbe/index.html Version Control by Example, online book]
 +
** References
 +
*** [http://gitref.org/ Git Reference]
 +
*** [http://marklodato.github.com/visual-git-guide/index-en.html Visual Git Reference]
 +
*** [http://sixrevisions.com/resources/git-tutorials-beginners/ Overview of Git Tutorials (many good ones)]
 +
*** [http://help.github.com/ Github documentation]
 +
*** [https://desktop.github.com/ GitHub Desktop]
 +
 +
== Week 4 ==
 +
 +
* Learning Licenses: MIT
 +
** [https://opensource.org/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://aframe.io/ A-Frame]
 +
*** [https://angularjs.org/ AngularJS]
 +
*** [https://atom.io/ Atom], [https://electron.atom.io/ Electron]
 +
*** [http://getbootstrap.com/ Bootstrap]
 +
*** [http://brackets.io/ Brackets]
 +
*** [http://jquery.com/ jQuery]
 +
*** [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 Continued Git Walkthrough]
 +
** [[DPS909 & OSD600 Winter 2017 - Git Walkthrough 2| Git Walkthrough 2]]
 +
** Keeping up-to-date:
 +
*** Remotes
 +
*** pull vs. fetch
 +
 +
* [[DPS909/OSD600 Winter 2018 Lab 2|Lab 2]]
 +
 +
== Week 5, 6 ==
 +
 +
* Fixing a bug in VSCode
 +
** https://github.com/Microsoft/vscode/wiki/How-to-Contribute for instructions on building, running vscode
 +
** https://github.com/Microsoft/vscode/issues/42726
 +
** https://github.com/humphd/vscode/tree/good-first-experience-issue-42726#walkthrough-fixing-a-bug-in-visual-studio-code
 +
** https://developers.google.com/web/tools/chrome-devtools/ for tips on using the Developer Tools
 +
 +
* [[OSD600 and DPS909 Winter 2018 Lab 3|Lab 3]]
 +
* [[OSD & DPS909 Winter 2018 Release 0.2|Release 0.2]]
 +
 +
== Week 8 ==
 +
 +
* Guest: [https://github.com/DavidBruant David Bruant]
 +
 +
* Open Data, Open Standards, Open Soure
 +
* Building a Business on Open?
 +
* Open Standards: [https://en.wikipedia.org/wiki/ECMAScript ECMAScript] and [https://whatwg.org/ WHATWG], [https://www.w3.org/ W3C]
 +
* How and Why to Read a Standard: example [https://url.spec.whatwg.org/#url-class URL()]
 +
* Participation in Standards Processes: maintenance (e.g., docs, correcting things) and evolution (e.g., adding new aspects, standardizing ad hoc things)
 +
* Case studies: iframe @sandbox "parallizable"
 +
* Comparing “big” vs. “small” contribution: working on standards is about as big as it gets.
 +
 +
* Discussion open source (and technology in general) as it exists in Europe vs North America, trends, opportunities, etc.
 +
 +
* TODO
 +
** More on [https://blog.humphd.org/on-standards-work/ Open Standards]
 +
** [[OSD600 and DPS909 Winter 2018 Lab 4|Lab 4]]
 +
** Get started on [[OSD & DPS909 Winter 2018 Release 0.2|Release 0.2]]
 +
 +
== Week 9 ==
 +
 +
* Modern JS
 +
** https://developer.mozilla.org/en-US/docs/Web/JavaScript
 +
** https://nodejs.org/api/
 +
** http://exploringjs.com/es6.html
 +
** https://eloquentjavascript.net/
 +
** http://exploringjs.com/es2018-es2019/
 +
 +
* Learning Front-End and Open Source Collaboration, Case Study Part I
 +
** https://github.com/humphd/bridge-troll
 +
** https://www.ontario.ca/data/bridge-conditions
 +
** https://www.npmjs.com/
 +
** https://babeljs.io/
 +
** https://eslint.org/
 +
** https://prettier.io/
 +
** https://parceljs.org/
 +
** http://editorconfig.org/
 +
 +
* TODO
 +
** [[OSD600 and DPS909 Winter 2018 Lab 5|Lab 5]]
 +
** Continue working on [[OSD & DPS909 Winter 2018 Release 0.2|Release 0.2]]
 +
 +
== Week 10 ==
 +
 +
* Testing
 +
** Unit Tests
 +
** Regression Tests
 +
** Performance Tests
 +
** Integration Tests
 +
** Fuzz Tests
 +
** Stress/Load Tests
 +
** Smoke Tests
 +
 +
* JavaScript Testing Examples
 +
** https://medium.com/welldone-software/an-overview-of-javascript-testing-in-2018-f68950900bc3
 +
** Frameworks - [https://mochajs.org/ mocha], [https://facebook.github.io/jest/ jest]
 +
** Assertions - [http://www.chaijs.com/ chai], [https://facebook.github.io/jest/docs/en/expect.html Jest expect]
 +
** Test Runners - [https://karma-runner.github.io/2.0/index.html karma]
 +
** Browser Environments - [https://github.com/GoogleChrome/puppeteer Puppeteer], [https://github.com/jsdom/jsdom jsdom]
 +
** Code Coverage - [https://gotwarlost.github.io/istanbul/ istanbul]
 +
 +
* Continuous Integration
 +
** Most are free for Open Source projects
 +
** [https://travis-ci.com/ Travis CI]
 +
** [https://www.appveyor.com/ AppVeyor]
 +
** [https://circleci.com/ CircleCI]
 +
** Example in VSCode https://github.com/Microsoft/vscode/pull/46117
 +
 +
** Writing tests in Bridge Troll
 +
 +
== Week 11 ==
 +
 +
* [https://github.com/humphd/browser-laptop/tree/good-first-experience-issue-10554#walkthrough-fixing-a-bug-in-the-brave-browser Case Study: Fixing a bug in Brave]
 +
* Read other students' open source experience fixing bugs for 0.2.  [http://zenit.senecac.on.ca/~chris.tyler/planet/ Lots of great stories, lessons.]
 +
* [[OSD600 and DPS909 Winter 2018 Lab 6|Lab 6]]
 +
 +
== Week 12 ==
 +
 +
* More tests on Bridge Troll
 +
* Finish [[OSD600 and DPS909 Winter 2018 Lab 6|Lab 6]]
 +
 +
* [https://wiki.cdot.senecacollege.ca/wiki/OSD_%26_DPS909_Winter_2018_Release_0.3 Release 0.3]
 +
 +
== Week 13 ==
 +
 +
* 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/customizing-the-build/#The-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`
 +
 +
* Deploy to 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/
 +
 +
* 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
 +
 +
* Custom Domians
 +
** https://help.github.com/articles/using-a-custom-domain-with-github-pages/
 +
** $0.99 .ca domains https://cira.ca/
 +
 +
* [[OSD600 and DPS909 Winter 2018 Lab 7|Lab 7]]

Latest revision as of 13:36, 11 April 2018

Week 1

  • Some questions:
    • When you hear "open source," what comes to mind?
    • On a scale from 1 (not at all) to 5 (very)...
      • How comfortable are you working with technology you've never seen before?
      • How curious are you about how things work?
      • How likely are you to stick with a problem when it gets hard to solve?
      • How likely are you to ask for help when you get stuck?
      • How likely are you to pause your own work in order to help someone else who is stuck?
      • How self-motivated are you?
      • How self-directed are you?
  • How to have Success in this course:
    • Willingness to be lost and not panic
    • Willingness to put yourself out there, jump in
    • Curiosity
    • Being driven, persistence
    • Willingness to ask for help
    • Willingness to give others help
    • Independent learning
    • Doing more than the bare minimum
  • Let's talk about Copyright and Open Source Licenses
      • IANAL: "I Am Not A Lawyer"
      • We're going to explore licensing from the POV of a developer participating in open projects
  • Copyright (Copyright in Canada video)
    • Who created it, "owns" it.
    • Set of exclusive rights granted to the work's creator
    • "The right to copy," to produce or reproduce a work or substantial portion thereof
    • Copyright is automatic when a work is created, you don't have to register it.
    • Copyright in Canada
    • Copyright Guide
    • In a software project, there can be many copyright holders (e.g., many contributors), or all contributors may assign their copyright to the project (e.g., CLA, which we'll cover later)

Week 2

  • Licenses
    • Rights, privileges, responsibilities, etc. applicable to someone other than the work's creator
    • "Terms and Conditions"
    • These must be granted by a copyright holder

Week 3

Week 4

Week 5, 6

Week 8

  • Open Data, Open Standards, Open Soure
  • Building a Business on Open?
  • Open Standards: ECMAScript and WHATWG, W3C
  • How and Why to Read a Standard: example URL()
  • Participation in Standards Processes: maintenance (e.g., docs, correcting things) and evolution (e.g., adding new aspects, standardizing ad hoc things)
  • Case studies: iframe @sandbox "parallizable"
  • Comparing “big” vs. “small” contribution: working on standards is about as big as it gets.
  • Discussion open source (and technology in general) as it exists in Europe vs North America, trends, opportunities, etc.

Week 9

Week 10

  • Testing
    • Unit Tests
    • Regression Tests
    • Performance Tests
    • Integration Tests
    • Fuzz Tests
    • Stress/Load Tests
    • Smoke Tests
    • Writing tests in Bridge Troll

Week 11

Week 12

  • More tests on Bridge Troll
  • Finish Lab 6

Week 13