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)


Recommended