Hide menu

TDDE14 Large-Scale Software Development: Contributions and Evolution

Course information

Course goals

The course goals, as stated in the Study Guide, are
  1. Use existing conventions and follow established processes to contribute through software to a distributed, large-scale development project.
  2. Present changes and updates so external parties may approve submissions.
  3. Create a time plan and monitor progress through a common development project
  4. Use appropriate tools for contemporary, large-scale software development
  5. Independently acquire new knowledge and skills in order to contribute to a large-scale software project.
Goal 1 is examined through accepted submissions to a large-scale open-source project. This is the main goal of the course. In order to achieve goal 1 and have external reviewers of submissions approve students' work, students will have to fulfill goal 2, and ensure that external reviewers can successfully review their work. Contributing to a large open-source project requires independent work, and skills related to project management. Therefore, students are required to demonstrate that they can perform goal number 3 during weekly 1h seminars. Projects that scale to a large number of developers (50+) typically make use of toolchains for continuous builds, tests and integration of software. Students will therefore need to present how they make use of development tools for contemporary software development (goal 4). Each project will be unique in some sense, requiring students to learn new skills and techniques in order to contribute. As part of the course, students need to plan for, and independently acquire, relevant knowledge to work on their chosen project.

Course format

The first week of the course, you will get to select from among a set of projects one that you wish to contribute to. Students get to select two projects each that they would like to contribute to, based on a curated list of projects from TDDE06, or another one. Note that we have made a slightly more compact categorization here compared to in TDDE06. The projects will then be assigned a group of students based on your preferences by the course staff. The course features weekly seminars, where each group of three to four students will get to demonstrate their progress. The first week, you get to write contribution plans that describe how to contribute to a project. Every second week, there will be a sprint review, where the plan for the sprint is compared to the outcome of the sprint. Each sprint will also contain a mid-sprint meeting, where participants are required to participate to report on their progress and discuss issues during development.

Course examination

Passing the course requires fulfilling a number of criteria as listed below. A passing grade requires students to score at least on the lowest level in all categories and achieve a minimal score of 22 points.

The overall grade is determined by your score in the categories for each criterion. Each criterion is weighted, and the sum translates to your final grade.

Grading criteria

The project rating is calculated based on a number of categories as described below. Each category (Technical difficulty,Process difficulty) has three levels ("Easy", "Medium", "Expert") that translate into points according to the table below. Each category is further described by a number of attributes, and at the start of the project, the project-related attributes are translated to a common assessment for all projects. When choosing the level for each category, the most fitting descriptions will be selected. The course staff will assess whether your estimates of difficulty or contributions are accurate.

The sum of points will translate into a grade as follows:

  • Grade 3: 22-36 points
  • Grade 4: 37-51 points
  • Grade 5: 52-66 points
Failure to meet the lowest criterion on any attribute, in any category, will result in failure to pass. You must at least fulfill the minim requirements for each attribute.


Projects that students select to work in during the course will have to fulfill some basic criteria on their size. Currently, we define a "large-scale project" as being one that is
  • actively developed, by
  • at least 50 developers, who have contributed
  • at least 3000 commits
The projects listed below all fulfill those criteria, but you are free to choose your own projects.

## Web
- Django:
	- Github: https://github.com/django/django
	- Documentation for contributors: https://docs.djangoproject.com/en/dev/internals/contributing/
- Rails
	- Github: https://github.com/rails/rails
	- Documentation for contributors: http://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html

## Game
- cocos2d-x
	- Github: https://github.com/cocos2d/cocos2d-x
	- Contribute: https://github.com/cocos2d/cocos2d-x/blob/v3/CONTRIBUTING.md
- libgdx
	- Github: https://github.com/libgdx/libgdx
	- Contribute: https://github.com/libgdx/libgdx/wiki/Contributing

## Dev
- Docker
		- Github: https://github.com/docker/docker
		- Contribute: https://github.com/docker/docker/blob/master/CONTRIBUTING.md
- Chef
		- Github: https://github.com/chef/chef
		- Contribute: https://github.com/chef/chef/blob/master/CONTRIBUTING.md
- Eclipse
		- Git repositories: https://git.eclipse.org/c/
		- Contribute: https://eclipse.org/contribute/
- IntelliJ
		- Plugin Repository: http://plugins.jetbrains.com/
		- Core repository: https://github.com/JetBrains/intellij-community 
        - Contribute: http://www.jetbrains.org/display/IJOS/Contribute

## Machine Learning
- Scikit
	- Github: https://github.com/scikit-learn/scikit-learn
	- Contribute: https://github.com/scikit-learn/scikit-learn/blob/master/CONTRIBUTING.md
- Caffe
	- Github: https://github.com/BVLC/caffe
	- Contribute: http://caffe.berkeleyvision.org/development.html

## Text editors
- Atom
	- Github: https://github.com/atom/atom
	- Contribute: https://github.com/atom/atom/blob/master/CONTRIBUTING.md
- Textmate
	- Github: https://github.com/textmate/textmate
	- Contribute: https://github.com/textmate/textmate/blob/master/CONTRIBUTING.md
- Neovim
	- Github: https://github.com/neovim/neovim
	- Contribute: https://github.com/neovim/neovim/blob/master/CONTRIBUTING.md

## General
- Libreoffice
	- https://www.libreoffice.org/about-us/source-code/
- Blender
	- https://www.blender.org/get-involved/developers/
- D3
	- Github: https://github.com/d3/d3
	- Contribute: https://github.com/d3/d3/blob/f2347b4ea1e25f18ff1864576d8e0180e823ba38/CONTRIBUTING.md
- Linux
	- Github: https://github.com/torvalds/linux
- OpenBazaar
	- Github: https://github.com/openbazaar
	- Contribute: https://docs.openbazaar.org/06.-Developers/

Page responsible: Ola Leifler
Last updated: 2017-08-28