Creating a Collaboration Platform

Leveraging the Django Eco System




live slides @ tinyurl.com/djangoeco

> whoami

Peter Bittner

ex-java head of swd, ex-php team lead

agile cto, entrepreneur

django@bittner.it

github.com/bittner

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

Modern Fairy Tale

(With a Lot of Grim)

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

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

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

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

Why Django?

(Is for the Lonesome Hacker)

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

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:

Research

(The Django Eco System)

Resources

Extensions / Packages = "Apps" in Django


Where Do I Find Django Apps?

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)

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

Probably Good Choices

CMS + Blog + Wiki

  • django-cms + django-blog-zinnia
  • mezzanine

Newsletter

  • emencia-django-newsletter

Social login

  • django-allauth
  • python-social-auth

Issue lists

  • django-todo

Forums

  • askbot (Q&A)
  • misago (forum)

Documents + Assets

  • mayan (scanned docs)
  • django-media-tree

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


Development

(Strategies for the Lonesome)

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

More Advice

No-brainers

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

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)

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

Real World Example

(The Demo You Deserve)

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)

django Organice

Lonesome Principles Obeyed

  1. Documentation
  2. Easy to start & get it working
  3. Scripts for (almost) everything
  4. Role models: zinnia, pootle, ...

Questions?

(I'll Try to Give Good Answers)

THANK YOU
for your precious time!

Peter Bittner, django@bittner.it

@peterbittner


The dream lives on at

github.com/bittner/django-organice

@organice_io


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/

Creating a Collaboration Platform

By Peter Bittner

Creating a Collaboration Platform

Leveraging the Django Eco System

  • 3,618