history, state and vision
James Tauber
Russ Keith-Magee
idea realisation
when is it okay to reinvent the wheel?
web technologistvs
web site creator
Leonardo
Leonardo
Python Python
Django
Leonardo
why layer?
• portability
• reusability
• efficiency through compromise
Quisition
• currently has:• announcements• sign up• deck searching and sort• user analytics
• want to add:• rating, tagging and commenting
on decks• groups, friendships• membership levels• notifications
PyCon 2007:The Birth of the (second)Hotclub of France
• reusable apps
• app conventions
• mailing list
• some discussion but never got far
•django-tagging•django-voting•django-registration
Potter Predictions
• send invitations• connect to friends• make comments on
predictions• tag prediction• mass mailout to
users
| I vi | ii V | I vi | ii V || I I7 | IV iv | I V | I || III7 | III7 | VI7 | VI7 || II7 | II7 | V7 | V7 |
rhythm changes
contrafacts
•django-friends•django-notification•django-mailer•django-things
PyCon 2008:The Birth of Tabula Rasa
If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders.
Instead, teach them to yearn for the vast and endless sea.
– Antoine de Saint-Exupéry
build a dummy site to guidedevelopment of apps
Tony Hauber’sSummer of Code
PinaxSo far it's just my new django-email-confirmation app tied together with password change and reset, login/logout, with the beginnings of a tab-style UI. There's a ton more I want to refactor out of my existing websites to put into it as well as adding support for OpenID and the stuff I'm starting to do for django-friends.
Even if one doesn't use Pinax as the starting point of a website, I'm hoping it will prove very useful for another goal, namely a "host" project to develop and tryout reusable apps.
– blog post 10th May 2008
proposed by Orestis Markou
starting point for new projects
scaffolding for developing new apps
app conventions
reusable apps
+
Memorial DayWeekend...
•django-friends•django-notification•django-mailer•django-email-confirmation
•user profile pages•gravatars•user-to-user messages
•via django-messages
•announcements•a new app, django-announcements
•OpenID support•invitations to join
•translations into German, Spanish and Swedish•a new design / logo•auto-completion on message receipt field•a basic Twitter clone•OEmbed support in tweets•the beginnings of tribes (i.e. groups)
•63% reusable apps•10% local apps•13% templates•8% localization•5% media•1% util
•localization into Brazilian Portuguese and Hebrew•timezone localization•external blog aggregation•wikis•threaded discussions•bookmarks with voting•contact import•blogs with tagging and threaded comments
By 4th July...
...and 1,000 users on the demo site
It is becoming clear that what was originally intended to be a demo site is a useful site in its own right, irrespective of whether you care or even know about the Pinax platform underlying it. So it will be moving over to a new site with a new identity soon.
– blog post 2nd July 2008
{ n | available(“cloud<n>.com”), n < 30 }=
{ 14, 26, 27, 28 }
a platform for website development
conventions for reusable apps
collection of reusable apps
starting point for new projects
scaffolding for developing new apps
Your Project
Django Django
Pinax
Your Project
Python Python
Django
Pinax
Your Project
the trade off:
how much to fix?how much to make configurable?how much to leavecompletely to site developer?
•openid support•emai l ver i ficat ion•password management•site announcements•a noti ficat ion framework•user-to-user messaging•fr iend invitat ion (both
internal and external to the s ite)
•a basic twitter clone•oembed suppor t•gravatar suppor t
Features
•interest groups (cal led tr ibes)
•projects with basic task and issue management
•threaded discussions•wikis with mult iple markup
suppor t•blogging•bookmarks•tagging•contact impor t (from vCard,
Google or Yahoo)•photo management
•external apps•local apps•libraries•pinax project
Structure of SVN repos
External apps
• all on Google Code Project Hosting• use of svn:externals• half were written independently of Pinax• avoiding “rhythm section apps”• do one thing
External apps
• django-email-confirmation• django-command-extensions• django-robots• django-dbtemplates• django-friends• django-notification• django-mailer• django-messages• django-announcements• django-logging• django-oembed• django-pagination• django-threadedcomments• django-wikiapp
• django-timezones• django-feedutil• django-app-plugins• django-voting• django-tagging• django-bookmarks• django-ajax-validation• django-crashlog• django-photologue• django-avatar• django-gravatar• django-arcade• swaps from django-social-economics• django-locations
Local apps•some core•many are just incubated here
• about• account• analytics• authsub• bbauth• blog• core• django-openidconsumer• django-openidauth• friends_app
• games• lifestream• photos• profiles• projects• tag_app• things• tribes• zwitschern
Libraries
•batteries included•except for PIL•makes for a huge checkout
• dateutil• diff-match-patch• django-atompub (format)• docutils-0.4• feedparser-4.1• gdata.py-1.0.13• geopy-trunk• markdown-1.7• pownce-api-0.2
• python-openid-2.1.1• python-twitter-0.5• python-yadis-1.1.0• pytz-2008b• simplejson-1.9.1• textile-2.0.11• vobject-0.6.6• ybrowserauth
try: from notification import models as notificationexcept ImportError: notification = None
if notification: notification.send(...)
Optional Apps
should really rely on INSTALLED_APPS not path!
we wanted to be part of the reason people upgraded to 1.0, not one of the reasons people didn't need to
Tracking Trunk
Django
Pinax
Social Networks
site
Internets Learning Management Systems
site
site
site
site
site
site
site
site
site
site
site
Django Contrib
One More Thing...
Top Related