DPS909/OSD600 Fall 2018 Release 0.1

From CDOT Wiki
Jump to: navigation, search

Release 0.1

Due Date

Friday September 28th. See Requirements below for details on what needs to be included in your submission.


This first release is designed to expose you to the common workflows and tools involved in contributing to open source projects on GitHub. In order to give every student a similar learning experience, we will all be working on the same project and code. NOTE: in subsequent releases, students will have more freedom to contribute to other projects.

Our goal will be to improve test coverage for the Filer web filesystem project. Filer implements the node.js fs module, providing a way to read, write, and manipulate files and directories in web pages using IndexedDB as a backing data store. Recently, node.js has added new features to the fs module which need to be ported to, and fully tested (i.e., unit tests) in Filer.

Learning Goals

In addition to the actual code you will write, the ultimate goal of this first release is to help you gain experience in many aspects of open source development and contribution, specifically:

  • reading and searching through existing code, specifically node.js and Filer
  • working with branches, commits and other aspects of git
  • creating Pull Requests in GitHub
  • filing, triaging, and working with Issues on GitHub
  • writing and running automated unit tests, specifically using mocha, karma, and puppeteer
  • working with static analysis tools, specifically eslint
  • continuous integration and automation, specifically using Travis CI
  • working in an open source community
  • reviewing other contributor's Pull Requests
  • using open communication tools, such as Slack
  • writing about your own work via your Blog


Web pages are sandboxed from the operating system, and normally there is no way to work with files and directories. However, many existing applications rely on access to a full filesystem, for example, editors. Anyone wanting to create a web application that needs to work with files and directories can use Filer, and the data will persist between sessions.

Filer shares no code with node.js, since node is meant to be run directly in an operating system vs. a browser. Instead, Filer implements the same interface (i.e., set of functions and objects) as the fs module, making it possible for developers to port an application from working only on node, to working in the browser as well.

There are thousands of automated unit tests in node.js, which allow the expectations of the interfaces node uses to be checked against the implementations. Similarly, Filer has hundreds of tests, and in an ideal world, the same types of logic and examples being tested in node should also be tested (and work!) in Filer.

Filer uses mochajs and the chai expect assertion library for its tests. Most of the tests are located in tests/spec. The complete list of tests that gets run is located in tests/index.js. NOTE: if you add a new test file, it needs to get added to this file as well.

Details on how to setup and run the tests are available in CONTRIBUTING.md.

Filing an Issue

Recently, a Pull Request was merged in Filer adding support for the new fsPromises API. However, no tests were added with the code. We now need to add tests for all aspects of this new API.

You are asked to find one thing that needs to be tested as is currently not. For example, you might test to make sure that performing a series of steps with the fsPromises API works as expected (files are created or deleted or altered as you expect). You are encouraged to study the node.js tests for ideas.

When you file your bug, you should first make sure that no one else has already filed the same thing. This is known as a "dupe" (i.e., a duplicate bug). When you file your bug, make sure you include enough information to make it clear what the problem is. For example, "Add test case for using f() when x and y are true." You can include links to code you find in node, or snippets of code you have written yourself that demonstrate what is going on.

If you wish to work on this bug, make sure you indicate that as well. For example, you might file more than one bug, but not work on solutions for all of them, leaving the problems to other students.

Fixing Your Issue

Once your issue is filed, begin your fix by forking Filer and creating a new branch. You must create a new branch before you commit any code or submit a pull request. If your Issue was #123, create a branch named issue-123.

Make sure you can run the existing tests, and that they all pass. You want to make sure everything is working before you begin

On your new branch, you can make as many commits as you need to. Don't worry if you make mistakes, or need to overwrite/undo something; just add more commits to fix the problems. If you need to add new test files, that's fine, or you might be able to add to an existing file. Also, do not merge any code into your branch. Leave that for the very end, when your fully reviewed and corrected pull request will (hopefully) get merged by a Filer maintainer.

Getting Help

At every stage of your work, make sure you ask for help, and get feedback from others in the community by asking questions. Don't struggle on your own and get stuck, or miss the due date.

Please use the Filer GitHub Issues and Open Source Slack.


