Agenda
- Modern Fairy Tale (With A Lot Of Grim)
- Why Django? (Is For The Lonesome Hacker)
- Research (The Django Eco System)
- Development (Strategies For The Lonesome)
- 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
- Several people, different background,
common goal, different approaches
- Volunteers start enthusiastically (website)
- A website alone doesn't cut it
- Documents chaos (e-mails, dropbox, etc.)
- No transparency, slow response
- Finger-pointing leads to frustration
- People quit
I Have a Dream
"... that one day there will be efficient online collaboration"
- Website always up-to-date (for everyone)
- Everyone (!) can contribute
- Full control over content going live
- We coach & publish (we don't write!)
- Issue lists, work on documents, updates
- Everyone transparently informed
- Everyone is happy & feels heard
Can't We Solve This Problem Easily?
Cloud platforms exist, but they are so much
- revenue / CRM / PM focused
- cluttered with features
- restrictive & administrative by nature
- a pain to use with inconsistent UI's
- expensive for large audiences
Alternative = DIY software solution
Woke Up Soaking Wet
- No money to spend
- No programming resources (except yourself)
- 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
- All popular frameworks have broken eco systems
(Joomla!, Wordpress, Drupal, ...)
- Django too (not worse than the others)
- Python = executable pseudo code
- Django = for perfectionists with deadlines
- try it
- customize
- read code
Research
(The Django Eco System)
Resources
Extensions / Packages = "Apps" in Django
Where Do I Find Django Apps?
Components
- CMS
- Blog
- Newsletter
- Events & calendar
Collaboration Features
- Social login & user profiles
- User groups & spaces
- Issue lists
- DMS (or integration)
- Wiki (or the like)
- 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
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
- Integrate single apps
- Every artifact referable (user, group, article,
blog/wiki/event entry, issue, ...)
- Simplified, unified user experience (front-end
editing for everything)
- 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
- Documentation
- Easy to start & get it working
- Scripts for (almost) everything
- Role models: zinnia, pootle, ...
Questions?
(I'll Try to Give Good Answers)
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/