SlideShare a Scribd company logo
Read the Docs




                                         Eric Holscher
                              http://ericholscher.com
                                         OSCON 2011

Thursday, July 28, 2011
What this talk is



                          » Talk about the history of Read the Docs

                          » Technology Involved

                          » Interesting outcomes of openness




Thursday, July 28, 2011
Who am I



                          » I come from Django

                          » Work at Urban Airship

                          » Like automating systems




Thursday, July 28, 2011
Why I’m here


                          » Feedback

                          » Ideas

                          » Hopefully you’ll learn something too!

                          » Shameless self-promotion




Thursday, July 28, 2011
The story




Thursday, July 28, 2011
2010 Django Dash



Thursday, July 28, 2011
Charles Leifer
                          Bobby Grace (Design)
                                  Me


Thursday, July 28, 2011
Doc Hosting Sucks



                          » packages.python.org

                          » Github Pages

                          » Your own janky cronjobs




Thursday, July 28, 2011
`
Thursday, July 28, 2011
Sphinx




                          » Standard documentation tool for python

                          » Uses reStructured Text




Thursday, July 28, 2011
Thursday, July 28, 2011
Had a workable site in 48 hours



Thursday, July 28, 2011
Fully Open Source




Thursday, July 28, 2011
Fully Open Source



                          » github.com/rtfd/readthedocs.org

                          » github.com/ericholscher/chef-django-example

                          » ericholscher.com/tag/chef-series/




Thursday, July 28, 2011
Thursday, July 28, 2011
Officially Hosted

                          » Celery

                          » Fabric

                          » Nose, py.test

                          » Virtualenv, Pip

                          » Django CMS

                          » Django Grapelli/Floppyforms/Sentry

                          » Lots more

Thursday, July 28, 2011
What makes it tick




Thursday, July 28, 2011
Features




Thursday, July 28, 2011
Git, Hg, Bzr, Svn



Thursday, July 28, 2011
Post commit hooks



Thursday, July 28, 2011
Custom Theme



Thursday, July 28, 2011
Full-text search



Thursday, July 28, 2011
Tags & Branches = Versions



Thursday, July 28, 2011
PDF Generation



Thursday, July 28, 2011
Virtualenvs



Thursday, July 28, 2011
rtfd.org



Thursday, July 28, 2011
Tech




Thursday, July 28, 2011
Subdomains




Thursday, July 28, 2011
CNAME Support




Thursday, July 28, 2011
Cname Support


                          » Request for docs.fabfile.org

                          » docs.fabfile.org -> fabric.readthedocs.org

                          » In middleware, resolve CNAME and determine
                            docs to serve.
                          » Cache it.



Thursday, July 28, 2011
Architecture
                                                         +-----------+
                                                         |           |
                                                   +-----| Varnish |------+
                                                   |     +-----------+      |
                                                   |                        |
                                              +---------+              +---------+
                          +-------------+     |         |              |         |    +--------------+
                          |             |-----| Nginx   |              | Nginx   |----|              |
                          | File        |     +---------+              +---------+    | File         |
                          | System      |          |                        |         | System       |
                          +-------------+     +---------+ +--------+ +---------+      +--------------+
                                 | |          |         | |         | |          |        |   |
                                 | +---------|Gunicorn |--|Postgres|--|Gunicorn |--------+    |
                                 |            +---------+ +--------+ +---------+              |
                                 |                             |                              |
                                 |                             |                              |
                                 |                     +------------------+                   |
                                 |                     |                  |                   |
                                 +---------------------| Build Server     |-------------------+
                                                       |                  |
                                                       +------------------+




Thursday, July 28, 2011
Haystack & Solr




Thursday, July 28, 2011
Chef




Thursday, July 28, 2011
Nagios & Munin




Thursday, July 28, 2011
Upstart




Thursday, July 28, 2011
REST API




Thursday, July 28, 2011
CoffeeScript




Thursday, July 28, 2011
CLI




Thursday, July 28, 2011
Lessons




Thursday, July 28, 2011
Think about your URLs.
                               Really hard.




Thursday, July 28, 2011
Lay your project out sanely




Thursday, July 28, 2011
Write tests!




Thursday, July 28, 2011
Build around a standard tool




Thursday, July 28, 2011
Passing data through systems is
                              hard




Thursday, July 28, 2011
Serving static files is annoying




Thursday, July 28, 2011
Log. Everything.




Thursday, July 28, 2011
Promote (Hi!)




Thursday, July 28, 2011
Find a designer!




Thursday, July 28, 2011
Follow the Unix Philosophy




Thursday, July 28, 2011
Have a mission




Thursday, July 28, 2011
Open Source Outcomes




Thursday, July 28, 2011
Patches




Thursday, July 28, 2011
Known architecture information




Thursday, July 28, 2011
Slow Loris
Thursday, July 28, 2011
Trust




Thursday, July 28, 2011
People Writing Docs




Thursday, July 28, 2011
DEMO




Thursday, July 28, 2011
Questions?


                          » readthedocs.org / rtfd.org

                          » #readthedocs on Freenode

                          » github.com/rtfd/readthedocs.org

                          » eric@ericholscher.com




Thursday, July 28, 2011

More Related Content

KEY
The story and tech of Read the Docs
KEY
Read the Docs
PDF
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
PPTX
CouchDB Day NYC 2017: Introduction to CouchDB 2.0
PDF
A.I. Exercise.
PDF
Prototyping online ML with Divolte Collector
PDF
Divolte Collector - meetup presentation
PDF
Divolte collector overview
The story and tech of Read the Docs
Read the Docs
Got Logs? Get Answers with Elasticsearch ELK - PuppetConf 2014
CouchDB Day NYC 2017: Introduction to CouchDB 2.0
A.I. Exercise.
Prototyping online ML with Divolte Collector
Divolte Collector - meetup presentation
Divolte collector overview

Similar to Read the Docs: A completely open source Django project (20)

PDF
Continuous Deployment at Disqus (Pylons Minicon)
PDF
Writing a Crawler with Python and TDD
PDF
Ruby and Rails, as secret weapon to build your service-oriented apps
PDF
PDF
Building an experimentation framework
PDF
PDF
2011 June - Singapore GTUG presentation. App Engine program update + intro to Go
PDF
How I stopped worrying about and loved DumpRenderTree
PDF
HootSuite Dev 2
PDF
Rcos presentation
PDF
Engines Lightning Talk
PDF
Iwmn architecture
PDF
20110903 candycane
PDF
Rails 3 Beginner to Builder 2011 Week 1
PDF
One Man Lightning Talks
PDF
Tricks & challenges developing a large Django application
PDF
Pitfalls of Continuous Deployment
PDF
Intro to App Engine - Agency Dev Day NYC 2011
PDF
web标准化交流会bobby分享
PDF
web标准化交流会上海站bobby分享
Continuous Deployment at Disqus (Pylons Minicon)
Writing a Crawler with Python and TDD
Ruby and Rails, as secret weapon to build your service-oriented apps
Building an experimentation framework
2011 June - Singapore GTUG presentation. App Engine program update + intro to Go
How I stopped worrying about and loved DumpRenderTree
HootSuite Dev 2
Rcos presentation
Engines Lightning Talk
Iwmn architecture
20110903 candycane
Rails 3 Beginner to Builder 2011 Week 1
One Man Lightning Talks
Tricks & challenges developing a large Django application
Pitfalls of Continuous Deployment
Intro to App Engine - Agency Dev Day NYC 2011
web标准化交流会bobby分享
web标准化交流会上海站bobby分享
Ad

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Approach and Philosophy of On baking technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Cloud computing and distributed systems.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
A Presentation on Artificial Intelligence
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Big Data Technologies - Introduction.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Approach and Philosophy of On baking technology
“AI and Expert System Decision Support & Business Intelligence Systems”
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Mobile App Security Testing_ A Comprehensive Guide.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Monthly Chronicles - July 2025
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Per capita expenditure prediction using model stacking based on satellite ima...
Chapter 3 Spatial Domain Image Processing.pdf
Cloud computing and distributed systems.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Understanding_Digital_Forensics_Presentation.pptx
A Presentation on Artificial Intelligence
The AUB Centre for AI in Media Proposal.docx
Encapsulation_ Review paper, used for researhc scholars
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Reach Out and Touch Someone: Haptics and Empathic Computing
Big Data Technologies - Introduction.pptx
Ad

Read the Docs: A completely open source Django project