Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Creating a Collaboration Platform (Leveraging the Django Eco System)

Creating a Collaboration Platform (Leveraging the Django Eco System)

From the DjangoVillage 2014 event at Orvieto (Italy). These slides are generated PDFs from the original presentation on slides.com (powered by reveal.js). I apologize for the poor quality. See the original at http://slides.com/bittner/creating-a-collaboration-platform


Peter Bittner

June 14, 2014

More Decks by Peter Bittner

Other Decks in Programming


  1. Creating a Collaboration Platform Leveraging the Django Eco System live

    slides @ tinyurl.com/djangoeco
  2. > whoami Peter Bittner ex-java head of swd, ex-php team

    lead agile cto, entrepreneur django@bittner.it github.com/bittner
  3. Agenda 1. Modern Fairy Tale (With A Lot Of Grim)

    2. Why Django? (Is For The Lonesome Hacker) 3. Research (The Django Eco System) 4. Development (Strategies For The Lonesome) 5. Real World Example (The Demo You Deserve) * { * Disclosure: blunt Django propaganda
  4. Modern Fairy Tale (With a Lot of Grim)

  5. Collaboration in a Non-Profit Nightmare on Club Street 1. Several

    people, different background, common goal, different approaches 2. Volunteers start enthusiastically (website) 3. A website alone doesn't cut it 4. Documents chaos (e-mails, dropbox, etc.) 5. No transparency, slow response 6. Finger-pointing leads to frustration 7. People quit
  6. I Have a Dream "... that one day there will

    be efficient online collaboration" 1. Website always up-to-date (for everyone) 2. Everyone (!) can contribute 3. Full control over content going live 4. We coach & publish (we don't write!) 5. Issue lists, work on documents, updates 6. Everyone transparently informed 7. Everyone is happy & feels heard
  7. Can't We Solve This Problem Easily? Cloud platforms exist, but

    they are so much 1. revenue / CRM / PM focused 2. cluttered with features 3. restrictive & administrative by nature 4. a pain to use with inconsistent UI's 5. expensive for large audiences Alternative = DIY software solution
  8. Woke Up Soaking Wet 1. No money to spend 2.

    No programming resources (except yourself) 3. No alternatives left Must take a technology for lonesome hackers
  9. Why Django? (Is for the Lonesome Hacker)

  10. The Lonesome Hacker Job Description Choose web framework & eco

    system Identify usable extensions / plugins Integrate them into a single experience Fix shortcomings of single extensions Add missing extensions Do web design
  11. Why Django Is for the Lonesome Hacker 1. All popular

    frameworks have broken eco systems (Joomla!, Wordpress, Drupal, ...) 2. Django too (not worse than the others) 3. Python = executable pseudo code 4. Django = for perfectionists with deadlines try it customize read code More reading at: jacobian.org/writing/why-django/ youtube.com/watch?v=n8KnFywpXOE
  12. Research (The Django Eco System)

  13. Resources Extensions / Packages = "Apps" in Django Where Do

    I Find Django Apps? ... big brother of nsa (google) djangopackages.com django-apps.com elweb.co/33-projects-that-make- devcharm.com/pages/79-must-have-django-packages code.djangoproject.com/wiki/DjangoResources
  14. Components 1. CMS 2. Blog 3. Newsletter 4. Events &

    calendar Collaboration Features 1. Social login & user profiles 2. User groups & spaces 3. Issue lists 4. DMS (or integration) 5. Wiki (or the like) 6. Discussion forum (or the like)
  15. What to Look at Indicators for Good Apps (Projects) commit

    activity / last commit commit count few open / lots of closed issues few or no open / lots of closed PRs decent documentation demo system and/or screenshots
  16. Probably Good Choices Forums CMS + Blog + Wiki django-cms

    + django-blog-zinnia mezzanine askbot (Q&A) misago (forum) emencia-django-newsletter django-todo mayan (scanned docs) django-media-tree django-allauth python-social-auth Social login Newsletter Documents + Assets Issue lists
  17. Missing Choices No (Usable) Ready-to-Use Apps Yet User groups &

    spaces (django-activities) User profiles (django-userena) Integration of dropbox & friends Integration of chat/phone/video services
  18. Development (Strategies for the Lonesome)

  19. Lonesome Hacker's Advice Be lazy Don't write a platform from

    scratch Don't write new apps from scratch Be autonomous Script & automate everything Write tests before changing code Prepare for exchanging components Make your life easier Push your changes into official repos Build on work of others & share Deploy early - in Production env
  20. More Advice No-brainers Infrastructure as code Figure out how other

    (successful) projects do it google.com/search?q=django+best+practices Quality is key Drastically improve bad projects quickly (or kick them!) Invest in your own project! (docs, pep8, packaging) Focus on your MVP Don't get overwhelmed by the vast choice Note down interesting projects & build a roadmap
  21. Biggest Challenges To Create a Unique Experience 1. Integrate single

    apps 2. Every artifact referable (user, group, article, blog/wiki/event entry, issue, ...) 3. Simplified, unified user experience (front-end editing for everything) 4. Combine intranet and public world (without confusing users)
  22. Obvious Constraints & Duties For Creating a Product One app

    must be leading system Integrate into this app (e.g. plugins) Massive integration tests Massive caution upgrading apps
  23. Real World Example (The Demo You Deserve)

  24. django Organice pip install django-organice Core Apps django-cms (leading system)

    django-blog-zinnia (blog, events, jobs) emencia-django-newsletter Interesting to Mention App type = project generator + meta package Themes as separate apps with asset pipeline (Bootstrap, Sass, UglifyJS2)
  25. django Organice Lonesome Principles Obeyed 1. Documentation 2. Easy to

    start & get it working 3. Scripts for (almost) everything 4. Role models: zinnia, pootle, ...
  26. Questions? (I'll Try to Give Good Answers)

  27. Peter Bittner, django@bittner.it @peterbittner The dream lives on at github.com/bittner/django-organice

    @organice_io THANK YOU for your precious time!
  28. Image Credits https://www.google.com/search?q=nightmare+elm+street (similar image search) https://www.google.com/search?q=django+unchained (similar image search)

    http://welcometoclubsilencio.blogspot.ch/2010_04_01_archive.html http://www.morgenpost.de/kultur/article112144530/Wie-Maerchen-der-Gebrueder-Grimm-jugendfrei-wurden.html http://www.philanthropyconsulting.com/2014/01/dream/ http://beartoons.com/wp-content/uploads/2011/10/Bearman-Cartoons-Occupy-Elm-Street21.png http://www.bluesoft.net.pl/wp-content/uploads/2014/02/django-logo-e1392910534114.png http://disfunctions.de/ubuntu/der-ubuntu-software-store-zukunftsmusik/ http://www.celarity.com/how-to-write-a-standout-job-description/ http://www.startupfreak.com/the-missing-piece-puzzle-company/ http://www.licensinglinenews.com/Newsletter/Edition-48-August-2007/National-Code-of-Practice-for-Induction-for-Construction- Work-declared.aspx http://carriekish.com/tag/leading-questions/