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
Tweet

More Decks by Peter Bittner

Other Decks in Programming

Transcript

  1. > whoami Peter Bittner ex-java head of swd, ex-php team

    lead agile cto, entrepreneur [email protected] github.com/bittner
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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)
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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)
  17. 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
  18. 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)
  19. django Organice Lonesome Principles Obeyed 1. Documentation 2. Easy to

    start & get it working 3. Scripts for (almost) everything 4. Role models: zinnia, pootle, ...
  20. 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/