Changes

Jump to: navigation, search

DPS909 & OSD600 Fall 2019

10,981 bytes added, 12:07, 24 November 2019
no edit summary
* Fixing a Bug in VSCode Walkthrough:
** https://github.com/humphd/vscode/tree/good-first-experience-issue-42726#walkthrough-fixing-a-bug-in-visual-studio-code
 
== Week 8 ==
 
* Continue working on 0.2
** Discussion of any issues/questions you have
** End of Week 3 Stats:
*** +30,402/-14,751 LOC in 688 files across 178 PRs to 127 Repos. 89 merged (50%) already
** Interesting stories from PR #3
*** [https://semortea.wordpress.com/2019/10/19/contributing-to-react-native/ Ana Garcia]
*** [https://techblob167557444.wordpress.com/2019/10/21/contributing-to-xterm-js/ Miguel Roncancio]
*** [https://minukpark.wordpress.com/2019/10/24/hacktoberfest-2019-pr-3/ Minuk Park]
*** [https://awesomeresponsibility.wordpress.com/2019/10/20/pr-to-microsoft-vscode/ Matthew Clifford]
 
* Discussion of [[OSD & DPS909 Fall 2019 - Release 0.3]] and [[OSD & DPS909 Fall 2019 - Release 0.4]]
** Creating an Open Source Project as a group of 50+
** [https://github.com/Seneca-CDOT/telescope Telescope] project, see the project [https://github.com/Seneca-CDOT/telescope/blob/master/docs/overview.md Overview doc]
** [https://seneca-open-source.slack.com Seneca Open Source Slack] for async communication (sign-up with your @myseneca.ca email)
 
* Wrap-up and Discussion of Hacktoberfest 2019
 
* Discussion of Labs for the rest of the term.
** Every week you'll need to contribute in some way to our open source project. This could be a small PR, reviewing code, adding some docs, writing a test, working in issues, doing research and writing background material, etc.
** Your lab blog post each week should discuss what you did
 
* Readings for this week: [https://people.gnome.org/~jdub/bzr/planet/devel/trunk/ source code for Planet]
 
== Week 9 ==
 
* Hacktoberfest 2019 Stats
** 62 Students and a 95% completion rate (4 or more PRs)
** 246 PRs, with 56% currently merged
** 647 Commits to 881 files
** 32K lines of code added, 14K lines removed
** Languages
*** Most popular: JS/TS (124), Python (25), HTML/CSS (28), C/C++/C# (27), Java (14)
*** New/Interesting: Swift (4), PHP (3), Go (2), Rust (2), and 1 in each of OCaml, PowerShell, Ruby, Elixir, Kotlin, Shell
** Notable Projects:
*** xterm.js, Polymer, Bitcoin, Angular, Ethereum, VSCode, Microsoft (Calculator, React Native Windows, STL), Jest, Facebook, WordPress, node.js, Nasa, Salesforce, Mozilla, Home Assistant, Google, Instacart,
 
* Releases 0.3 - due Friday Nov 15
** Be working on your external PR
** Everyone needs a telescope Issue by the end of the week. We need to make this happen together
** Friday's Lab will require you to document what you are doing for both.
 
* 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, etc.
** 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/
* [http://antirez.com/news/124 Writing Code Comments] based on [https://github.com/antirez/redis/tree/32e0d2376fe91e76be04bb62825af5d95737b13e 32e0d237 commit]
** "[W]riting comments is of paramount importance in order to produce good code, that is maintainable in the long run and understandable by others and by the authors during modifications and debugging activities."
** "So comments can be, for me, a tool for lowering the cognitive load of the reader."
* His [https://www.youtube.com/channel/UCDDG9vOcmgwlslJJpCWjqOg YouTube channel] has more video discussions of the code in Redis
 
* Redis, Bull, and telescope
** https://github.com/Seneca-CDOT/telescope/pull/24
** [https://redis.io/topics/twitter-clone Writing a Twitter clone using Redis]
** Projects using Bull we can read and use as models to learn patterns:
*** https://github.com/sourcegraph/sourcegraph
*** https://github.com/coralproject/talk
*** https://github.com/zeit/node-file-trace
*** https://github.com/salesforce/refocus
*** https://github.com/OriginProtocol/origin
*** https://github.com/syuilo/misskey
*** https://github.com/Requarks/wiki
*** https://github.com/Chocobozzz/PeerTube
*** https://github.com/GetStream/Winds
*** https://github.com/withspectrum/spectrum
*** https://github.com/outline/outline
*** https://github.com/LearningLocker/learninglocker
*** https://github.com/ParabolInc/action
** [https://github.com/Seneca-CDOT/telescope/issues/112 https://github.com/Seneca-CDOT/telescope/issues/112] has notes on some research into these projects. Please add more as you find it.
 
== Week 10 ==
 
* Managing change on a fast moving project with lots of people
** Documentation doesn't work, project "rules" don't work
** Communication works (Watching Issues, Slack, in person discussions) and
** You have to enforce standards across a project using tools and automation
** Continuous Integration (CI) - [https://github.com/Seneca-CDOT/telescope/issues/43 we have Travis CI enabled]
** Static Analysis Tools
*** [https://github.com/Seneca-CDOT/telescope/pull/38 we have eslint for JavaScript using the Airbnb JavaScript Style Guide]
*** [https://github.com/Seneca-CDOT/telescope/pull/125 we have stylelint for CSS]
** Automated Tests with [https://jestjs.io/docs/en/getting-started Jest]
** Next we will [https://github.com/Seneca-CDOT/telescope/issues/96 add Prettier for standard code formatting]. Get your 0.3 PRs in before the weekend, or get ready for merge conflicts when this lands.
 
* [https://humphd.github.io/pretty-effective/ Case Study - 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)]
** [https://prettier.io/docs/en/install.html Installing Prettier]
 
* Reviews
** PRs must have a title that explains the fix, links to an Issue #
** PRs must have a full description. If this is UI code, show a screenshot, or explain the fix, talk about how to review it, how to test it, what's not done, what's going to happen in further PRs, etc.
** All PRs must pass CI: eslint, stylelint, unit tests
** Don't let people land code with unrelated commits (e.g., merges with master)
** Ask people to update their master with upstream, and rebase
** Don't let people land code with changes to unrelated lines/files (e.g., package.json, whitespace changes)
** Make sure one PR doesn't undo the work of another (e.g., bad merge, erasing existing code)
** Ask yourself how we'll test every piece of code we take. We need to be able to trust it going forward.
** PRs for us to try reviewing together:
*** [https://github.com/Seneca-CDOT/telescope/pull/102 #102 - Added Extracting of URLs from blog feed function]
*** [https://github.com/Seneca-CDOT/telescope/pull/123 #123 - Fix #74: Validate blog URLs.]
*** [https://github.com/Seneca-CDOT/telescope/pull/136 #136 - Added feed list parser]
*** [https://github.com/Seneca-CDOT/telescope/pull/137 #137 - added pagination to feed for #40]
 
* Research on Bull/Redis code
** https://github.com/Seneca-CDOT/telescope/issues/112 has lots of ideas for Issues you could file and fix
 
== Week 11 ==
 
* 0.3 Recap
** Make sure your PRs, Issues, and Blog posts are [https://wiki.cdot.senecacollege.ca/wiki/OSD_%26_DPS909_Fall_2019_-_Release_0.3 posted on the 0.3 page]. I'll mark 0.3 and 0.4 together, in case you're still cleaning up work from the past week (you have time).
** Over 100 Pull Requests, 67% are already merged
** 476 commits to 325 files totaling more than 20K lines of code edited/added
** Top Repos: Telescope! followed by Microsoft, Mozilla, Facebook, Uber, Zeit, Elastic, GatsbyJS, .NET, and 100 others
 
* Telescope Updates
** [https://gource.io/ Gource visualization of the repo]
** Tour of the Code
** TODO - Plan for 0.4
** How to get involved
*** triage issues
*** reviews
*** help debug things others are stuck on in PRs
*** help people with git issues
*** fixing bugs
*** [https://github.com/Seneca-CDOT/telescope/issues/251 project management]
 
* Discussion of git Workflows
** Value of CI - [https://travis-ci.org/Seneca-CDOT/telescope Travis CI builds] and [https://circleci.com/gh/Seneca-CDOT/telescope Circle CI builds]
*** [https://treeherder.mozilla.org/#/jobs?repo=mozilla-central CI for Firefox]
** Rebasing vs Merging
** Linear history is better than a tangled web of merges
*** gitk on Telescope vs.
*** gitk on Prettier, node.js, WebKit, Gutenberg
** Many, Small PRS are better than a few big ones
*** easier to review
*** easier to merge
** Break your work up, leverage the community of developers we have
** Dealing with package.json and package-lock.json
 
* Case Study
** [https://github.com/humphd/desktop/tree/good-first-experience-issue-6390#walkthrough-fixing-a-bug-in-github-desktop Walkthrough: using history to debug with git bisect]
 
== Week 11 ==
 
* 0.4 Status Check
** [https://github.com/Seneca-CDOT/telescope/pulls Pull Requests]
** [https://github.com/Seneca-CDOT/telescope/issues Issues]
** Countdown: 2 weeks to a working program. What risks do we see? How to address them?
 
* Case Study: [https://google.github.io/eng-practices/ Code Review at Google]
** [https://google.github.io/eng-practices/review/developer/cl-descriptions.html Creating Reviewable Code]
** [https://google.github.io/eng-practices/review/developer/small-cls.html Preferring Small Changes]
** [https://google.github.io/eng-practices/review/reviewer/standard.html The Standard Code Review]
** [https://google.github.io/eng-practices/review/reviewer/looking-for.html How to Review Code]
** [https://google.github.io/eng-practices/review/developer/handling-comments.html How to Handle Review Comments]
 
* Case Study: [https://engineering.shopify.com/blogs/engineering/successfully-merging-work-1000-developers Shopify developers using git, CI, merging]
** Over 1000 developers working on the code
** Shopify changes 40 times a day
** 400 commits a day to master
** Master must always be green (passing CI)
** Master must stay close to production
** Emergency merges must be fast
** /shipit GitHub integration
** Merge queue to manage merges to master

Navigation menu