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 <ul><li>In 2006 the TeacherLine sites were powered by Cold Fusion. </li></ul><ul><li>A complete rebu...
The Rebuild Challenge <ul><li>Several technologies were considered: </li></ul><ul><li>Ruby / Rails </li></ul><ul><li>PHP /...
The Rebuild Challenge
Things About Django  That Made Us Happy <ul><li>Speed of Development </li></ul><ul><li>Code Quality </li></ul><ul><li>Modu...
Things People Said About Django That Hurt Our Feelings
<ul><li>Beta frameworks are not  </li></ul><ul><li>“enterprise ready”! </li></ul>
<ul><li>Django won’t last; the project will die! </li></ul>
<ul><li>Nobody around here knows Python! </li></ul>
TeacherLine Rises Again <ul><li>Over 4 months, 2 developers built the new TeacherLine site. </li></ul><ul><li>It launched ...
TeacherLine Rises Again <ul><li>Features in relaunch: </li></ul><ul><li>Course Catalog </li></ul><ul><li>CMS for localized...
Features Added Since  the Relaunch <ul><li>Message Queue </li></ul><ul><li>Named URLs </li></ul><ul><li>Test Suite </li></...
Major Apps Added Since  the Relaunch <ul><li>Facilitator Scheduling Tool </li></ul><ul><li>Capstones Course Tools </li></ul>
Deployment Changes Since  the Relaunch <ul><li>Adopted Virtual Environments </li></ul><ul><li>Moved from traditional to cl...
Things That Worked for Us <ul><li>Django is opinionated in a generally good way. </li></ul>
Things That Worked for Us <ul><li>A culture of self-criticism. </li></ul>
Things That Worked for Us <ul><li>Isolate functionality into reusable components. </li></ul>
Things That Worked for Us <ul><li>Always use URL tags in templates. </li></ul>
Things That Worked for Us <ul><li>Our multi-deployment configuration solution turned out to be a good idea. </li></ul>
Mistakes We Made <ul><li>Never override the User model. </li></ul>
Mistakes We Made <ul><li>Make tests right away. </li></ul>
Mistakes We Made <ul><li>Never underestimate the Admin. </li></ul>
Mistakes We Made <ul><li>Manipulators made us shy to fully leverage Forms. </li></ul>
 
Things Are Getting Better <ul><li>Continuous ORM Improvements </li></ul><ul><li>Django Forms are now awesome </li></ul><ul...
Upgrading the Framework <ul><li>To take advantage of framework upgrades, you must schedule the work in your project. </li>...
Upgrading the Framework <ul><li>Sell the upgrade to the Uppers: </li></ul><ul><li>It will lower the cost of future develop...
Upgrading the Framework <ul><li>Facilitate the work: </li></ul><ul><li>Make the most of your VCS </li></ul><ul><li>Use tes...
Things We’d Like to Improve <ul><li>Remote API </li></ul><ul><li>Adopt Haystack/SOLR instead of Djapian/Xapian </li></ul><...
Ponies We Still Want <ul><li>Multi-configuration support out-of-the-box </li></ul><ul><li>A better way to know when Django...
Thanks & Kudos <ul><li>The Django Project </li></ul><ul><li>The core devs and all the contributors. </li></ul><ul><li>The ...
Upcoming SlideShare
Loading in...5
×

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

2,013

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,013
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
40
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 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.
  • For the Learner, the TL site allows them to access their courses.
  • Which are then delivered using the Moodle Learning Management System.
  • 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.
  • 2006: TL was a cold fusion site. In need of rebuilding.
  • The PBS technology team was looking for a new platform to encourage from within. This platform would be the basis for the new TeacherLine.
  • 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.
  • Code quality of framework is stellar. This has translated over time to the general quality of Django apps developed by community members.
  • Break into individual frames for comic relief? Probably…
  • We had written another prototype project in the Spring of 2007
  • We had written another prototype project in the Spring of 2007
  • 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.
  • 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.
  • 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.
  • Django encourages adherence to generally good practice, and overall good design practice.
  • 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.
  • Django has always encouraged the separation of discrete components into applicaitons.
  • If you can’t deploy in multiple locations, you are lost.
  • Things that we used to have to work around but are now much better in Django.
  • Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • Something about how we have approached major framework upgrades, such as 1.0, 1.1, 1.2.
  • Things that we could improve greatly based on new features in Django.
  • Wishlist for Django features
  • Thanks to the team and links, etc.
  • Transcript of "Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site"

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×