You will be graded on the following. Please make sure you have addressed everything that makes sense below:

  • Proper Pull Request to Filer
    • An Issue should be filed before your create your Pull Request. The Issue must have a complete subject and description of the problem or change you believe needs to be made.
    • The Pull Request should reference the Issue Number in its description (e.g., "Fixes #123: Add test for ...")
    • Changes must be made on a new branch (e.g., if you are fixing Issue 123, use issue-123 as your branch name)
    • Adds a Test, and/or Code Fix, and/or Documentation update
    • Code or Tests must pass eslint
    • All Unit Tests must pass after your changes are made (i.e., new tests must pass, and you must not break existing tests)
    • Co-ordination with other student/community Pull Requests. Make sure you don't duplicate another fix or change that someone else has already done.
  • Review of Another Student's Pull Request
    • Compare the Pull Request to the related Issue it is trying to fix. Has everything been covered?
    • Confirm that there are no other related Issues or Pull Requests that might conflict with this Pull Request
    • Confirm that tests, code, and other automated tests run correctly and all pass
    • Review code and other changes, making comments and suggestions about any improvements you can see, or other issues that need to be addressed
  • Blog Post
    • Discussion of the change(s) you made. What was your process? What did you learn? What would you do differently next time, or what worked and you would do again?
    • Link to the Issue(s) you filed, and discuss the bug/problem/addition you wanted to address.
    • Link to the Pull Request(s) you created, and discuss the fix.
    • Link to the Pull Request(s) you reviewed, and discuss what you did and found.
    • Discussion of what you did to address your review comments.
    • Evidence of Community Involvement. Could be Issues you worked in to help others, help you gave people on Slack, mentoring or other help you gave people in person. How did you engage with the community of developers working on Filer?
  • Add Info to Table Below
    • Make sure you Name, Blog URL, Pull Request URLs, etc are all included


When you have completed all the requirements above, please add your details to the table below.

