Running Around Naked


How open development helps us be better programmers


Open Data Institute Tech Team ยท @ukoditech

The Open Data Institute

  • launched October 2012
  • non-profit
  • funded by
    • UK Government
    • matched by others
  • dedicated to Open Data
    • increasing supply
    • increasing demand
    • education and training

Open Culture

ODI Tech Team

  • started January 2013
  • mixture of skills
    • data science
    • statistics
    • public data
    • devops
    • engineering
  • building tools for open data
  • showing best practice
  • open culture in code

Open By Default

  • encourage public engagement
  • plan in the open
  • comments, forks, contributions
There are more good ideas in the world than there are in the ODI

Borrow Mercilessly

  • We will build on other's work
  • Avoid reinvention
  • Focus efforts into new areas
  • Contribute back
  • Show appreciation for what others have done

Experiment and Learn

  • Try new tools and ways of working
  • Reflect continuously on what works
  • Adapt to suit, or move on
  • Continuous improvement

Share Everything

  • Document and discuss experiences
  • Create reusable components
    • Eat your own dogfood
  • Share learning to help others

Be Ourselves

  • We are all individuals
  • We work as a team and in a community because we have common purpose
  • Express individual opinions, considerately.

Practicalities

  • Agile Approach
  • Open Tools
  • Open Communication
  • Open Collaboration

Open Tools

Git and GitHub

How did anybody ever do anything before GitHub?
https://twitter.com/pikesley/status/303100904037556225

Git

http://git-scm.com

  • Distributed version control
  • Extremely cheap branching
  • Extremely good merging

GitHub

http://github.com

  • Git hosting
  • Issue tracking
  • Wikis for documentation
http://github.com/theodi

Pull Requests

Fork (or branch) and Pull

How GitHub Uses GitHub to Build GitHub

I've added something to your code, and I want you to merge it upstream.

Workflow

  • Clone the repository
  • Create a branch
  • Write some code (with tests!)
  • Publish branch
  • Open a pull request back to master
https://github.com/theodi/member-directory/pull/72
https://github.com/theodi/member-directory/pull/72
https://github.com/theodi/member-directory/pull/72
https://github.com/theodi/member-directory/pull/72
https://github.com/theodi/member-directory/pull/72

Behaviour-Driven Development

  • Natural-language behaviour definition
  • Written with stakeholders
  • Clearly expresses desired behaviour
http://cukes.info
https://relishapp.com/theodi

Robots

All watched over by machines of loving grace
Richard Brautigan

Continuous Deployment

http://jenkins.theodi.org

Master Builder

https://github.com/theodi/master-builder

  • Written using the Jenkins Job DSL
  • Monitors all branches of all our projects
  • Creates all the Jenkins jobs
  • Tags selected branches
  • Also does:
    • Coverage
    • Documentation
    • Github status
    • Notifications

Treat your servers as cattle, not as pets

No more snowflakes!

Chef

http://www.opscode.com/chef/

  • Infrastructure == code
  • Continuous deployment
  • Deploys latest release
  • Holds the keys!
  • Code live in 10 minutes
  • No human intervention
  • cucumber-chef

Code Maintenance

https://codeclimate.com/github/theodi/open-orgn-services
http://gemnasium.com/theodi

Bimble

https://github.com/theodi/bimble

Open Communication

Blogging

http://theodi.org/blog

  • Regular blog schedule
  • Tech team weeknotes
irc.freenode.net #theodi

Dashboards

http://dashboards.theodi.org/tech

Open Collaboration

https://github.com/theodi/open-data-certificate/issues
https://github.com/theodi/open-data-certificate/issues/24

Working In The Open

  • stops us cutting corners
  • catches more mistakes
  • gives better results
  • helps us find collaborators
  • gives something back
  • is fun!
... being Open By Default is exhilarating. But I suspect that streaking at a cricket match is exhilarating, too. And sometimes it does feel like we're running around naked...
Sam Pikesley - http://www.theodi.org/blog/better-living-through-openness
Stuart Harrison Sam Pikesley James Smith Jeni Tennison

Open Data Institute Tech Team
@ukoditech
info@theodi.org
irc.freenode.net #theodi

ODI

http://theodi.github.io/presentations

ODI Creative Commons