Django Packages: A Case Study
Upcoming SlideShare
Loading in...5
×
 

Django Packages: A Case Study

on

  • 3,852 views

These are the slides for my 2011 pycon talk on Django Packages. Django Packages (http://djangopackages.com) is the place to review Django apps, frameworks, and projects.

These are the slides for my 2011 pycon talk on Django Packages. Django Packages (http://djangopackages.com) is the place to review Django apps, frameworks, and projects.

Statistics

Views

Total Views
3,852
Views on SlideShare
3,481
Embed Views
371

Actions

Likes
9
Downloads
58
Comments
0

4 Embeds 371

http://ontwik.com 314
http://lanyrd.com 53
http://www.linkedin.com 3
http://localhost 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Talk about how PyPI allows comments - which can be spoofed.\n
  • Talk about how PyPI allows comments - which can be spoofed.\n
  • Talk about how PyPI allows comments - which can be spoofed.\n
  • Talk about how PyPI allows comments - which can be spoofed.\n
  • Talk about how PyPI allows comments - which can be spoofed.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Django Packages: A Case Study Django Packages: A Case Study Presentation Transcript

  • Django Packages Case Study 1
  • We do cartwheels 2
  • We do cartwheels• Python• Django• Pinax• django-cms• Teach 3
  • We do cartwheels• Python• Django• Pinax• django-cms• Teach ...and we’re hiring! 3
  • Inception 4
  • Inception 4
  • Inception 5
  • Inception 6
  • Inception 6
  • Inception 6
  • Inception “How about a site to help find Django apps?” 7
  • Inception django-apps.comTags! Ads! 8
  • InceptionLicenseSVN? Ads! Feed 9
  • InceptionDjango Packages 10
  • Inception Bullets of design 11
  • Inception• Usability Bullets of design 11
  • Inception• Usability• Search Bullets of design 11
  • Inception• Usability• Search Bullets of design• Comparison 11
  • Inception• Usability• Search Bullets of design• Comparison• No Ads 11
  • InceptionTeam Scared of Rabbits 12
  • InceptionTeam Scared of Rabbits 12
  • InceptionTeam Scared of Rabbits 12
  • InceptionTeam Scared of Rabbits 12
  • Mullets 13
  • MulletsAPOLOGY: No pictures of me with a mullet 13
  • Tag Clouds 14
  • Tag cloud is themullet of web 2.0 15
  • Grids, not Tags 16
  • Grids, not Tags 16
  • Grids, not Tags User created categories lacking metadata 16
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparison 17
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparison 17
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparison 17
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparisonWhat if tags could have all this information? 17
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparisonEasy to model withMany to Many! 18
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparisonEasier to model with EAV using NoSQL! 19
  • Grids, not tagscode.djangoproject.com/wiki/CMSAppsComparisonEasy to model withMany to Many! 20
  • Not gonna fitwww.djangopackages.com/grids/g/nosql/ 21
  • Not gonna fitwww.djangopackages.com/grids/g/nosql/ 21
  • Not gonna fitwww.djangopackages.com/grids/g/nosql/ 21
  • Not gonna fitwww.djangopackages.com/grids/g/nosql/ 21
  • Only hard metrics* 22
  • Only hard metrics*• No opinions 22
  • Only hard metrics*• No opinions• No rating systems 22
  • Only hard metrics*• No opinions• No rating systems• No comments 22
  • Only hard metrics* “We wanted hard metrics. So the package numbers are pulled from the repo sites such as Github,• No opinions Bitbucket, and Google Code. Otherwise things get weighted funny. Sure, this system can be• No rating systems monkeyed with, but its a good metric for now. Weve had• No comments suggestions from Django core developers of coming up with a quality check system, things like pypants and/or a formalized approval system.” 22
  • Only hard metrics* “We wanted hard metrics. So the package numbers are pulled from the repo sites such as Github,• No opinions Bitbucket, and Google Code. Otherwise things get weighted funny. Sure, this system can be• No rating systems monkeyed with, but its a good metric for now. Weve had• No comments suggestions from Django core developers of coming up with a quality check system, things like pypants and/or a formalized approval system.” *Also because it kept the project scope smaller 22
  • Only hard metrics 23
  • Only hard metricsYes/No 23
  • Only hard metrics PyPIYes/No 23
  • Only hard metrics PyPIYes/No Supported repo sites 23
  • Only hard metrics PyPIYes/No Supported repo sites 23
  • Only hard metrics PyPIYes/No Supported repo sites 23
  • Only hard metrics PyPI GoogleGithub SourceforgeBitbucket Launchpad 24
  • Only hard metrics PyPI GoogleGithub SourceforgeBitbucket Launchpad 24
  • Only hard metrics PyPI GoogleGithub SourceforgeBitbucket Launchpad 24
  • Only hard metrics PyPI GoogleGithub SourceforgeBitbucket Launchpad 24
  • Only hard metrics PyPI GoogleGithub SourceforgeBitbucket Launchpad 24
  • Regex vs XML 25
  • Regex vs XML• Could not find PyPI API 25
  • Regex vs XML• Could not find PyPI API• DOAP is next to useless 25
  • Regex vs XML• Could not find PyPI API• DOAP is next to useless• Time to slurp data out of web pages 25
  • Regex vs XML• Could not find PyPI API• DOAP is next to useless• Time to slurp data out of web pages• I’m faster at regex then XML parsing 25
  • Regex vs XML• Could not find PyPI API• DOAP is next to useless• Time to slurp data out of web pages• I’m faster at regex then XML parsing• And I got it working 25
  • Regex vs XMLbit.ly/cu5Prt 26
  • Regex vs XML• Could not find PyPI API• DOAP is next to useless• Time to slurp data out of web pages• I’m faster at regex then XML parsing• And I got it working 27
  • Dash Architecture 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12• Ubuntu 10.4 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12• Ubuntu 10.4• HTTP Server: 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12• Ubuntu 10.4• HTTP Server: Apache 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12• Ubuntu 10.4• HTTP Server: 28
  • Dash Architecture• Django 1.2.1 / Pinax 0.9a1• Python 2.6.5• Sqlite 3.6.12• Ubuntu 10.4• HTTP Server: Django Runserver 28
  • Django Dash Placing 29
  • Django Dash Placing 29
  • Django Dash Placing 29
  • Django Dash Placing 29
  • Django Dash Placing 29
  • Django Dash PlacingI’m not bitter 29
  • Lessons Learned 30
  • Lessons LearnedResearch ahead of time API limitations Google Charts rock 30
  • Lessons Learned 31
  • Lessons LearnedPEP-8 is your friend python -c “import this” Keep things simple and flat Corrections easier 31
  • Lessons Learned 32
  • Lessons Learned Fixtures are a must Test and blow away your stuff constantlyHelps the designer with matching content with layout 32
  • Lessons Learned 33
  • Lessons Learned Don’t optimize prematurely Don’t start by removing Django bits Write the project then analyzeEven the simplest of caching will help. 33
  • Lessons Learned 34
  • Lessons LearnedHave a system architecture plan 34
  • Lessons Learned I was nearHave a systemuseless at sys admin architecture plan 34
  • Lessons Learned I was nearHave a system useless at sys admin architecture plan Audrey to the rescue! 34
  • Lessons Learned I was near Have a system useless at sys admin architecture plan Audrey to the rescue!“Learn the sys admin stuff cause it affects everything” 34
  • Lessons Learned 35
  • Lessons LearnedShare during the dash Bouncing ideas off other teams is handy 35
  • Lessons Learned 36
  • Lessons Learned 37
  • The First Month 38
  • The First Month “There’s a package for that” 38
  • The First Month “There’s a package for that”“I’ve got your Django Package right here” 38
  • The First Month http://www.revsys.com/ 39
  • The First Month http://www.revsys.com/ 39
  • The First Month http://www.revsys.com/ 39
  • The First Month http://www.revsys.com/ 39
  • The First Month 40
  • The First Month PyPI GoogleGithub SourceforgeBitbucket Launchpad 41
  • The First Month PyPI GoogleGithub SourceforgeBitbucket Launchpad 41
  • The First Month 42
  • The First Month 42
  • The First Month• Apache• Got email functioning• Page cleanup 43
  • The First MonthWARNING 44
  • The First MonthWARNING 44
  • DjangoCon 2010 45
  • DjangoCon 2010 flickr.com/photos/bfirsh 45
  • DjangoCon 2010Our Friendly DSF president 46
  • DjangoCon 2010WARNING 47
  • DjangoCon 2010WARNING 47
  • DjangoCon 2010If I had been there earlier I would not have lost sprinters 48
  • DjangoCon 2010 49
  • DjangoCon 2010THIS ROCKS! 49
  • DjangoCon 2010http://djangopackages.com/api/v1/docs/ 50
  • Django-CMSdjango-cms.org/en/extensions 51
  • DjangoCon 2010 django-reversions 52
  • DjangoCon 2010 PyPI Regex
  • DjangoCon 2010 PyPI
  • DjangoCon 2010 PyPIXMLRPC
  • DjangoCon 2010• AJAX controls on “I use this”• Caching• Fancy permission controls for deletions• History Graphs on grid views• Query Optimization• Unit Tests! 54
  • Around DjangoCon Used to help track features! 55
  • Around DjangoCon Used to help track features! 55
  • Random Hacks of Kindness https://github.com/rhok-planet/crisishacks http://www.crisishacks.com/ 56
  • AutumnMoved from Kansas to Los Angeles
  • AutumnMoved from Kansas to Los Angeles
  • AutumnMoved from Kansas to Los Angeles
  • Early 2011Read the Docs + Django Packages
  • Read the DocsDjango Packages 59
  • Read the DocsDjango Packages 59
  • PyCon 2011 60
  • PyCon 2011WARNING 60
  • PyCon 2011WARNING 60
  • Pycon Sprint 61
  • Pycon SprintStarting early! 61
  • Pycon Sprint PyPI GoogleGithub SourceforgeBitbucket Launchpad 62
  • Pycon Sprint PyPI GoogleGithub SourceforgeBitbucket Launchpad 62
  • Pycon SprintBadges 63
  • Pycon Sprint Top 10 Django-CMS Downloads Plugin Core Badges ApprovedRead the ThisDocs Site! On PyPI Coverage Top 10 80+% Used 63
  • Pycon Sprint PackagePagination 64
  • Pycon SprintShopping CartSelect your packages and get a requirements file! 65
  • Pycon Sprint X-Y Axisdjangopackages.com/grids/g/deployment 66
  • pythonpackages.com ? 67
  • pythonpackages.com ? 67
  • pythonpackages.com Are you going to replace PyPI? 68
  • pythonpackages.com Are you going to replace PyPI? NO! 68
  • pythonpackages.comPhase I 69
  • pythonpackages.com Only display packagesformally released on PyPI 70
  • pythonpackages.com Release your stuff! 71
  • Questions? 72