Object-Oriented Software Engineering

This is an archived version of https://www.jhu-oose.com that I (Leandro Facchinetti) developed when teaching the course in the Fall of 2019. Some of the links may be broken.

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.

  1. 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?

  2. 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 the master branch and accept your changes instead.

Answer the following questions:

  1. Why are the maintainers asking you to rebase the commits?

  2. Why are the maintainers asking you to squash the commits?

  3. On your machine, fetch from jhu-oose/todoose, switch to the open-source branch, perform the changes requested by the maintainers, and push the result to a branch called open-source on your student’s repository at https://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:

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.

  1. 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?

  2. 10 points Consider your contractual obligations to Facebook. What do you have discuss with them before you release your work?

  3. 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?

  4. 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.

Assignment

For example, jhu-oose-example-student.
Don’t include an @ sign at the beginning—this isn’t a mention.
GitHub identifiers do not start with 2019-student-.

For example, 48092726db45fd4bcde21e3712ac2d8e4a094797.
Graders will look at the code base as of this commit.
The code base as of this commit must include the filled in template at assignments/10.md.
You may find the commit identifier on the commits page at https://github.com/jhu-oose/2019-student-<identifier>/commits/master. Usually you want the most recent commit.

Anonymous Feedback on Lecture 10

Confidence


Relevance


Difficulty


Pace


Anonymous Feedback on Assignment 10

Confidence


Relevance


Difficulty


Load


Anonymous Feedback on the Course Overall

Would You Recommend the Course to a Friend?

Were You Happy with the Support Provided by the Course Staff?

Anonymous Experience with the Tools in the Toolbox

IntelliJ IDEA




Postman




Google Chrome




Git




GitHub




Paper & Pencil




Java




Gradle




Javalin




Jackson




JUnit




SQLite




JavaScript




Hypertext Markup Language (HTML) & Cascading Style Sheets (CSS)




React




JavaScript Object Notation (JSON)




Heroku




Travis CI




Markdown




⚠️  Don’t submit this form multiple times.

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.