How the Sausage is Made

Looking at Django's development process from the inside.

About me

baptiste.jpg

Baptiste Mispelon

Online: bmispelon

Web developer

Django core dev since June 2013

About this talk

Three parts:

  1. What is Django?
  2. How is Django developed?
  3. How to contribute?

1 - What is Django?

django-pony.png

The framework

"The web framework for perfectionists with deadlines"

History

The DSF

Django Software Foundation

The DSF's activity

The core team

core_team.jpg

The core team

Core team == People with commit access.

Core team's activity

Perks

Perks

How to join the core team?

The community

Django's most valuable asset.

Code contributions

We have 10 times as many external contributors as core devs:

$ git log --format=%an \
    | sort -u \
    | wc -l
584

Ecosystem

There's a huge wealth of reusable applications:

$ pip search django \
    | grep ^django- \
    | wc -l
4061

Community events

Conferences all over the world:

USA, Europe, Australia, Wales, Italy, ...

There are also regular meetups everywhere.

Not to mention all Python-related events.

2 - How is Django developed?

pony_factory.png

Release process

Git / Github

Trac

Protip: the Django dashboard

https://dashboard.djangoproject.com

Pretty graphs, useful shortcuts to trac.

Django dashboard

Django_dashboard.png

Mailing lists

Big features are discussed on django-developers.

Someone comes with a proposal and people discuss it, gathering feedback.

The goal is to reach a consensus from which we can start building.

Other official mailing lists

Internationalization

Django is translated in 81 languages:

Translation process

3 - How to contribute?

pony_puzzle.png

Help others

Try early versions

We release Alpha, Beta, and RC versions.

Test them in your own projects before they're released.

How to install a pre-release?

Use virtualenv and pip:

pip install \
 https://www.djangoproject.com/\
 download/1.7b1/tarball/

How to install a pre-release?

Use virtualenv and pip:

pip install -e \
 git+https://github.com/\
 django/django.git@1.7b1

How to install a pre-release?

Use virtualenv and pip:

pip install --pre Django==1.7b1

(soon)

Report bugs

Sooner or later, you'll find a bug:

A good ticket

Reproducability is key:

Triage

There's about 5-10 new tickets opened every day.

Anybody can help out, not just core devs.

What to do on Trac?

Contribute code and docs

Write libraries

Django's strength is also the huge amount of libraries written for it.

Promote quality: tests, documentation, Python 3 support, ...

Blog

Not everything has its place in the documentation.

Some things are better left for the community to document.

Why not write your own blog engine with Django?

Attend events

Meet the community, become part of it.

Learn about cool new stuff.

Make friends!

Level up

Can't find an event you'd like to attend?

Why not organize your own?

You won't get to sleep for days, but you'll learn a ton and it'll give you a new perspective.

Something for everyone

Conclusion

Django is a community project.

We want openness and transparency.

Anything else is a bug.

Help us fix it!

Dziękuję!

Pytania?

Bonus: my merge workflow

wget https://github.com/\
    django/django/pull/XXXX.patch
git apply XXXX.patch
PYTHONPATH=. python tests/runtests.py
git checkout -- django/
PYTHONPATH=. python tests/runtests.py
git checkout -- .
git am XXXX.patch
git push
# Close PR.