teaching an old pony new tricks: maintaining and updating and aging django site
DESCRIPTION
This talk details the history of the PBS TeacherLine website, the first Django project launched to production at PBS in 2007. It discusses the challenges, successes, and failures of maintaining the site.TRANSCRIPT
![Page 1: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/1.jpg)
Teaching an Old Pony New Tricks:Maintaining and Updating an Aging Django Project
DjangoCon 2010
Shawn Rider
PBS Education
![Page 2: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/2.jpg)
What is TeacherLine?
![Page 3: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/3.jpg)
![Page 4: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/4.jpg)
![Page 5: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/5.jpg)
![Page 6: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/6.jpg)
![Page 7: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/7.jpg)
The Rebuild Challenge
In 2006 the TeacherLine sites were powered by Cold Fusion.
A complete rebuild was needed.
![Page 8: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/8.jpg)
The Rebuild Challenge
Several technologies were considered:
•Ruby / Rails
•PHP / Some PHP Framework
•Python / Django
![Page 9: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/9.jpg)
The Rebuild Challenge
![Page 10: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/10.jpg)
Things About Django That Made Us Happy
• Speed of Development
• Code Quality
• Modularity of Framework
• Django Admin
• Active Community
• Python!
![Page 11: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/11.jpg)
Things People Said About Django That Hurt Our Feelings
![Page 12: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/12.jpg)
Beta frameworks are not
“enterprise ready”!
![Page 13: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/13.jpg)
Django won’t last; the project will die!
![Page 14: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/14.jpg)
Nobody around here knows Python!
![Page 15: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/15.jpg)
TeacherLine Rises Again
Over 4 months, 2 developers built the new TeacherLine site.
It launched December 12, 2007
![Page 16: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/16.jpg)
TeacherLine Rises Again
Features in relaunch:• Course Catalog
• CMS for localized content
• Staff Admin
• Support Ticketing System
• Robust Permissions/Roles System
• Profiles
• Graduate Credit Management System
• eCommerce
• API for Remote Integration
![Page 17: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/17.jpg)
Features Added Since the Relaunch
• Message Queue
• Named URLs
• Test Suite
• New File Storage Backend
• Virtual Environment Project Structure
• Robust Visual Reports
![Page 18: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/18.jpg)
Major Apps Added Since the Relaunch
• Facilitator Scheduling Tool
• Capstones Course Tools
![Page 19: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/19.jpg)
Deployment Changes Since the Relaunch
• Adopted Virtual Environments
• Moved from traditional to cloud hosting
![Page 20: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/20.jpg)
Things That Worked for Us
Django is opinionated in a generally good way.
![Page 21: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/21.jpg)
Things That Worked for Us
A culture of self-criticism.
![Page 22: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/22.jpg)
Things That Worked for Us
Isolate functionality into reusable components.
![Page 23: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/23.jpg)
Things That Worked for Us
Always use URL tags in templates.
![Page 24: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/24.jpg)
Things That Worked for Us
Our multi-deployment configuration solution turned out to be a good idea.
![Page 25: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/25.jpg)
Mistakes We Made
Never override the User model.
![Page 26: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/26.jpg)
Mistakes We Made
Make tests right away.
![Page 27: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/27.jpg)
Mistakes We Made
Never underestimate the Admin.
![Page 28: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/28.jpg)
Mistakes We Made
Manipulators made us shy to fully leverage Forms.
![Page 29: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/29.jpg)
![Page 30: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/30.jpg)
Things Are Getting Better
• Continuous ORM Improvements
• Django Forms are now awesome
• Enhanced security protections
• Authorization backends
![Page 31: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/31.jpg)
Upgrading the Framework
To take advantage of framework upgrades, you must schedule the work in your project.
![Page 32: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/32.jpg)
Upgrading the Framework
Sell the upgrade to the Uppers:
• It will lower the cost of future development
• It will alleviate a pain point felt by staff processes
![Page 33: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/33.jpg)
Upgrading the Framework
Facilitate the work:
• Make the most of your VCS
• Use tests
• Take your time
![Page 34: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/34.jpg)
Things We’d Like to Improve
• Remote API
• Adopt Haystack/SOLR instead of Djapian/Xapian
• Email backends
• DB master/slave and sharding
• Leverage Django Admin features better
![Page 35: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/35.jpg)
Ponies We Still Want
• Multi-configuration support out-of-the-box
• A better way to know when Django’s modules are completely loaded into memory
• More robust event handling (Signals++)
![Page 36: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site](https://reader035.vdocuments.net/reader035/viewer/2022062617/54c4b53c4a7959f9778b45bb/html5/thumbnails/36.jpg)
Thanks & Kudos
The Django ProjectThe core devs and all the contributors.
The Django CommunityEveryone developing Django apps and community sites.
The current TeacherLine team: Nowell Strite (@nowells), Tareque Hossain (@tarequeh), Ron Cox (@monkyhead), Sam Deng (@samdeng)