SENG 513 Project

Github repository for course project, tasks for the system are recorded in the Github project's issues list

If you have any line ending issues you may want to read this article

Important project changes

A large team project

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.

Open source

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.

Organizing our work

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 source code will be reviewed

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.

Submitting code

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:

  1. Select an issue to resolve from the project issues list and claim it with a comment.
  2. Write well documented and tested code resolving that issue.
  3. Commit your code in your local repository: git commit -m "comment. Closes GH-n"
    Organize your code as one or more clear logical commits in your own repository. Include clear comments which include the issue number (replace n with actual number) in the commit description.
  4. Make sure your repository is up-to-date to with the mainline and passes all tests.
  5. When you solved the issue push the changes to your forked repository using git push
  6. Issue a "Pull Request" on the GitHub page of your forked repository (upper right screen) to indicate that your changes are ready to be merged with the mainline.
  7. A discussion with the reviewer will follow on the pull requests page. Participate in this discussion, making source code changes as needed.

When the TA is satisfied with the code, he will incorporate it into the mainline.

Project reports

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:

  1. Contributions: resolved issues and reviews (8 marks). Include:
    • A list of issues you have resolved, and the list of commits that resolved them. You should show value and breadth in your contributions. Each issue is worth a number of marks as indicated by the points in the issues list.
    • A list of changes that you reviewed. Show how you helped improve those contributions. Each review is worth 1 mark.
  2. Suggestions (1 mark). Give several ideas about how the project code base could be improved. For example, you may suggest an architectural change that could improve the performance of our system, or a design change that would make it easier to add new views.

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: