Difference between revisions of "DPS909 and OSD600 Fall 2014 Notes"

From CDOT Wiki
Jump to: navigation, search
(Introduction)
(Week 12, 13, 14)
 
(54 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Introduction ==
+
__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?
* Some recent writing about Open Source:
 
 
** [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]
Line 45: 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

Week 1

  • 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

  • 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
  • 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."

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

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

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

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

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

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

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