Difference between revisions of "DPS909 & OSD600 Winter 2017 - Lab 2"
(→2. Understanding package.json) |
|||
Line 38: | Line 38: | ||
* correcting errors generated by http://package-json-validator.com/ for a <code>package.json</code> file | * correcting errors generated by http://package-json-validator.com/ for a <code>package.json</code> file | ||
* adding missing optional fields to a <code>package.json</code> file | * adding missing optional fields to a <code>package.json</code> file | ||
+ | |||
+ | Before we can fix any issues with existing <code>package.json</code> files, we have to find some! Our first task is to locate 1 module with an issue per student: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! # | ||
+ | ! NPMJS Module | ||
+ | ! Assigned Student | ||
+ | ! Pull Request URL | ||
+ | |- | ||
+ | | 1 | ||
+ | | [https://www.npmjs.com/package/request request] | ||
+ | | [https://github.com/humphd humphd] | ||
+ | | https://github.com/request/request/pull/2514 | ||
+ | |- | ||
+ | | 2 | ||
+ | | [https://www.npmjs.com/package/gulp-util gulp-util] | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 3 | ||
+ | | [https://www.npmjs.com/package/dat-next dat-next] | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 4 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 5 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 6 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 7 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 8 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 9 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 10 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 11 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 12 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 13 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 14 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 15 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 16 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 17 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 18 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 19 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 20 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 21 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 22 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 23 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 24 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 25 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 26 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 27 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 28 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 29 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 30 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 31 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 32 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 33 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 34 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 35 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 36 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 37 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 38 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 39 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
[https://www.google.ca/search?hl=en&as_q=&as_epq=inurl%3Apackage+json&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=github.com&as_occt=any&safe=images&as_filetype=pdf&as_rights=#hl=en&as_qdr=all&q=%22inurl:package.json%22+site:github.com+filetype:json list of package.json files on github.com] | [https://www.google.ca/search?hl=en&as_q=&as_epq=inurl%3Apackage+json&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=github.com&as_occt=any&safe=images&as_filetype=pdf&as_rights=#hl=en&as_qdr=all&q=%22inurl:package.json%22+site:github.com+filetype:json list of package.json files on github.com] |
Revision as of 13:38, 18 January 2017
Contents
Contributing to an Open Source Project on Github
In this lab you will contribute a fix to an open source project on Github. Successfully completing this lab will require you to have first worked through, and understood, this week's git walkthroughs. If you have not already done so, please setup git and Github as described in the following:
1. Install node.js
We will be contributing to projects that use node.js, its package manager npm, and the npmjs module registry. In order to complete this lab, you will need to install node.js, which you can download here.
2. Understanding package.json
Node uses a special file named package.json
to specify metadata about a module. You can read a complete description of package.json
at https://docs.npmjs.com/files/package.json.
A package.json
file has to be valid JSON, and must include a few fields. However, many of the fields are optional. Let's look at some examples from popular node.js open source projects:
- https://github.com/foreverjs/forever/blob/master/package.json
- https://github.com/expressjs/express/blob/master/package.json
- https://github.com/request/request/blob/master/package.json
- https://github.com/tj/commander.js/blob/master/package.json
These package.json
files have common elements, such as:
- a name
- a description
- a version
- a license
There are also some optional fields you can include, for example:
- a list of keywords
- a homepage URL
- repository info
- bugs info
The metadata in package.json
is used by the command-line tool npm
as well as by the online registry https://www.npmjs.com/. Providing good data for these tools makes it easier for developers to find and use node modules.
3. Contributing fixes to package.json files
For our first contribution to an open source project, we're going to go looking for ways we can help existing node.js based projects do a better job with their package.json
files. This could involve a number of things:
- correcting errors generated by http://package-json-validator.com/ for a
package.json
file - adding missing optional fields to a
package.json
file
Before we can fix any issues with existing package.json
files, we have to find some! Our first task is to locate 1 module with an issue per student:
# | NPMJS Module | Assigned Student | Pull Request URL |
---|---|---|---|
1 | request | humphd | https://github.com/request/request/pull/2514 |
2 | gulp-util | ||
3 | dat-next | ||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | |||
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
25 | |||
26 | |||
27 | |||
28 | |||
29 | |||
30 | |||
31 | |||
32 | |||
33 | |||
34 | |||
35 | |||
36 | |||
37 | |||
38 | |||
39 |
list of package.json files on github.com
...
Submission
You will have completed your lab when you have done the following:
- Create a Pull Request to a project fixing some problem or omission in their
package.json
file - Write a blog post about the process you took to complete this Pull Request, and about what happened next. Was it accepted? How long did it take? What did they say?
- Write about your feelings contributing to your first open source project. What went well? What was hard? What surprised you?
You should complete Lab 2 before the start of week 3.