The entire SENG 513 class will be working together on one project. The project repository will be hosted on GitHub. Only the TA will commit directly to the mainline (i.e., the main project repository). Each student should create their own fork of that repository on GitHub and clone it into their local environment (more details below).
At it's core the proposed application is a system that allows participants inside and outside city hall to discuss issues and collaboratively develop proposals around those issues. Both open discussion and structured proposal development (with links to discussion) should be supported. Needed are features to help residents become aware of pertinent issues (based on location, history, following, ...) and solicit participation in issues.
I would like to release the code we create as open source. Please let me know if you have any concerns about this or if you have thoughts on which open source license to use.
We will be using Node 0.4.0, jQuery 1.5 and Git. Node is fairly cutting edge and involves significant risk. We may find ourselves building some components that we would get for free if were using more mature frameworks, etc. However, this will be a valuable learning experience.
Work on the project will be organized using a list of issues which is basically a list of things that need to be done. Each student can claim one issue at a time. Completing a task involves creating appropriate tests and documentation. It is normal that in some respects a task will be ambiguous and so may require further discussion before it can be completed.
Project source code will be managed through GitHub. You will have your own repository where you can work in isolation (at the beginning with your group). To set this up, use the account you created in Assignment 3 and fork the course project.
Work on the project will be organized using features, bugs, and chores:
It is more important for us to develop a system using good software engineering principles than to implement a large number of features. This is a software engineering course and students are intended to learn and demonstrate relevant software engineering principles and techniques. I would like this to be a system that is genuinely useful and that future students can build on.
All of the code you create will be reviewed (by a TA and/or by other students) and each student will get a chance to do some reviewing. Code reviews will occur through pull requests on GitHub. When your changes are ready and part of your forked repository, you will initiate a pull request with the mainline repository (which you forked from). Please, read this page about pull requests on GitHub. Your pull request opens a discussion on the main project's pull requests page where changes can be commented on and revised. When both parties are satisfied, the pull will be accepted and the TA will integrate your changes.
Code review is a chance for code to be improved and the author of the code to learn. If a reviewer is not satisfied with the code you submitted, you will be given a chance to make some changes and resubmit your code. Do not respond defensively to suggestions, but you should feel free to negotiate with the reviewer. Your project mark will not depend on other student's review of your code, however, you will be marked on how effectively you do code reviews.
The main deliverables for the project will be source code implementing issues from the project issues list. Here is how you get your code in the mainline:
git commit -m "comment. Closes GH-n"
When the TA is satisfied with the code, he will incorporate it into the mainline.
To facilitate marking you will need to submit 4 project reports over the course of the term. Each report should be a maximum of 1 page long and is your chance to make the case that your contribution to the project has been significant. Use the following sections for your reports:
In your report you should only include changes that have been successfully included in the mainline. Changes that are still under discussion or require further changes to pass review, will have to wait for future reports.
The project will be marked out of 35 and marks will be associated with your project reports as follows: