Teaching an Old Pony New Tricks: Maintaining and Updating an Aging Django Project DjangoCon 2010 Shawn Rider PBS Education
What is TeacherLine?
 
 
 
 
The Rebuild Challenge In 2006 the TeacherLine sites were powered by Cold Fusion. A complete rebuild was needed.
The Rebuild Challenge Several technologies were considered: Ruby / Rails PHP / Some PHP Framework Python / Django
The Rebuild Challenge
Things About Django  That Made Us Happy Speed of Development Code Quality Modularity of Framework Django Admin Active Community Python!
Things People Said About Django That Hurt Our Feelings
Beta frameworks are not  “enterprise ready”!
Django won’t last; the project will die!
Nobody around here knows Python!
TeacherLine Rises Again Over 4 months, 2 developers built the new TeacherLine site. It launched December 12, 2007
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
Features Added Since  the Relaunch Message Queue Named URLs Test Suite New File Storage Backend Virtual Environment Project Structure Robust Visual Reports
Major Apps Added Since  the Relaunch Facilitator Scheduling Tool Capstones Course Tools
Deployment Changes Since  the Relaunch Adopted Virtual Environments Moved from traditional to cloud hosting
Things That Worked for Us Django is opinionated in a generally good way.
Things That Worked for Us A culture of self-criticism.
Things That Worked for Us Isolate functionality into reusable components.
Things That Worked for Us Always use URL tags in templates.
Things That Worked for Us Our multi-deployment configuration solution turned out to be a good idea.
Mistakes We Made Never override the User model.
Mistakes We Made Make tests right away.
Mistakes We Made Never underestimate the Admin.
Mistakes We Made Manipulators made us shy to fully leverage Forms.
 
Things Are Getting Better Continuous ORM Improvements Django Forms are now awesome Enhanced security protections Authorization backends
Upgrading the Framework To take advantage of framework upgrades, you must schedule the work in your project.
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
Upgrading the Framework Facilitate the work: Make the most of your VCS Use tests Take your time
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
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++)
Thanks & Kudos The Django Project The core devs and all the contributors. The Django Community Everyone developing Django apps and community sites. The current TeacherLine team:  Nowell Strite (@nowells), Tareque Hossain (@tarequeh), Ron Cox (@monkyhead), Sam Deng (@samdeng)

Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site

  • 1.
    Teaching an OldPony New Tricks: Maintaining and Updating an Aging Django Project DjangoCon 2010 Shawn Rider PBS Education
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    The Rebuild ChallengeIn 2006 the TeacherLine sites were powered by Cold Fusion. A complete rebuild was needed.
  • 8.
    The Rebuild ChallengeSeveral technologies were considered: Ruby / Rails PHP / Some PHP Framework Python / Django
  • 9.
  • 10.
    Things About Django That Made Us Happy Speed of Development Code Quality Modularity of Framework Django Admin Active Community Python!
  • 11.
    Things People SaidAbout Django That Hurt Our Feelings
  • 12.
    Beta frameworks arenot “enterprise ready”!
  • 13.
    Django won’t last;the project will die!
  • 14.
    Nobody around hereknows Python!
  • 15.
    TeacherLine Rises AgainOver 4 months, 2 developers built the new TeacherLine site. It launched December 12, 2007
  • 16.
    TeacherLine Rises AgainFeatures 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
  • 17.
    Features Added Since the Relaunch Message Queue Named URLs Test Suite New File Storage Backend Virtual Environment Project Structure Robust Visual Reports
  • 18.
    Major Apps AddedSince the Relaunch Facilitator Scheduling Tool Capstones Course Tools
  • 19.
    Deployment Changes Since the Relaunch Adopted Virtual Environments Moved from traditional to cloud hosting
  • 20.
    Things That Workedfor Us Django is opinionated in a generally good way.
  • 21.
    Things That Workedfor Us A culture of self-criticism.
  • 22.
    Things That Workedfor Us Isolate functionality into reusable components.
  • 23.
    Things That Workedfor Us Always use URL tags in templates.
  • 24.
    Things That Workedfor Us Our multi-deployment configuration solution turned out to be a good idea.
  • 25.
    Mistakes We MadeNever override the User model.
  • 26.
    Mistakes We MadeMake tests right away.
  • 27.
    Mistakes We MadeNever underestimate the Admin.
  • 28.
    Mistakes We MadeManipulators made us shy to fully leverage Forms.
  • 29.
  • 30.
    Things Are GettingBetter Continuous ORM Improvements Django Forms are now awesome Enhanced security protections Authorization backends
  • 31.
    Upgrading the FrameworkTo take advantage of framework upgrades, you must schedule the work in your project.
  • 32.
    Upgrading the FrameworkSell the upgrade to the Uppers: It will lower the cost of future development It will alleviate a pain point felt by staff processes
  • 33.
    Upgrading the FrameworkFacilitate the work: Make the most of your VCS Use tests Take your time
  • 34.
    Things We’d Liketo Improve Remote API Adopt Haystack/SOLR instead of Djapian/Xapian Email backends DB master/slave and sharding Leverage Django Admin features better
  • 35.
    Ponies We StillWant 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++)
  • 36.
    Thanks & KudosThe Django Project The core devs and all the contributors. The Django Community Everyone developing Django apps and community sites. The current TeacherLine team: Nowell Strite (@nowells), Tareque Hossain (@tarequeh), Ron Cox (@monkyhead), Sam Deng (@samdeng)

Editor's Notes

  • #4 TeacherLine offers over 130 courses for teacher professional development. We work with over 50 different PBS stations and over 30 different accredited institutions who offer graduate credit for our courses. Most visible part of TL website is a brochure site with a course catalog and e-commerce system.
  • #5 For the Learner, the TL site allows them to access their courses.
  • #6 Which are then delivered using the Moodle Learning Management System.
  • #7 There is also a large administrative site which allows over 50 PBS stations to manage courses. This includes bulk enrollments, financial administration, metrics reporting, etc.
  • #8 2006: TL was a cold fusion site. In need of rebuilding.
  • #9 The PBS technology team was looking for a new platform to encourage from within. This platform would be the basis for the new TeacherLine.
  • #10 At OSCON 2006, PBS developers were smitten by Jacob Kaplan-Moss’s presentation of Django. Eventually we actually did a code-off and Django was the clear winner. Django was chosen by both PBS Education and PBS Interactive as the ordained building framework for PBS.
  • #11 Code quality of framework is stellar. This has translated over time to the general quality of Django apps developed by community members.
  • #13 Break into individual frames for comic relief? Probably…
  • #16 We had written another prototype project in the Spring of 2007
  • #17 We had written another prototype project in the Spring of 2007
  • #18 Since the relaunch, the TL site has not been the main priority for development. We maintain several different projects. The speed of development has generally slowed down, too, but now we usually do two or three prototypes of components and extensive code review before putting them into place. The culture of rapid prototyping and discussion of solutions is encouraged by the Django community, and has become reflected in our practice.
  • #19 Since the relaunch, the TL site has not been the main priority for development. We maintain several different projects. The speed of development has generally slowed down, too, but now we usually do two or three prototypes of components and extensive code review before putting them into place. The culture of rapid prototyping and discussion of solutions is encouraged by the Django community, and has become reflected in our practice.
  • #20 Since the relaunch, the TL site has not been the main priority for development. We maintain several different projects. The speed of development has generally slowed down, too, but now we usually do two or three prototypes of components and extensive code review before putting them into place. The culture of rapid prototyping and discussion of solutions is encouraged by the Django community, and has become reflected in our practice.
  • #21 Django encourages adherence to generally good practice, and overall good design practice.
  • #22 The culture of the Django community encourages critical views on the framework and how it’s been constructed, which encourages growth and evolution of approaches.
  • #23 Django has always encouraged the separation of discrete components into applicaitons.
  • #25 If you can’t deploy in multiple locations, you are lost.
  • #31 Things that we used to have to work around but are now much better in Django.
  • #32 Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • #33 Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • #34 Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • #35 Things that we could improve greatly based on new features in Django.
  • #36 Wishlist for Django features
  • #37 Thanks to the team and links, etc.