teaching an old pony new tricks: maintaining and updating and aging django site

36
Teaching an Old Pony New Tricks: Maintaining and Updating an Aging Django Project DjangoCon 2010 Shawn Rider PBS Education

Upload: shawn-rider

Post on 25-Jan-2015

1.953 views

Category:

Technology


0 download

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

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

What is TeacherLine?

Page 3: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site
Page 4: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site
Page 5: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site
Page 6: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site
Page 7: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site

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

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

The Rebuild Challenge

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

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

Things People Said About Django That Hurt Our Feelings

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

Beta frameworks are not

“enterprise ready”!

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

Django won’t last; the project will die!

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

Nobody around here knows Python!

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

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

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

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

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

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

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

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

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

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

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

Mistakes We Made

Never override the User model.

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

Mistakes We Made

Make tests right away.

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

Mistakes We Made

Never underestimate the Admin.

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

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
Page 30: Teaching an Old Pony New Tricks: Maintaining and Updating and Aging Django Site

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

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

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

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

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

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

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)