Hide menu

Large-Scale Software Development: Contributions and Evolution

Course information


Course goals

The course goals, as stated on liu.se/studieinfo, 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 select a project that you wish to contribute to. You are free to choose any project as long as it meets the requirements (see below for details). Students who have participated in TDDE06 can continue on a projects from that course.

Note that projects are required to be actively developed by a sufficiently large group of developers so that you will come in contact with an active community. Therefore, this year we require projects to be actively developed by at least 15 developers.

The course features weekly seminars, where each group of four to seven 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.

Criteria for grades are found on the Examination page.

Projects

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 30 developers, of which 15 have been active in the last three months,
  • with at least 1000 commits
Here are some suggested projects, but check that they are (still) being actively developed and maintained by at least 20 developers. Some projects may have been forked to a new branch with more active development.


## 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


## 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


## 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: Mikael Asplund
Last updated: 2020-08-31