Inner Source, basically is to bring Open Source inside a company. The Open Source software development platform and process allow programmers across the world to work on the same project at anytime, and produce very high quality software that is well documented. It is a higher standard of software development. This platform and process can be brought inside a company for members in a company to participate in software development process seamlessly. It is “Open” to all people inside a company.
- Like open source software projects (for example Linus in Linux project, Guido in Python project), inner source respects project ownership as well, at the same time allows for very open discussions and inputs without losing efficiency. So every project will have an owner, whose role and responsibility is just like an open source project owner.
- Flat learning curves for competent new developers. When new developers join, they don’t need to ask here and there to get to know all the resources. The environment should be built up to allow new developers to start contribute to the projects soon, just like in open source projects.
- Programmers participate in a project just like how they participate in an open source project: normally they start from debugging or working on TODOs inside the code, and submit pull requests. And they move up the ranks by making contribution and demonstrating skills.
- New official projects will be listed under new projects page. These new projects need to be “owned”. Programmers can apply to own these projects.
Programmers can start their own projects as well in company code platform (github currently). However, these projects have to demonstrate its usefulness and quality to be recognized as “official” projects.
- Programmers’ work and contribution will be evaluated based on the official projects that programmers work on. The evaluation will be based on professional experience and judgement instead of superficial numbers. After all, software process is a complex process. Numbers will be used to help analysis.
- There is no boundary of programming and programmers. There are certain percentage of tasks that will be assigned and arranged by team leaders. Additionally, programmers can work on any project that they are interested and feel they can make a contribution. So devops people, QA people can work on programming projects as well. Non tech team members can also work on programming projects. But the acceptance of pull request will be the right of the project owner.
- With official and unofficial projects, we intend to build up a rich environment with many projects that people can participate in and learn various programming skills step by step. All projects are following the open source standard, with flat learning curve and easy to participate and contribute. Thus a learning environment for software programming will be built up, which will be essential for us building up a strong software team.