The World's Oldest Django Project

3,340 views

Published on

A talk on the history of the Ellington CMS project, given at PyCon 2010.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,340
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • The World's Oldest Django Project

    1. The world’s oldest django project James Bennett • PyCon Atlanta • February 19, 2010
    2. In the beginning...
    3. A regional news company
    4. A regional news company A dozen or so newspapers
    5. A regional news company A dozen or so newspapers Two TV stations
    6. A regional news company A dozen or so newspapers Two TV stations Weekly magazines
    7. A regional news company A dozen or so newspapers Two TV stations Weekly magazines Cable TV/Internet/telephony
    8. Those responsible have been sacked
    9. “The CMS”
    10. “The CMS”
    11. “The CMS”
    12. “The CMS”
    13. “The CMS”
    14. Disentangling
    15. Disentangling Mostly done prior to open-sourcing Django
    16. Disentangling Mostly done prior to open-sourcing Django Though some bits survived
    17. Ellington the product
    18. Early customers
    19. Early customers Some technically inclined
    20. Early customers Some technically inclined Some… not
    21. Customization
    22. Customization Branch for each client? Bad idea
    23. Customization Branch for each client? Bad idea Unified codebase? Good idea
    24. What is the product?
    25. What is the product? Dogfooding is great for QA
    26. What is the product? Dogfooding is great for QA But how much of that code should you really sell?
    27. What is the product? Dogfooding is great for QA But how much of that code should you really sell? Do you treat your own company as a client?
    28. “Removing the Lawrence”
    29. Deployment headaches
    30. Deployment headaches Each client runs their own servers
    31. Deployment headaches Each client runs their own servers Wildly divergent setups
    32. Deployment headaches Each client runs their own servers Wildly divergent setups Initial solution: Ellington as a hosted service
    33. The port that ate Cleveland
    34. Django moves on
    35. Django moves on Django 0.95 and 0.96 released
    36. Django moves on Django 0.95 and 0.96 released Internal sites pinned to 2006 revision
    37. Django moves on Django 0.95 and 0.96 released Internal sites pinned to 2006 revision Hosted client sites pinned to 0.91 release tag
    38. http://code.djangoproject.com/wiki/RemovingTheMagic
    39. First porting attempt
    40. First porting attempt Automated tools
    41. First porting attempt Automated tools Built on early versions of Python’s 2to3
    42. First porting attempt Automated tools Built on early versions of Python’s 2to3 Takes more time than porting by hand!
    43. Second porting attempt
    44. Second porting attempt Targeting Django 1.0 (unreleased)
    45. Second porting attempt Targeting Django 1.0 (unreleased) Partially automated, partially manual
    46. The final push
    47. The final push All hands on deck!
    48. The final push All hands on deck! Testing, testing, testing
    49. The final push All hands on deck! Testing, testing, testing Finally relaunched internal sites November 2008
    50. What we’ve learned
    51. Preparation is important
    52. Preparation is important A real staging server
    53. Preparation is important A real staging server Internal review before deployment
    54. Testing is important
    55. Testing is important Unit tests saved us during the porting process
    56. Testing is important Unit tests saved us during the porting process Buildbot for continuous integration
    57. Testing is important Unit tests saved us during the porting process Buildbot for continuous integration Spidering tools for live testing
    58. Deployment is (still) hard
    59. Deployment is (still) hard But automated deployment is a lifesaver
    60. Deployment is (still) hard But automated deployment is a lifesaver Currently using Capistrano
    61. Deployment is (still) hard But automated deployment is a lifesaver Currently using Capistrano Isolated environments
    62. Hosting solves a lot of problems
    63. Change control
    64. Change control Completely unified codebase for Ellington
    65. Change control Completely unified codebase for Ellington Migration framework (South)
    66. Change control Completely unified codebase for Ellington Migration framework (South) Custom code isolated as client-specific applications
    67. Open source
    68. Open source Non-core functionality being released
    69. Open source Non-core functionality being released Internal code becomes external dependency
    70. Code savings
    71. Code savings Modern Django, open sourcing and jettisoning legacy code
    72. Code savings Modern Django, open sourcing and jettisoning legacy code Depending on measurements, up to 40k lines of code cut in porting
    73. Reorganization
    74. Reorganization In 2009, one dev team became two
    75. Reorganization In 2009, one dev team became two Commercial products team
    76. Reorganization In 2009, one dev team became two Commercial products team Internal sites team
    77. Questions?

    ×