Django History

Considerations

  • Web development needs to be stupidly fast
  • automate repetitive tasks
  • best practices
    • Obsessed with web standards and best practices
    • You have to enhance, extend, and maintain

Choices

  • open source
  • BSD license
  • python
  • pragmatism over methodology
    • Didn’t care about GoF, MVC, TDD?
  • Why break the standards?
    • A lot of it is snake oil
    • “There is no silver bullet” - Fred Brooks
    • There is the right way and getting things done.
  • Ramifications on questioning anything new
    • “What’s the need?”
    • No architecture astronauts
    • You risk reinventing the wheel
    • You can take things to far (Ruby for Rails)
    • Messy internals
  • Web development ought to be fun
    • Rails asks why software development can’t be fun
    • APIs should match behavior, not show how they work
  • Good APIs almost documents itself
    • Documentation driven development “DDD”
  • Why does Django ship full stack?
    • Lack of choices at the time of inception
    • Might make separate choices again
    • There is a reason why glue code is called glue code
    • Full control over code means you get to define the API nicely
  • Don’t repeat Zope’s mistake
    • Don’t have people learn Django and not Python
    • Innovation happens elsewhere
    • Always someone smarter outside your own group
    • Small pieces advance quicker
  • Don’t make opinionated software
    • Ego is dangerous
    • It is not about you
    • You can’t possibly predict what everyone wants
    • There is no “one obvious way”
  • Lots of choices is bad for new users
    • There are always more beginners than experts for your projects
    • Make complicated things easy
  • Choices in the future
    • Long tail or huge scale
    • Learning curves
    • Django in the Enterprise
    • Does Django want to fight STRUTS
    • Avoiding inevitable backlash
      • Inviting criticism and take it well
      • Make conscious decisions