Translation(s): English - ?简体中文

(!) ?Discussion

Is the Debian Project a home for my programming skills?

It depends on your developer characteristics and skills.

First, ask yourself why do you want to contribute to a free (libre) software project? [26], [27]

For maximum results and satisfaction, it is better to have a combination of the characteristics listed below.

Some people feel more comfortable being involved in other communities, with different social environments [31]. But even so, you should contribute to the Debian Project to improve other FLOSS projects [30]. The Debian Project is like an "upstream" project for many distributions. A number of Debian developers directly contribute to upstream projects as well, and all Debian developers contribute at least indirectly.

Want to do things the right way

You have pride of your well done work.

No low quality short cuts.

Do not want ugly hacks in a hurry only to meet a deadline date.

No lazy programming.

You want to create technically sound solutions.

You are not afraid to follow a strict development process (Debian Policy [7] and related/derived policies [8]) that has evolved over many years targeting the best resulting systems.

Want to create and implement the best solution

You want to create high quality solutions [9].

The highest standards attainable.

The reference others compare to.

Want to learn a lot every day

You are not afraid of reading really LOTS of documentation before asking. You do your homework before.

You are not afraid of asking for help and hints from other developers to learn different approaches.

You are willing to try different programming solutions, and not afraid of unorthodox ways of thinking.

You are a committed person

Users depend on your work.

Other developers depend on your work.

Community depends on your work.

Debian Project depends on your work.

Are you willing to be there when needed?

You are a disciplined person for the work

You may like and practice radical sports. Or defend unusual ways of living, politics, religions, etc. It does not matter at Debian Project (written in the Debian Social Contract [0]).

But the Debian Policy needs a disciplined developer for the work.

Able to work in a community

It is highly recommended that you have enough social skills to work in communities, or at least small groups and teams.

The Debian Project has some guidelines [5] and rules [3], [0] that warrant your rights [4] and tell you some limitations about working and living within a social group.

You have rights and duties [6] relating to a peaceful and productive work environment and learning experience.

You have a place to guide you in your first steps [10] and a place to ask for hints [11] at the initial phase.

Sure, you can talk with (almost) no one and only code [13]. Many very skilled developers do not have (almost) any people communication skill. It is not an obligation. But you may miss some opportunities to teach and learn interesting things from/to other very skilled people like you. These should motivate you to acquire some minimal communication skills [14].

Want to work in the Project not for money

The Debian Project is a not-for-profit entity and it does not employ developers. Maybe you get some (temporary?) financial sponsoring from third parties. Or your employer may pay you in order to push forward some working solution. Or your company wants to reduce development and maintenance risks by offering code to the Debian Project and invoicing your customers for technical support. Or you work on some programming bounties. Or got a kind of Summer of Code sponsoring. There are some methods of making money working with FLOSS [15], [25], [26].

But the Debian Project has evolved through community spirit and does not have resources for reimbursing you. The Debian Project has limited resources coming from donations and sponsoring. Most developers do not work on the Debian Project for any (direct) money. You need to have other (direct) work motivations. It is not cast in stone, but the "Debian culture" accepts sponsoring companies, donations, some indirect funding (travel, hosting, machines...), employers funding, code/bug bounties, etc., all from external sources to the Debian Project.

You will not work for free for a company. The Debian Project is not a company [0], [3].

Not afraid of hard work

You will have a lot of hard work ahead.

It will be very interesting. You will learn a LOT from documentation and from other very skilled people.

But you will have to study a LOT. Search the Internet a lot. Visit the library a lot. Develop and re-develop and restart from scratch many times using other approaches until your solution is accepted by your peers as a good technical solution.

You will have to dedicate MANY hours to hard work advancing your technical skill.

You will have to learn a very lengthy development process and tools. Be prepared for a very long period of study [17], [18].

What are Debian Project advantages for a developer?

The WhyDebian page will explain this to you. And more.

Social Contract

The Debian Project has a social contract [0] and a Constitution [3] and it is not a commercial entity, nor controlled by one.

The Debian Project is not controlled by a board of investors, or a board of directors or a benevolent dictator, or a private owner. It is a meritocracy [16] with yearly elected leader [3], [4] and meritocratic key functional positions.

It does not have to pursue profits, nor practice censorship for commercial advantages [1], nor can go out of business (it is not even a business)[2]. It cannot be sold, nor go bankrupt.

The Debian Project does not want to sell you anything, nor invoice you anything.

The Debian Project does not change directions at market profit trends. Does not 'show you the door' because you are not profitable anymore. Does not abandon users in light of profit margins or trends. It does not want to "milk" users/developers as hostages, forcing continuous un-needed upgrades, or have programmed obsolescence to keep profits.

Nor will it be dependent on sponsorship goodwill from a specific (steering) company, sponsor, donator or group. Nor will it be eager to appease them.

The Debian Project is fully committed to user needs, as written here [0], [3].

Debian Policy

The enforced Debian Policy is the real technical differential of the Debian Project.

And it is practiced by the developers.

The tools and infrastructure only ease the repetitive work, freeing the developer for the really creative work and clever programming.

Following the Debian Policy, developers can achieve the high standards the distribution is known for.

Developer tool chain

If you ever tried to compile and package for other distros, you know "dependency hell".

The Debian Project has myriads of developer tools to help your task.

Read 'man' pages and docs about auto-apt [19], dpatch [20], fakeroot [21] and debhelper [22], as a small sample.

The Debian Project has almost all compiler and languages ever created in its repositories.

The Debian Project produces software that targets more than 11 different architectures, so your software must compile on all of these.

If you need help for this, Debian has 'porters' to help with that and it also has access for you to test your software on various developer machines with various CPUs.

Simple packages are really simple to accomplish [23]. Complex and advanced packaging tasks are simplified with debhelper and tools [24].

Project infrastructure

The Debian Project has scripts, remote services and resources for automatic processing to the maximum extent for almost every item of Debian Policy or aspect of software development.

You will be almost free of repetitive work, freeing your time to develop technically solid solutions.

The Debian Project even has a team dedicated to improving the quality [9].

Developer community

The Debian Project developer community is a VERY dependable one. The community is very organized and very vocal, with strong positions [29]. Intelligent and smart questions will always quickly find someone to help or point directions for research. But those very same skilled developers has almost zero tolerance for lazy developers and dumb or repetitive questions.

You MUST do your homework before asking for help.

Intelligent and solid questions (research done before asking) will attract attention from bright developers. They like a knowledge challenge, not a documentation or discussion list repetition. Or something easily solved by an Internet search or a trip to the next library.

As many skilled developers are harsh to deal with [13], you will likely not find soft talk or hand holding, but the most clever answers you could find anywhere.

Your proposed solution will very likely receive corrections, some of which may be extensive. The other developers want the best solution. And will discuss solutions extensively before implementation when needed. It is not about you.

It is because all Debian Developers are in the pursuit of technical excellence.

As you are.

Useful links