Name Blog Post (URL) Issue (URL) Pull Request (URL)
Chaya Danzinger https://medium.com/@chayadanz/open-source-exposure-190a6a1287e6 https://github.com/filerjs/filer/issues/527 https://github.com/filerjs/filer/pull/540
Mykola Skuybeda https://nicksopensource.wordpress.com/2018/09/29/issue-0-1/ https://github.com/filerjs/filer/issues/483 https://github.com/filerjs/filer/pull/509
Oluwaseyi Aketepe http://codingblub.blogspot.com/2018/09/release-1-blog.html https://github.com/filerjs/filer/issues/528 working
Allan Zou https://azouprogrammingblog.wordpress.com/2018/09/24/lab-2-blog-post/ https://github.com/filerjs/filer/issues/410 https://github.com/filerjs/filer/pull/413
Yoosuk Sim http://shavedyak.blogspot.com/2018/09/github-issues-pull-requests.html https://github.com/filerjs/filer/issues/424 https://github.com/filerjs/filer/pull/429
Robert Dittrich http://robplusplus.blogspot.com/2018/09/first-open-source-experience.html https://github.com/filerjs/filer/issues/423 https://github.com/filerjs/filer/pull/432
Huda Al Dallal https://hudascoding.wordpress.com/2018/09/25/first-open-source-github-filer-js/ https://github.com/filerjs/filer/issues/480 https://github.com/filerjs/filer/pull/516
Daniel Bogomazov http://danielsopensource.blogspot.com/2018/09/my-first-pull-request-to-open-source.html https://github.com/filerjs/filer/issues/405 https://github.com/filerjs/filer/pull/458
Brendan Hung https://bhung6494.wordpress.com/2018/09/25/my-first-open-source-contribution/ https://github.com/filerjs/filer/issues/427 https://github.com/filerjs/filer/pull/457
Jeffrey Espiritu https://jespiritutech.wordpress.com/2018/09/25/osd600-release-0-1/ https://github.com/filerjs/filer/issues/400 https://github.com/filerjs/filer/issues/409
Deepanjali Gerangal https://deepanjalidotblog.wordpress.com/2018/09/26/release-0-1/ https://github.com/filerjs/filer/issues/418 https://github.com/filerjs/filer/pull/496
Steven Le https://stevenleopensourceblog.wordpress.com/2018/09/26/osd600-release-0-1/ https://github.com/filerjs/filer/issues/453 https://github.com/filerjs/filer/pull/454
Nathan Misener http://compileofcrap.com/OSD600/2.html https://github.com/filerjs/filer/issues/447 https://github.com/filerjs/filer/pull/448
Stephen Truong https://stephentopensource.wordpress.com/2018/09/26/release-0-1/ https://github.com/filerjs/filer/issues/419 https://github.com/filerjs/filer/pull/455
Derrick Leung https://derrickwhleung.wordpress.com/2018/09/27/osd600-release-0-1/ https://github.com/filerjs/filer/issues/518 https://github.com/filerjs/filer/pull/526
Yeonwoo Park https://ywpark1.wordpress.com/2018/09/27/open-source-contribution-filerjs-release-0-1/ https://github.com/filerjs/filer/issues/426 https://github.com/filerjs/filer/pull/452
Minying Chen https://minyingchen.wordpress.com/2018/09/27/release-0-1/ https://github.com/filerjs/filer/issues/529 https://github.com/filerjs/filer/pull/530
Wang Pan https://wangpansopensource.wordpress.com/2018/09/27/osd600-release-0-1/ https://github.com/filerjs/filer/issues/450 https://github.com/filerjs/filer/pull/486
Thanh Nguyen https://thanhnguyen105337150.wordpress.com/2018/09/27/osd600-release-1-0/ https://github.com/filerjs/filer/issues/474 https://github.com/filerjs/filer/pull/510
Sean Prashad https://medium.com/@SeanPrashad/a-systematic-approach-to-solving-bugs-bb2338d9c78 https://github.com/filerjs/filer/issues/499 https://github.com/filerjs/filer/pull/533
Dan Lin https://danosd600.wordpress.com/2018/09/27/release-0-1/ https://github.com/filerjs/filer/issues/456 https://github.com/filerjs/filer/pull/504
Vincent Wong https://vincent20180916.blogspot.com/2018/09/first-time-contributing-to-open-source.html https://github.com/filerjs/filer/issues/445 https://github.com/filerjs/filer/pull/466
Maya Filipp https://mordax.io/blog/seneca/2018/09/24/fs-copyFile-tests.html https://github.com/filerjs/filer/issues/436 https://github.com/filerjs/filer/pull/481
Stephen Ward https://whilenotzero.wordpress.com/2018/09/28/227/ https://github.com/filerjs/filer/issues/420 https://github.com/filerjs/filer/pull/476
Ruihui Yan http://ruihui.me/OSD600/2018/09/27/release-0-1/ https://github.com/filerjs/filer/issues/475 https://github.com/filerjs/filer/pull/519
ZHIBO DONG https://zhiboopensource.wordpress.com/2018/09/29/release-1/ https://github.com/filerjs/filer/issues/512 https://github.com/filerjs/filer/pull/531
Yuecheng Wu https://yuechengdotblog.wordpress.com/2018/09/28/release-0-1-first-open-source-contribution/ https://github.com/filerjs/filer/issues/459 https://github.com/filerjs/filer/pull/488
Volodymyr Klymenko https://medium.com/@volodymyrklymenko/my-first-contributions-to-open-source-world-6af2e77e0eb7/ https://github.com/filerjs/filer/issues/407 https://github.com/filerjs/filer/pull/415
Xiaochen Wang https://medium.com/@xiaochenwang/release-0-1-4b24889a0b0e https://github.com/filerjs/filer/issues/470 https://github.com/filerjs/filer/pull/477
Corey James https://blog176774291.wordpress.com/2018/09/25/my-first-open-source-pull-request/ https://github.com/filerjs/filer/issues/408 https://github.com/filerjs/filer/pull/449
Ryan Hayes http://osd600rhayes2.blogspot.com/2018/09/release-01.html https://github.com/filerjs/filer/issues/467 https://github.com/filerjs/filer/pull/485
Joshua Mayers https://joshuablog716228556.wordpress.com/2018/09/27/dps909/ https://github.com/filerjs/filer/issues/399 https://github.com/filerjs/filer/pull/401
Oleksii Kozachenko https://medium.com/@alexei.kozachenko/first-experience-with-an-open-source-project-8ee262f92eca https://github.com/filerjs/filer/issues/441 https://github.com/filerjs/filer/issues/394 https://github.com/filerjs/filer/pull/443 https://github.com/filerjs/filer/pull/538
Joshua Jadulco https://joshuajadulco.wordpress.com/2018/09/28/dps909-topics-in-open-source-development-release-0-1-discussion/ https://github.com/filerjs/filer/issues/506 https://github.com/filerjs/filer/pull/520
Shawn Pang https://shawnblog1.wordpress.com/2018/09/28/os600-contributing-to-open-source-solving-issues/ https://github.com/filerjs/filer/issues/461 https://github.com/filerjs/filer/pull/472
Alexander Ponomaroff https://opensource-topics.blogspot.com/2018/09/open-source-contribution-release-01.html https://github.com/filerjs/filer/issues/398 https://github.com/filerjs/filer/pull/402
Brett Larney https://brettlarney.wordpress.com/2018/09/28/my-first-open-source-contribution/ https://github.com/filerjs/filer/issues/417 https://github.com/filerjs/filer/pull/460
Muchtar Salimov https://muchtarosd600.home.blog/2018/09/28/getting-familiar-with-open-source-osd600-0-1-release/ https://github.com/filerjs/filer/issues/463 https://github.com/filerjs/filer/pull/494
Adam Kolodko https://ahkol.wordpress.com/2018/09/29/testing-filer/ https://github.com/filerjs/filer/issues/411 https://github.com/filerjs/filer/pull/478
Xuan Dinh Truong https://xdtruong.blogspot.com/2018/09/osd600release-01.html https://github.com/filerjs/filer/issues/435 https://github.com/filerjs/filer/pull/437
Mera Gangapersaud https://medium.com/merag/adding-a-unit-test-to-filer-c705ea07bd65 https://github.com/filerjs/filer/issues/500 https://github.com/filerjs/filer/pull/507
Shreena Athia https://shreenasopensource.wordpress.com/2018/09/28/assignment-1-testcase-writing-git/ https://github.com/filerjs/filer/issues/489 https://github.com/filerjs/filer/pull/492
Michael Overall https://michaeloveralldps909.blogspot.com/2018/09/adding-test-in-filerjs-for.html https://github.com/filerjs/filer/issues/392 https://github.com/filerjs/filer/pull/416
Peng Qu https://pengqu.wordpress.com/2018/09/29/release-0-1/ https://github.com/filerjs/filer/issues/438 https://github.com/filerjs/filer/pull/522
Mark Krutik https://markkrutikopensource.wordpress.com/2018/09/29/filerjs-1st-open-source-project-release/ https://github.com/filerjs/filer/issues/442 https://github.com/filerjs/filer/pull/464
Victor Kubrak http://victorkubrak.blogspot.com/2018/09/release-01.html https://github.com/filerjs/filer/issues/493 https://github.com/filerjs/filer/pull/502
Andriy Yevseytsev http://yevseytsevdps909.blogspot.com/2018/09/release-01.html https://github.com/filerjs/filer/issues/491 https://github.com/filerjs/filer/pull/501
Yuzhou Chen https://yuzhouchen.wordpress.com/2018/09/30/first-open-source-experience-with-filer-js/ https://github.com/filerjs/filer/issues/497 https://github.com/filerjs/filer/pull/525
Julia McGeoghan https://medium.com/@juliakmdev/babys-first-pull-request-ca3b416da182 https://github.com/filerjs/filer/issues/421 https://github.com/filerjs/filer/pull/462
Ryan Vu (Tien Phat) http://pynnl.blogspot.com/2018/09/my-first-pull-request.html https://github.com/filerjs/filer/issues/396 https://github.com/filerjs/filer/pull/406
Qingwen Wang https://qwang135.wordpress.com/2018/09/29/opensource/ https://github.com/filerjs/filer/issues/514 https://github.com/filerjs/filer/pull/517
Shawn Mathew https://shawnsblog447499268.wordpress.com/2018/09/29/dps909-fall-2018-release-0-1/ https://github.com/filerjs/filer/issues/469 https://github.com/filerjs/filer/pull/532
Karan Sandhu https://karansandhuwebsite.wordpress.com/ https://github.com/filerjs/filer/issues/473 https://github.com/filerjs/filer/pull/539
Jagmeet Bhamber https://medium.com/@jagmeetb/dps909-fall-2018-release-0-1-86db8078464f https://github.com/filerjs/filer/issues/431 https://github.com/filerjs/filer/pull/439
Alex Kong https://medium.com/@jrkong.hfd/getting-your-foot-in-the-door-for-open-source-713f3e40d3ad https://github.com/filerjs/filer/issues/487 https://github.com/filerjs/filer/pull/513
Thomas Nolte https://nolte96.wordpress.com/2018/09/30/release-1/ https://github.com/filerjs/filer/issues/465 https://github.com/filerjs/filer/pull/471
Matthew Phan https://medium.com/@matt.t.phan/the-initial-contribution-e32fe210b005 https://github.com/filerjs/filer/issues/444 https://github.com/filerjs/filer/pull/468
Stuart Crust https://stuartcrust.com/2018/09/a-return-to-open-source/ https://github.com/filerjs/filer/issues/384 https://github.com/filerjs/filer/pull/385
Charlotte Baptist https://mycbprogramming.wordpress.com/2018/10/09/release-0-1-osd600/ https://github.com/filerjs/filer/issues/544 https://github.com/filerjs/filer/pull/545
Adam Pucciano https://operationaladam.wordpress.com/2018/09/28/nodejs-contributions/ https://github.com/filerjs/filer/issues/534 https://github.com/filerjs/filer/pull/535
Dilan Guneratne http://dilanguneratne.ddns.net/contributing-to-filer/ https://github.com/filerjs/filer/issues/387 https://github.com/filerjs/filer/pull/412
Yuliya Yatsenko https://yatsenkojulia.wordpress.com/2018/10/12/my-first-experience%E2%80%8B-of-contributing-to-open-source-project/ https://github.com/filerjs/filer/issues/523 https://github.com/filerjs/filer/pull/524