Having Your Pony and Committing It Too

by Jacob Burch

  • Works for @revsys
  • Contributed to django.core.cache
  • Not in AUTHORS file of Django (yet)

For many years before 2012, the topic at the tip of every argument-seeking tongue at Django Conferences was “”when is Django going to get on Github?”” Getting the core framework on the social coding site was the first stride in breaking down the barriers to having anyone and everyone not only having a pony, but getting it into core too. Now that this important step is almost a year in, just how easy is it to take the step from end-user to core-contributor? Delightfully Easy.

So easy, that I’ll be breaking every rule I know in giving a talk and actually attempting to get a feature from idea, to code, to request, to a live haggle-and-debate session with core contributors in-audience, to pull request to (hopefully!) merge all within 30 minutes. Advice from a variety previous contributors on will be provided throughout the demonstration, including tips for getting very small bugs fixed quickly to strategies for getting necessary groundswell for larger full-feature ideas.

Not covered

  • You need to know virtualenv/git
  • Large overview of Django’s core code
  • Advice in what to get involved in

Thoughts

  • It’s scary to start contributing to Django
  • It seems labrythine, and it is.
  • It can take a while to get core code in
Max Weber describes politics as “the slow boring of hard boards”. Open source is much the same. – Russell Keith-Magee

Confident vs Bold

  • Follow the wikipedia motto: “Be Bold” – Alex Gaynor
  • You are not your code – Marty Alchin

Before you do anything with Django

  • Fork Django
  • git clone your repo
  • ./runtestspy --settings=test_sqlite
  • Da not pass GO until tests run*

Forms of Contribute

  • Bug Fixes are a great place to start
  • Minor Contributions
  • Major Contributions

Bug Fixes

  1. Write a test
  2. Have it break
  3. Fix the code until tests pass
  4. Test against regressions
  5. Fix is not necessarily free from discussion

Major Contributions

Do your homework

  • Search trac
  • Search django-developers
  • Become familiar with the code you’re proposing.

Minor Additions

  • Follow same steps as major contribitions

Risking against everything we are supposed to do

  • Coding live
  • Submitting to Django live

Russ is talking

Ticket #9595 in Django

Note

Video of Jacob Talking while he starts coding began here.

How to make a proposal

  • Don’t communicate entitlement

  • Don’t focus only on your own needs

  • Be decent

  • State the problem clearly

  • Confidence: propose a clear solution

  • Show your homework

    • Previous tickets/attempts
    • Potential downsides/drawbacks
    • Humility: Unsure of aspect? Ask!

Code

  • Make the code work

  • Document your work

  • Make the code follow standards

    • Stay within pep8 mostly
    • respect existing style
    • linters are your friend
    • comments are must
    • get a peer code review before submitting
  • Document and boldly defend design decisions (wiki)

Note

Video of Jacob Talking while he starts coding ended here.

Review

  • Your ego is not on the line.
  • Humility: No, really.

Lack of Review

  • Patience: Core members are people
  • Pro-active: Send polite, friendly follow up messages often

Review: Part 1 of n

  • Confidence: Do not give up or get angry if changes must be mad.
  • Follow up quickly
  • Email tag can be frustrating
  • #djang-dev can help

Note

Russell reviewed the code here