Difference between revisions of "DPS909 and OSD600 Fall 2014 Notes"
(Created page with '== Introduction == * Course introduction * Question: What is ''Open Source''? * Some recent writing about Open Source: ** [http://www.washingtonpost.com/posteverything/wp/2014/0…') |
(→Week 12, 13, 14) |
||
(55 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | __TOC__ |
+ | |||
+ | == Week 1 == | ||
* Course introduction | * Course introduction | ||
− | * Question: What is ''Open Source''? | + | * Question: What is ''Open Source''? Why work on ''Open Source'' as a student? |
− | |||
** [http://www.washingtonpost.com/posteverything/wp/2014/08/27/i-studied-engineering-not-english-i-still-cant-find-a-job/ I studied business and programming, not English. I still can't find a job] | ** [http://www.washingtonpost.com/posteverything/wp/2014/08/27/i-studied-engineering-not-english-i-still-cant-find-a-job/ I studied business and programming, not English. I still can't find a job] | ||
** [http://readwrite.com/2014/09/01/open-source-recruitment The Secret to Hiring Great Developers] | ** [http://readwrite.com/2014/09/01/open-source-recruitment The Secret to Hiring Great Developers] | ||
** https://twitter.com/jeresig/status/33968704983138304 | ** https://twitter.com/jeresig/status/33968704983138304 | ||
** [https://code.facebook.com/posts/292625127566143/9-9-million-lines-of-code-and-still-moving-fast-facebook-open-source-in-2014/ Facebook open source in 2014] | ** [https://code.facebook.com/posts/292625127566143/9-9-million-lines-of-code-and-still-moving-fast-facebook-open-source-in-2014/ Facebook open source in 2014] | ||
+ | ** [https://github.com/facebook Facebook on Github] | ||
* Success in this course requires: | * Success in this course requires: | ||
** Willingness to be lost and not panic | ** Willingness to be lost and not panic | ||
Line 44: | Line 46: | ||
** Pick one Closed and one Open license/EULA, and read them from start to finish. Pick '''3 things that struck you''', blog about it and your reactions to the readings this week. | ** Pick one Closed and one Open license/EULA, and read them from start to finish. Pick '''3 things that struck you''', blog about it and your reactions to the readings this week. | ||
** Begin learning how to use [[Irc|IRC]] for communication. We'll cover this in detail next week, but it's better to get started early. | ** Begin learning how to use [[Irc|IRC]] for communication. We'll cover this in detail next week, but it's better to get started early. | ||
+ | |||
+ | == Week 2 == | ||
+ | |||
+ | * Open/Closed Licenses | ||
+ | ** Discussion of findings in license readings from week 1 | ||
+ | ** Case Study: Markdown and open licensing, open standards, forking, blogging, and Twitter | ||
+ | *** [http://daringfireball.net/projects/markdown/ Markdown 1.0.1 (2004)] | ||
+ | *** [http://daringfireball.net/projects/markdown/license Markdown's license] | ||
+ | *** [http://en.wikipedia.org/wiki/Markdown Markdown is used everywhere, by everyone] | ||
+ | **** Example: Markdown for documentation - https://github.com/antirez/redis-doc/pull/417 | ||
+ | *** [http://blog.codinghorror.com/responsible-open-source-code-parenting/ calling out a maintainer (2009)] | ||
+ | *** [http://blog.codinghorror.com/the-future-of-markdown/ call for standardization of Markdown (2012)] | ||
+ | *** [http://rumproarious.com/2012/10/29/markdown-the-spec/ failed attempt to standardize (2012)] | ||
+ | *** [https://twitter.com/gruber/status/507590050880561153 podcast of Gruber discussing Markdown] | ||
+ | *** [http://blog.codinghorror.com/standard-flavored-markdown/ a second attempt, Standard Markdown (2014)] | ||
+ | *** [https://twitter.com/markdown Standard Markdown rejected] | ||
+ | *** [http://spinhalf.net/omg-markdown/ the difficulty with standardizing] | ||
+ | *** [https://twitter.com/codinghorror/status/507680549712838656 naming fallout] | ||
+ | *** [http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ a third attempt, Common Markdown (2014)] | ||
+ | *** [https://twitter.com/codinghorror/status/508027568839479297 ...and finally http://commonmark.org] | ||
+ | *** [http://scripting.com/2014/09/05/emailToGruber.html Winer's open email to Gruber, with parallels to RSS/Atom] | ||
+ | |||
+ | * Discussion of Class Projects: enabling browser based cloud sharing | ||
+ | ** Filer - https://github.com/js-platform/filer | ||
+ | ** MakeDrive - https://github.com/mozilla/makedrive, http://blog.humphd.org/introducing-makedrive/ | ||
+ | ** Brackets - http://brackets.io/ | ||
+ | ** Nimble - https://github.com/mozilla/nimble.webmaker.org | ||
+ | ** Appmaker - https://github.com/mozilla-appmaker/appmaker | ||
+ | ** Mobile Appmaker - https://github.com/mozillafordevelopment/mobile-appmaker/ | ||
+ | *** http://tech.firstpost.com/news-analysis/spice-fire-one-running-mozillas-firefox-os-launched-for-rs-2299-230409.html | ||
+ | *** https://blog.mozilla.org/blog/2014/08/29/firefox-os-smartphones-available-in-india-this-week/ | ||
+ | *** http://bgr.com/2014/08/27/mozilla-firefox-os-smartphone-iphone/ | ||
+ | |||
+ | * Release 0.1 | ||
+ | ** ''Option 1 (for those new to open source)'': | ||
+ | *** [https://github.com/js-platform/filer/issues/277 Implement du in Filer] | ||
+ | *** You will learn git, github, JavaScript, node.js, npm, Filer, code review | ||
+ | *** You must fix the bug yourself and have it reviewed by another student *and* review another student's implementation (i.e., do a pull request against another student's fork, and vice versa) | ||
+ | ** ''Option 2 (for those with more experience)'': | ||
+ | *** Find and fix a bug in one of the projects listed above which is of an '''equal size to Option 1''' | ||
+ | *** Releases 0.2, 0.3, and 0.4 will be like Option 2 for everyone | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Sign-up for a case study and begin researching and immersing yourself - [[2014 Open Source Project Case Study]] | ||
+ | ** Reading for Wednesday's class: [http://www.firstmonday.org/ojs/index.php/fm/article/view/578/499 The Cathedral and the Bazaar]. Please be prepared to discuss next class. | ||
+ | ** Figure out which option you will do for Release 0.1 and begin working on it. | ||
+ | ** Sign-up for an [[2014 Open Source Project Case Study|Open Source Case Study]] | ||
+ | ** Write an introductory '''blog post''' about the case study project you chose, and the project that you will be researching. | ||
+ | |||
+ | == Week 3 == | ||
+ | |||
+ | * Discussion of [http://www.firstmonday.org/ojs/index.php/fm/article/view/578/499 The Cathedral and the Bazaar] | ||
+ | ** "The Linux community seems to resemble a great babbling bazaar" | ||
+ | ** "Linus Torvald's style of development - Release early. Release often. And listen to your customers." | ||
+ | ** "Every good work of software starts by scratching a developer's personal itch." | ||
+ | ** "Good programmers know what to write. Great ones know what to rewrite (and reuse)." | ||
+ | ** "Plan to throw one away; you will, anyhow (Fred Brooks)" | ||
+ | ** "You often don't really understand the problem until after the first time you implement a solution." | ||
+ | ** "When you lose interest in a program, your last duty is to hand it off to a competent successor." | ||
+ | ** "Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging." | ||
+ | ** Linus' Law: "Given enough eyeballs, all bugs are shallow." or "Debugging is parallelizable" and "More users find more bugs...because adding more users adds more different ways of stressing the program." | ||
+ | ** "Somebody finds the problem...and somebody ''else'' understands it. And I'll go on record as saying that finding it is the bigger challenge." | ||
+ | *** In the cathedral-view bugs are "tricky, insidious, deep phenomena. It takes months of scrutiny by a dedicated few to develop confidence that you've winkled them all out. Thus the long release intervals." | ||
+ | *** "In the bazaar view, on the other hand, you assume that bugs are generally shallow phenomena - or, at least, that they turn shallow pretty quick when exposed to a thousand eager co-developers pounding on every single new release." | ||
+ | ** "If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource." | ||
+ | |||
+ | * Release 0.1 - Getting Started | ||
+ | ** Case Study: implementing [http://pubs.opengroup.org/onlinepubs/7908799/xcu/wc.html wc] | ||
+ | *** "%d %d %d %s\n", <newlines>, <words>, <bytes>, <file> | ||
+ | *** '''Fork it''' - https://github.com/js-platform/filer | ||
+ | *** '''Clone it''' - http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository | ||
+ | *** '''Setup Dev Environment''' - https://github.com/js-platform/filer/blob/develop/CONTRIBUTING.md | ||
+ | **** An open source code editor: suggestions include [http://brackets.io/ Brackets] or [https://atom.io/ Atom] | ||
+ | **** [http://nodejs.org/ node.js] | ||
+ | **** <code>npm install</code> | ||
+ | **** <code>npm install -g grunt-cli</code> | ||
+ | *** '''Run the Tests''' - https://github.com/js-platform/filer/blob/develop/CONTRIBUTING.md#tests | ||
+ | **** <code>grunt test</code> | ||
+ | **** <code>grunt test-browser</code> and browse to http://localhost:1234/tests/ | ||
+ | *** '''Find similar code''' - tests, code, docs | ||
+ | **** [https://github.com/js-platform/filer#cat sh.cat() docs] | ||
+ | **** [https://github.com/js-platform/filer/search?q=.cat&type=Code sh.cat() code and tests] | ||
+ | *** '''Write Tests First''' | ||
+ | **** Consider the cases we care about with wc | ||
+ | **** Study how the [https://github.com/js-platform/filer/blob/e9eae3549b1c95043d4a2c8ca5646e61ac17e37f/tests/spec/shell/cat.spec.js cat tests work] | ||
+ | **** Study how other open source implementations work: [http://www.opensource.apple.com/source/text_cmds/text_cmds-71/wc/wc.c wc.c] | ||
+ | **** Look around the code you're writing | ||
+ | **** Look for similar patterns in other files | ||
+ | **** Use <code>git blame</code> and Github Search, find and read commits that added similar code | ||
+ | **** Copy/Paste/Modify | ||
+ | ** [https://github.com/humphd/filer/commit/5c7f878ff7f3469742a9cdf699b057bfeee6f191 Possible implementation] | ||
+ | |||
+ | * '''TODO''' | ||
+ | ** Install git http://git-scm.com/ | ||
+ | ** Create a [https://github.com/ Github account] if you haven't already | ||
+ | ** Fork and clone Filer and start on Release 0.1 if you haven't already (due in 2 weeks). Blog about your progress, what you learned, what you still need to learn | ||
+ | ** Read chapters 1 & 2 of [http://git-scm.com/book Pro Git], be ready to discuss next week. | ||
+ | ** Read [http://opensource.com/education/14/8/600-students-educated-center-development-open-technology opensource.com article about Seneca and Open Source education]--they are talking about you! | ||
+ | |||
+ | == Week 4 == | ||
+ | |||
+ | * Introducing Git | ||
+ | ** Client Server (SVN) and Distributed (Git) | ||
+ | ** Snapshots vs. versioned files. | ||
+ | ** Checksums, SHA-1 | ||
+ | ** File States: | ||
+ | *** Untracked (not known to git) | ||
+ | *** Tracked: modified, staged, committed | ||
+ | ** The staging area | ||
+ | * Basic Git Commands and Concepts | ||
+ | ** git help ''<command>'' | ||
+ | ** git init | ||
+ | ** git clone | ||
+ | ** git add | ||
+ | ** git commit, git commit -m, git commit -a | ||
+ | ** git rm | ||
+ | ** git mv | ||
+ | ** git status | ||
+ | ** git log | ||
+ | ** git diff, git diff --staged | ||
+ | ** .gitignore | ||
+ | ** Branches | ||
+ | *** HEAD, master | ||
+ | *** git checkout, git checkout -b | ||
+ | *** git branch, git branch -a, git branch -d, git branch --merged, git branch --contains | ||
+ | *** git merge | ||
+ | *** git rebase | ||
+ | ** Remotes | ||
+ | *** origin, origin/''branch'' | ||
+ | *** git remote | ||
+ | *** git remote add | ||
+ | *** git fetch | ||
+ | *** git pull | ||
+ | *** git push | ||
+ | ** Github, Pull Requests | ||
+ | |||
+ | * '''Readings/Resources''' | ||
+ | ** [http://git-scm.com/ Download and Install git] | ||
+ | ** [http://gitref.org/ Git Reference] | ||
+ | ** [http://marklodato.github.com/visual-git-guide/index-en.html Visual Git Reference] | ||
+ | ** [http://www.ericsink.com/vcbe/index.html Version Control by Example, online book] | ||
+ | ** [http://sixrevisions.com/resources/git-tutorials-beginners/ Overview of Git Tutorials (many good ones)] | ||
+ | ** Videos | ||
+ | *** [http://git-scm.com/videos Intro to Git] | ||
+ | *** [http://www.youtube.com/watch?v=OFkgSjRnay4&feature=related Scott Chacon's more advanced tutorial of git] | ||
+ | *** [http://www.youtube.com/watch?v=4XpnKHJAok8 Linus Torvalds at Google discussing git's distributed nature] | ||
+ | *** [http://help.github.com/ Github documentation] | ||
+ | ** [https://lkml.org/lkml/2004/12/20/255 Linus on the value of small patches]. Learning to use git well requires learning to work in small units of work, and adding them up over time. | ||
+ | * '''TODO''' | ||
+ | ** Learn git!: '''Watch''' video tutorials and '''Read''' chapter 3 of [http://git-scm.com/book Pro Git], etc. | ||
+ | ** Work on your 0.1 release. See the [[DPS909 and OSD600 0.1 Release 2014|instructions on submitting]]. | ||
+ | |||
+ | == Weeks 5,6 == | ||
+ | |||
+ | * Continuing with Git | ||
+ | ** branches | ||
+ | ** remotes | ||
+ | ** workflows | ||
+ | |||
+ | * Connecting with Communities on irc | ||
+ | ** Moznet (irc.mozilla.org) | ||
+ | ** Freenode | ||
+ | ** irccloud - https://www.irccloud.com/ | ||
+ | ** Recommended Channels | ||
+ | *** #filer (moznet) | ||
+ | *** #makedrive (moznet) | ||
+ | *** #appmaker (moznet) | ||
+ | *** #brackets (freenode) | ||
+ | |||
+ | * Guest Lecture on Wednesday with Mozilla's Kate Hudson [https://twitter.com/k88hudson @k88hudson] | ||
+ | ** Discussion of [https://github.com/mozillafordevelopment Webmaker Mobile projects] | ||
+ | ** How to get started setting it up, contributing, finding good bugs | ||
+ | ** How she got started in open source, and what it's like to work full time | ||
+ | ** IRC usernames for Webmaker on the board: | ||
+ | *** k88hudson | ||
+ | *** thisandagain | ||
+ | |||
+ | * Starting Release 0.2 | ||
+ | ** Picking a bug | ||
+ | ** Suggested Projects: | ||
+ | *** [https://github.com/mozillafordevelopment/webmaker-app/issues Webmaker Mobile], [http://www.economist.com/news/international/21620221-translating-technological-terms-throws-up-some-peculiar-challenges-cookies-caches-and-cows Economist Article about significance of Firefox OS] | ||
+ | *** [https://github.com/mozilla-appmaker/appmaker/issues Appmaker] | ||
+ | *** [https://github.com/filerjs/filer/issues Filer] | ||
+ | ** Advanced Projects: | ||
+ | *** [https://github.com/mozilla/makedrive/issues MakeDrive] | ||
+ | *** [https://github.com/adobe/brackets/issues Brackets] | ||
+ | *** [http://mozilla-cordova.github.io/status/ Cordova + Firefox OS] | ||
+ | |||
+ | '''TODO''' | ||
+ | * Continue blogging at least once per week, write about your work on your bugs, things you're learning, issues you have, etc. | ||
+ | * Pick a project and find bug(s) to work on for release 0.2 | ||
+ | * Join the irc channel(s) for the project you'll be joining | ||
+ | * Read the [http://ericsink.com/vcbe/html/git_example.html chapter on git] in "Version Control by Example." Continue to build your knowledge of, and experience with git. | ||
+ | * Find a bug to work on for Release 0.2 and blog about the bug. What is it? How will you approach fixing it? What do you need to learn? | ||
+ | |||
+ | == Week 7 == | ||
+ | |||
+ | * Discussion of 0.2 issues and questions (due Friday) | ||
+ | * Preparing for [http://fsoss.ca FSOSS], [[FSOSS 2014 Report]] (next week, due Oct 31) | ||
+ | * [http://www.programmableweb.com/news/minecraft-server-software-and-modding-plug-ins-facing-uncertain-future/analysis/2014/09/24 Licences, DMCA, Minecraft, Microsoft] | ||
+ | * JavaScript Books and Videos | ||
+ | ** [https://www.youtube.com/playlist?list=PL7664379246A246CB Crockford on JavaScript (video series)] | ||
+ | ** [http://eloquentjavascript.net/ Eloquent JavaScript] | ||
+ | ** [http://read.humanjavascript.com/ Human JavaScript] | ||
+ | ** [http://chimera.labs.oreilly.com/books/1234000001808/index.html Node: Up and Running] | ||
+ | |||
+ | '''TODO''' | ||
+ | * Release 0.2 due Friday - '''blog post''' with details about your bug, how you fixed it, link to your '''pull request''', etc. | ||
+ | * Start reading more deeply about JS | ||
+ | |||
+ | == Week 8, 9 == | ||
+ | |||
+ | * [http://thenextweb.com/apps/2014/10/23/mozillas-webmaker-app-will-make-easy-anyone-create-web-apps-smartphone/ Media coverage of Mobile Webmaker App preview at MozFest] | ||
+ | * [http://readwrite.com/2014/10/24/open-source-recruiting-facebook-netflix-twitter Open Source as Recruiting Tool] | ||
+ | ** "Web companies like Netflix, Twitter and Facebook understand that open source can be more: a powerful weapon for recruiting and retaining top engineering talent." | ||
+ | ** [http://opensource.com/business/14/10/head-of-open-source-facebook-oscon Open Source at Facebook] | ||
+ | ** [http://www.slideshare.net/caniszczyk/open-source-craft-at-twitter Open Source at Twitter] | ||
+ | * FSOSS Discussion | ||
+ | ** Guest - Abhijit AM from Puna, India | ||
+ | * More on JavaScript | ||
+ | ** [http://bonsaiden.github.io/JavaScript-Garden/ The JavaScript Garden] | ||
+ | *** [http://bonsaiden.github.io/JavaScript-Garden/#function Anonymous Functions (lambdas)] | ||
+ | *** [http://underscorejs.org/docs/underscore.html Self-executing anonymous functions] | ||
+ | *** [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array Functional programming with Arrays], [https://github.com/adobe/brackets/blob/6affa7907fdc820f7b9083bc0ff7c9fb87fb3e57/src/language/HTMLInstrumentation.js#L93-L123 example] | ||
+ | *** [https://github.com/adobe/brackets/blob/ae17456a596965a1247b79ddb82c6e1518bc6e5e/src/utils/UrlParams.js Constructor functions and the prototype], [https://github.com/mozillafordevelopment/webmaker-app/blob/bfa6377bf49d14c16868dd3a4ae7b8f9fbcfcaea/lib/model.js another example] | ||
+ | *** [https://github.com/adobe/brackets/blob/791bcc436155cbd8e8e73429af4ca3fde0881703/src/utils/Compatibility.js Extending native prototypes] | ||
+ | *** [https://github.com/filerjs/filer/blob/develop/src/errors.js Dynamic property access] | ||
+ | ** [https://github.com/google/open-location-code Google's Open Location Code] repo | ||
+ | * Let's fix a JS bug in Brackets | ||
+ | ** https://github.com/adobe/brackets/issues/9529 - UI fix | ||
+ | ** https://github.com/adobe/brackets/issues/8190 - Crash fix | ||
+ | |||
+ | * Open Source across Companies | ||
+ | ** [http://blog.endpoint.com/2010/01/state-of-postgres-project.html Open Source, MySQL, Postgres, Oracle] | ||
+ | ** [http://opensource.apple.com/release/os-x-1010/ Open Source in 10.10] | ||
+ | |||
+ | '''TODO''' | ||
+ | * Read the various articles linked in the class notes, '''blog about your reaction''' to what you're reading. | ||
+ | * [[FSOSS 2014 Report]] due this '''Friday, Oct 31''' | ||
+ | * Start work on your '''0.3 release'''. | ||
+ | * Read [https://github.com/adobe/brackets/issues/9529 Brackets Issue 9529] for Wednesday | ||
+ | |||
+ | == Week 10 == | ||
+ | |||
+ | * JavaScript outside the browser | ||
+ | * [http://nodejs.org/ node.js] | ||
+ | ** [http://nodejs.org/api/ API docs] | ||
+ | ** [https://github.com/joyent/node source code] | ||
+ | ** [http://nodejs.org/api/modules.html#modules_modules require, module.exports] | ||
+ | ** node's callback pattern: <code>function(err, result) {...}</code> | ||
+ | ** [https://www.npmjs.org/ npm] | ||
+ | ** [https://www.npmjs.org/doc/files/package.json.html package.json] | ||
+ | |||
+ | * Microsoft Open Sources .NET | ||
+ | ** [http://news.microsoft.com/2014/11/12/microsoft-takes-net-open-source-and-cross-platform-adds-new-development-capabilities-with-visual-studio-2015-net-2015-and-visual-studio-online/ Microsoft's press release] | ||
+ | ** [http://www.hanselman.com/blog/AnnouncingNET2015NETasOpenSourceNETonMacandLinuxandVisualStudioCommunity.aspx Microsoft's employee reaction] | ||
+ | ** [http://tirania.org/blog/archive/2014/Nov-12.html Mono lead developer's reaction] | ||
+ | ** Source Code (on Github no less): | ||
+ | *** https://github.com/Microsoft/referencesource | ||
+ | *** https://github.com/dotnet | ||
+ | |||
+ | * Node.js and Joyent | ||
+ | ** [http://dtrejo.com/why-is-node-being-forked.html Forking node?] | ||
+ | ** http://readwrite.com/2014/11/12/node-js-joyent-possible-fork-schism | ||
+ | ** [https://github.com/joyent/nodejs-advisory-board Advisory Board] | ||
+ | ** [http://fantasai.inkedblade.net/weblog/2014/non-volunteer-agreement/ Non-volunteer agreement] | ||
+ | |||
+ | * [https://nodebug.me/ nodebug.me] and Community Triage | ||
+ | ** https://twitter.com/brianleroux/status/530983249515134976 | ||
+ | |||
+ | '''TODO''' | ||
+ | * Work on release 0.3, due November 14th. | ||
+ | |||
+ | == Week 11 == | ||
+ | |||
+ | * Designing for Participation | ||
+ | ** Question: "How to build a software production pipeline that can strategically benefit from a vibrant open source community?" | ||
+ | ** Tension between growing capacity vs increasing cost | ||
+ | ** Schedule driven, client-requirements driven, and open involvement | ||
+ | ** The role of partnerships, shared ownership, distributed control and responsibility | ||
+ | |||
+ | * [http://ben.balter.com/2014/11/06/rules-of-communicating-at-github/ Rules for Communicating at Github] | ||
+ | |||
+ | '''TODO''' | ||
+ | |||
+ | * Start scoping your 0.4 release. Pick your bugs, follow up on review comments from previous bugs, etc. | ||
+ | * Pay attention to your blogging. Remember, a blog post per week is what is expected. It can be about any of your work. | ||
+ | |||
+ | == Week 12, 13, 14 == | ||
+ | |||
+ | * [https://github.com/git/git/commit/e83c5163316f89bfbde7d9ab23ca2e25604af290 Initial Git Commit] | ||
+ | |||
+ | * The :9090 problem: '''"Convert :9090 into http://localhost:9090 automatically"''' | ||
+ | ** https://twitter.com/brianloveswords/status/531865386527248384 | ||
+ | ** Let's try and change web browsers to do this | ||
+ | ** Browser vendors probably won't take the change, but it's a great way to learn | ||
+ | ** Platform Change vs. Extensions | ||
+ | ** A clue http://christian.legnitto.com/blog/2014/05/05/firefox-29s-best-feature/ | ||
+ | |||
+ | * Open Source Browsers | ||
+ | ** Firefox | ||
+ | *** [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions Build Instructions] | ||
+ | *** [https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/ Writing Extensions] | ||
+ | *** [http://dxr.mozilla.org/mozilla-central/source/ Source Code Browser (DXR)] | ||
+ | ** Chromium/Chrome | ||
+ | *** [https://chromium.googlesource.com/chromium/src.git Source Code] | ||
+ | *** [http://www.chromium.org/developers/how-tos Dev Docs] | ||
+ | *** [http://www.chromium.org/developers/how-tos/build-instructions-windows Building on Windows with VS] | ||
+ | *** [http://dev.chromium.org/developers/how-tos/get-the-code Getting the Code] | ||
+ | *** [https://developer.chrome.com/extensions/getstarted Building Chrome Extensions] | ||
+ | ** WebKit | ||
+ | *** [https://www.webkit.org/ Main project page] | ||
+ | *** [https://www.webkit.org/building/checkout.html Getting the code] | ||
+ | *** [https://www.webkit.org/building/build.html Building the code] | ||
+ | ** [https://konqueror.org/Konqueror Konqueror] | ||
+ | *** [https://konqueror.org/investigatebug/ Fixing bugs] | ||
+ | *** [https://konqueror.org/getthesource/ Source Code] | ||
+ | ** [http://en.wikipedia.org/wiki/Lynx_%28web_browser%29 Lynx] | ||
+ | *** [http://lynx.isc.org/ Main site] | ||
+ | *** [http://lynx.isc.org/current/lynx_help/lynx_url_support.html URL Support in Lynx] | ||
+ | |||
+ | '''TODO''' | ||
+ | * Pick a browser to work on | ||
+ | * Get the code, setup a dev environment, build it | ||
+ | * Write a blog post about the experience, with a screenshot of the build running |
Latest revision as of 11:29, 24 November 2014
Contents
Week 1
- Course introduction
- Question: What is Open Source? Why work on Open Source as a student?
- Success in this course requires:
- Willingness to be lost and not panic
- Curiosity
- Being driven, persistence
- Willingness to ask for help
- Willingness to give others help
- Independent learning
- Doing more, much more, than the bare minimum
- What are Seneca and Seneca students capable of accomplishing? Some examples
- Intro to open source
- TODO
- Create an account on this wiki for yourself (note: requires manual creation)
- Add your info to the Fall 2014 Open Source Students page.
- Create a blog (wordpress or blogspot or whatever) and create a feed category or tag called "open source"
- Read the Blog Guidelines for instructions on how to use your blog in the course
- Add your blog feed and info to the Open Source@Seneca Planet List so that it appears in the OpenSource@Seneca Planet
- Pick one Closed and one Open license/EULA, and read them from start to finish. Pick 3 things that struck you, blog about it and your reactions to the readings this week.
- Begin learning how to use IRC for communication. We'll cover this in detail next week, but it's better to get started early.
Week 2
- Open/Closed Licenses
- Discussion of findings in license readings from week 1
- Case Study: Markdown and open licensing, open standards, forking, blogging, and Twitter
- Markdown 1.0.1 (2004)
- Markdown's license
- Markdown is used everywhere, by everyone
- Example: Markdown for documentation - https://github.com/antirez/redis-doc/pull/417
- calling out a maintainer (2009)
- call for standardization of Markdown (2012)
- failed attempt to standardize (2012)
- podcast of Gruber discussing Markdown
- a second attempt, Standard Markdown (2014)
- Standard Markdown rejected
- the difficulty with standardizing
- naming fallout
- a third attempt, Common Markdown (2014)
- ...and finally http://commonmark.org
- Winer's open email to Gruber, with parallels to RSS/Atom
- Discussion of Class Projects: enabling browser based cloud sharing
- Filer - https://github.com/js-platform/filer
- MakeDrive - https://github.com/mozilla/makedrive, http://blog.humphd.org/introducing-makedrive/
- Brackets - http://brackets.io/
- Nimble - https://github.com/mozilla/nimble.webmaker.org
- Appmaker - https://github.com/mozilla-appmaker/appmaker
- Mobile Appmaker - https://github.com/mozillafordevelopment/mobile-appmaker/
- Release 0.1
- Option 1 (for those new to open source):
- Implement du in Filer
- You will learn git, github, JavaScript, node.js, npm, Filer, code review
- You must fix the bug yourself and have it reviewed by another student *and* review another student's implementation (i.e., do a pull request against another student's fork, and vice versa)
- Option 2 (for those with more experience):
- Find and fix a bug in one of the projects listed above which is of an equal size to Option 1
- Releases 0.2, 0.3, and 0.4 will be like Option 2 for everyone
- Option 1 (for those new to open source):
- TODO
- Sign-up for a case study and begin researching and immersing yourself - 2014 Open Source Project Case Study
- Reading for Wednesday's class: The Cathedral and the Bazaar. Please be prepared to discuss next class.
- Figure out which option you will do for Release 0.1 and begin working on it.
- Sign-up for an Open Source Case Study
- Write an introductory blog post about the case study project you chose, and the project that you will be researching.
Week 3
- Discussion of The Cathedral and the Bazaar
- "The Linux community seems to resemble a great babbling bazaar"
- "Linus Torvald's style of development - Release early. Release often. And listen to your customers."
- "Every good work of software starts by scratching a developer's personal itch."
- "Good programmers know what to write. Great ones know what to rewrite (and reuse)."
- "Plan to throw one away; you will, anyhow (Fred Brooks)"
- "You often don't really understand the problem until after the first time you implement a solution."
- "When you lose interest in a program, your last duty is to hand it off to a competent successor."
- "Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging."
- Linus' Law: "Given enough eyeballs, all bugs are shallow." or "Debugging is parallelizable" and "More users find more bugs...because adding more users adds more different ways of stressing the program."
- "Somebody finds the problem...and somebody else understands it. And I'll go on record as saying that finding it is the bigger challenge."
- In the cathedral-view bugs are "tricky, insidious, deep phenomena. It takes months of scrutiny by a dedicated few to develop confidence that you've winkled them all out. Thus the long release intervals."
- "In the bazaar view, on the other hand, you assume that bugs are generally shallow phenomena - or, at least, that they turn shallow pretty quick when exposed to a thousand eager co-developers pounding on every single new release."
- "If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource."
- Release 0.1 - Getting Started
- Case Study: implementing wc
- "%d %d %d %s\n", <newlines>, <words>, <bytes>, <file>
- Fork it - https://github.com/js-platform/filer
- Clone it - http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository
- Setup Dev Environment - https://github.com/js-platform/filer/blob/develop/CONTRIBUTING.md
- Run the Tests - https://github.com/js-platform/filer/blob/develop/CONTRIBUTING.md#tests
-
grunt test
-
grunt test-browser
and browse to http://localhost:1234/tests/
-
- Find similar code - tests, code, docs
- Write Tests First
- Consider the cases we care about with wc
- Study how the cat tests work
- Study how other open source implementations work: wc.c
- Look around the code you're writing
- Look for similar patterns in other files
- Use
git blame
and Github Search, find and read commits that added similar code - Copy/Paste/Modify
- Possible implementation
- Case Study: implementing wc
- TODO
- Install git http://git-scm.com/
- Create a Github account if you haven't already
- Fork and clone Filer and start on Release 0.1 if you haven't already (due in 2 weeks). Blog about your progress, what you learned, what you still need to learn
- Read chapters 1 & 2 of Pro Git, be ready to discuss next week.
- Read opensource.com article about Seneca and Open Source education--they are talking about you!
Week 4
- Introducing Git
- Client Server (SVN) and Distributed (Git)
- Snapshots vs. versioned files.
- Checksums, SHA-1
- File States:
- Untracked (not known to git)
- Tracked: modified, staged, committed
- The staging area
- Basic Git Commands and Concepts
- git help <command>
- git init
- git clone
- git add
- git commit, git commit -m, git commit -a
- git rm
- git mv
- git status
- git log
- git diff, git diff --staged
- .gitignore
- Branches
- HEAD, master
- git checkout, git checkout -b
- git branch, git branch -a, git branch -d, git branch --merged, git branch --contains
- git merge
- git rebase
- Remotes
- origin, origin/branch
- git remote
- git remote add
- git fetch
- git pull
- git push
- Github, Pull Requests
- Readings/Resources
- Download and Install git
- Git Reference
- Visual Git Reference
- Version Control by Example, online book
- Overview of Git Tutorials (many good ones)
- Videos
- Linus on the value of small patches. Learning to use git well requires learning to work in small units of work, and adding them up over time.
- TODO
- Learn git!: Watch video tutorials and Read chapter 3 of Pro Git, etc.
- Work on your 0.1 release. See the instructions on submitting.
Weeks 5,6
- Continuing with Git
- branches
- remotes
- workflows
- Connecting with Communities on irc
- Moznet (irc.mozilla.org)
- Freenode
- irccloud - https://www.irccloud.com/
- Recommended Channels
- #filer (moznet)
- #makedrive (moznet)
- #appmaker (moznet)
- #brackets (freenode)
- Guest Lecture on Wednesday with Mozilla's Kate Hudson @k88hudson
- Discussion of Webmaker Mobile projects
- How to get started setting it up, contributing, finding good bugs
- How she got started in open source, and what it's like to work full time
- IRC usernames for Webmaker on the board:
- k88hudson
- thisandagain
- Starting Release 0.2
- Picking a bug
- Suggested Projects:
- Advanced Projects:
TODO
- Continue blogging at least once per week, write about your work on your bugs, things you're learning, issues you have, etc.
- Pick a project and find bug(s) to work on for release 0.2
- Join the irc channel(s) for the project you'll be joining
- Read the chapter on git in "Version Control by Example." Continue to build your knowledge of, and experience with git.
- Find a bug to work on for Release 0.2 and blog about the bug. What is it? How will you approach fixing it? What do you need to learn?
Week 7
- Discussion of 0.2 issues and questions (due Friday)
- Preparing for FSOSS, FSOSS 2014 Report (next week, due Oct 31)
- Licences, DMCA, Minecraft, Microsoft
- JavaScript Books and Videos
TODO
- Release 0.2 due Friday - blog post with details about your bug, how you fixed it, link to your pull request, etc.
- Start reading more deeply about JS
Week 8, 9
- Media coverage of Mobile Webmaker App preview at MozFest
- Open Source as Recruiting Tool
- "Web companies like Netflix, Twitter and Facebook understand that open source can be more: a powerful weapon for recruiting and retaining top engineering talent."
- Open Source at Facebook
- Open Source at Twitter
- FSOSS Discussion
- Guest - Abhijit AM from Puna, India
- More on JavaScript
- Let's fix a JS bug in Brackets
- Open Source across Companies
TODO
- Read the various articles linked in the class notes, blog about your reaction to what you're reading.
- FSOSS 2014 Report due this Friday, Oct 31
- Start work on your 0.3 release.
- Read Brackets Issue 9529 for Wednesday
Week 10
- JavaScript outside the browser
- node.js
- API docs
- source code
- require, module.exports
- node's callback pattern:
function(err, result) {...}
- npm
- package.json
- Microsoft Open Sources .NET
- Node.js and Joyent
- nodebug.me and Community Triage
TODO
- Work on release 0.3, due November 14th.
Week 11
- Designing for Participation
- Question: "How to build a software production pipeline that can strategically benefit from a vibrant open source community?"
- Tension between growing capacity vs increasing cost
- Schedule driven, client-requirements driven, and open involvement
- The role of partnerships, shared ownership, distributed control and responsibility
TODO
- Start scoping your 0.4 release. Pick your bugs, follow up on review comments from previous bugs, etc.
- Pay attention to your blogging. Remember, a blog post per week is what is expected. It can be about any of your work.
Week 12, 13, 14
- The :9090 problem: "Convert :9090 into http://localhost:9090 automatically"
- https://twitter.com/brianloveswords/status/531865386527248384
- Let's try and change web browsers to do this
- Browser vendors probably won't take the change, but it's a great way to learn
- Platform Change vs. Extensions
- A clue http://christian.legnitto.com/blog/2014/05/05/firefox-29s-best-feature/
TODO
- Pick a browser to work on
- Get the code, setup a dev environment, build it
- Write a blog post about the experience, with a screenshot of the build running