Assignment 10: Open-Source
Working on the Assignment
Semantic Versioning
5 points
Let’s start assigning version numbers to the different versions of TODOOSE following the convention of Semantic Versioning.
By the end of the video series, TODOOSE reached 1.0.0.
-
In Assignment 5 we implemented the feature to show and hide completed items, as opposed to just removing them from the database forever. We want to release a new version of TODOOSE, what version number should it be? Why?
-
In Assignment 8 we implemented user management: authentication (user signup & login), and authorization (only logged in users can see the list of items). In the assignment we only implemented the server part of these features, but suppose that we have now completed the rest of the feature, with the client, documentation, tests, and so forth. We want to release a new version of TODOOSE, what version number should it be? Why?
Governance Models
10 points
In lecture we talked about how different open-source communities are organized and how it’s important to understand these organizational structures to use and contribute to open source effectively.
Many of the tools in the Toolbox are open source. For each of the following, find out what’s their organizational structure. Are they backed by a company (if so, which company)? Are they driven by a committee or a team of people (if so, who’s in it)? Or are they led by some lonely guy living in his mother’s basement (if so, who’s that person)?
Technology
20 points
You’re working on a contribution to TODOOSE. Your work-in-progress is on the open-source
branch, and when you show it to the maintainers of the project, you get this response:
Thanks for contributing. We like what you have there, but before we can accept your contribution, please rebase your commits onto
master
and squash them into a single commit. In case of a conflict, discard whatever you find on themaster
branch and accept your changes instead.
Answer the following questions:
-
Why are the maintainers asking you to rebase the commits?
-
Why are the maintainers asking you to squash the commits?
-
On your machine, fetch from
jhu-oose/todoose
, switch to theopen-source
branch, perform the changes requested by the maintainers, and push the result to a branch calledopen-source
on your student’s repository athttps://github.com/jhu-oose/2019-student-<your-github-identifier>
. Don’t fork the TODOOSE repository or you risk publishing your answers publicly, which is a violation of the Academic Integrity policy. Use the same workflow you used in the programming assignments, for example, Assignment 4.
Licenses
15 points
The enterprise embraced open source. Let’s explore the choices of licenses these companies are making and go beyond the tools in the Toolbox. For each of the projects below, name the company behind the open source project, the license they’re using for that project, and speculate why they’re choosing that license:
- Visual Studio Code.
- MySQL Community Edition.
- 🤗 Transformers.
Let’s Open Source!
You finally landed that sweet gig on Facebook. But that isn’t the only thing you have going on: your side projects are also flourishing. In fact, one of these projects reached a point where it’s ready to become public. You want to release this as an open-source project for other people and companies to use and contribute to.
-
20 points What’s your project about? (If this is a real side-project that you have, it’s even better.) Where do you see this project going in the next one or two years? Why do you want to open source it?
-
10 points Consider your contractual obligations to Facebook. What do you have discuss with them before you release your work?
-
10 points An open-source project is not only the code. What other logistics do you need to consider to publish your project to GitHub?
-
10 points What can you do to foster a community around your project? Do something original that you don’t typically find in other open-source projects.
Submission
⚠️ Your assignment is submitted only when you submit the form below.
If you run into problems, send an email to assignment-submission@jhu-oose.com. Include the information about the submission: your GitHub Identifier and the Commit Identifier. Don’t include any information about the feedback—it’s anonymous.