SlideShare a Scribd company logo
Building OpenStreetMap.org
Tom Hughes
tom@compton.nu
@thughes
Web Site Architecture
Database
Server
Web/Rails
Server
Web/Rails
Server
Web/Rails
Server
Rails
Server
Rails
Server
Rails
Server
File
Server
Database Schema
● Users
– users / user_tokens / user_preferences / user_roles / user_blocks
● Geodata
– changesets / changeset_tags / changeset_comments / ...
– current_nodes / current_node_tags / nodes / node_tags
– current_ways / current_way_tags / current_way_nodes / …
– current_relations / current_relation_tags / current_relation_members / …
● GPS Data
– gpx_files / gpx_file_tags / gps_points
● Notes
– notes / note_comments
The “Rails Port”
The “Rails Port”
● Getting Started
– INSTALL.md
– CONFIGURE.md
– CONTRIBUTING.md
● Alternatively
– VAGRANT.md
● We have issues...
The “Rails Port”
● Models – app/models
● Views – app/views
● Controllers – app/controllers
● Javascript – app/assets/javascripts
● Stylesheets – app/assets/stylesheets
● Strings – config/locales/en.yml
The “Rails Port”
● Models
– Node class is current_nodes
– OldNode class is nodes
– Trace class is gpx_files
– Tracetag class is gpx_file_tags
– Tracepoint class is gps_points
The “Rails Port”
● Style
– “rubocop” for ruby
– “rake jshint” for javascript
● Tests
– “rake test” for ruby
– javascript coming soon?
● Travis will run on pull requests
● Coveralls will check coverage
The “Rails Port”
● Merging
– Pull requests notified to rails-dev list
– Review of behaviour and UI changes
– Review of code changes
– Larger changes may get a test instance
CGImap
CGImap
● Currently handles a number of API calls
– The main “map” call
– Single node, way and relation fetches
– Multiple node, way and relation fetches
– The “full” way and relation calls
● Want to extend it to cover more API calls
– History calls
– Changeset calls
CGImap
● Currently runs as a separate daemon
– Accessed via FastCGI
● Core code has now been split into a library
– Will allow creation of a ruby gem around the library
– Which then allows direct integration with rails code
● JSON output support
– Can be compiled with JSON support
– Not currently enabled in production
CGImap
● Style
– Formatted in “LLVM style” with clang-format
– Configure “--with-clang-format”
– Run “make clang-format” to reformat
● Tests
– Run tests with “make check”
– Needs postgresql running
– Travis coming soon?
Get Involved
GitHub
https://github.com/openstreetmap/openstreetmap-website
https://github.com/zerebubuth/openstreetmap-cgimap
Mailing Lists
https://lists.openstreetmap.org/listinfo/rails-dev
https://lists.openstreetmap.org/listinfo/dev
IRC
#osm-dev
Engineering Working Group
https://wiki.osmfoundation.org/wiki/Engineering_Working_Group
engineering@osmfoundation.org

More Related Content

What's hot

MongoDB and MongoMK Source Event
MongoDB and MongoMK Source EventMongoDB and MongoMK Source Event
MongoDB and MongoMK Source Event
Yuval Ararat
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
Grossum
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
Ricardo Sanchez
 
Rails 3 Asset Pipeline
Rails 3 Asset PipelineRails 3 Asset Pipeline
Rails 3 Asset Pipeline
Nathan Broadbent
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
Hatem Al Sum
 
Deployments with rails
Deployments with railsDeployments with rails
Deployments with rails
Gourav Tiwari
 
Vmth project
Vmth projectVmth project
Vmth project
Ricardo Sanchez
 
Redis : Database, cache, pub/sub and more at Jelly button games
Redis : Database, cache, pub/sub and more at Jelly button gamesRedis : Database, cache, pub/sub and more at Jelly button games
Redis : Database, cache, pub/sub and more at Jelly button games
Redis Labs
 
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
Alkacon Software GmbH & Co. KG
 
Gotszling mogo db-membase
Gotszling mogo db-membaseGotszling mogo db-membase
Gotszling mogo db-membase
GiltTech
 
Web Performance Part 3 "Server-side tips"
Web Performance Part 3  "Server-side tips"Web Performance Part 3  "Server-side tips"
Web Performance Part 3 "Server-side tips"
Binary Studio
 
Optimising for Performance
Optimising for PerformanceOptimising for Performance
Optimising for Performance
thomas_mb
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Cluster
guestd34230
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
Saltstack for Ansible users
Saltstack for Ansible usersSaltstack for Ansible users
Saltstack for Ansible users
Paul Traylor
 
PHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPPHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHP
Henri Bergius
 
ASP.NET Scalability - DDD7
ASP.NET Scalability - DDD7ASP.NET Scalability - DDD7
ASP.NET Scalability - DDD7
Phil Pursglove
 
Apache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 PresentationApache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 Presentation
ultimatetux
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
Amit Solanki
 
Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014
Barney Hanlon
 

What's hot (20)

MongoDB and MongoMK Source Event
MongoDB and MongoMK Source EventMongoDB and MongoMK Source Event
MongoDB and MongoMK Source Event
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
 
Ruby projects of interest for DevOps
Ruby projects of interest for DevOpsRuby projects of interest for DevOps
Ruby projects of interest for DevOps
 
Rails 3 Asset Pipeline
Rails 3 Asset PipelineRails 3 Asset Pipeline
Rails 3 Asset Pipeline
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Deployments with rails
Deployments with railsDeployments with rails
Deployments with rails
 
Vmth project
Vmth projectVmth project
Vmth project
 
Redis : Database, cache, pub/sub and more at Jelly button games
Redis : Database, cache, pub/sub and more at Jelly button gamesRedis : Database, cache, pub/sub and more at Jelly button games
Redis : Database, cache, pub/sub and more at Jelly button games
 
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
 
Gotszling mogo db-membase
Gotszling mogo db-membaseGotszling mogo db-membase
Gotszling mogo db-membase
 
Web Performance Part 3 "Server-side tips"
Web Performance Part 3  "Server-side tips"Web Performance Part 3  "Server-side tips"
Web Performance Part 3 "Server-side tips"
 
Optimising for Performance
Optimising for PerformanceOptimising for Performance
Optimising for Performance
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Cluster
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
 
Saltstack for Ansible users
Saltstack for Ansible usersSaltstack for Ansible users
Saltstack for Ansible users
 
PHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPPHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHP
 
ASP.NET Scalability - DDD7
ASP.NET Scalability - DDD7ASP.NET Scalability - DDD7
ASP.NET Scalability - DDD7
 
Apache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 PresentationApache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 Presentation
 
Introduction to JRuby
Introduction to JRubyIntroduction to JRuby
Introduction to JRuby
 
Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014Next Generation DevOps in Drupal: DrupalCamp London 2014
Next Generation DevOps in Drupal: DrupalCamp London 2014
 

Viewers also liked

Web mapping
Web mappingWeb mapping
Web mapping
Sareuon Soum
 
Stat planet - tutorial
Stat planet - tutorialStat planet - tutorial
Stat planet - tutorial
Sathya Seelan
 
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINAGetting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
JISC GECO
 
shift2010 - 17apr2010 - OpenStreetMap: a free map for our world
shift2010 - 17apr2010 - OpenStreetMap: a free map for our worldshift2010 - 17apr2010 - OpenStreetMap: a free map for our world
shift2010 - 17apr2010 - OpenStreetMap: a free map for our world
Simone Cortesi
 
evelopment of a server to manage a customised local version of OpenStreetMap...
evelopment of a server  to manage a customised local version of OpenStreetMap...evelopment of a server  to manage a customised local version of OpenStreetMap...
evelopment of a server to manage a customised local version of OpenStreetMap...
NUIM
 
Geo standard
Geo standardGeo standard
Geo standard
Olivier Rovellotti
 
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
JISC GECO
 
OpenStreetMap : Open Licensed GeoData
OpenStreetMap : Open Licensed GeoDataOpenStreetMap : Open Licensed GeoData
OpenStreetMap : Open Licensed GeoData
Harry Wood
 
Pertemuan 1 - Introduction StatPlanet
Pertemuan 1 - Introduction StatPlanetPertemuan 1 - Introduction StatPlanet
Pertemuan 1 - Introduction StatPlanet
Adi Triyatmoko
 
Architecture & planning for software & web
Architecture & planning for software & webArchitecture & planning for software & web
Architecture & planning for software & web
Jake Aull
 
OpenStreetMap a servizio delle emergenze
OpenStreetMap a servizio delle emergenzeOpenStreetMap a servizio delle emergenze
OpenStreetMap a servizio delle emergenze
Marco Minghini
 
Geodjango and HTML 5
Geodjango and HTML 5Geodjango and HTML 5
Geodjango and HTML 5
Lucio Grenzi
 
Mapping Your Data 2
Mapping Your Data 2Mapping Your Data 2
Mapping Your Data 2
Christopher Martin
 
OpenStreetMap Response to Haiti earthquake
OpenStreetMap Response to Haiti earthquake OpenStreetMap Response to Haiti earthquake
OpenStreetMap Response to Haiti earthquake
Shoaib Burq
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
Graham Jones
 
Making use of OpenStreetMap data with Python
Making use of OpenStreetMap data with PythonMaking use of OpenStreetMap data with Python
Making use of OpenStreetMap data with Python
Andrii Mishkovskyi
 
Azure App Service Architecture. Web Apps.
Azure App Service Architecture. Web Apps.Azure App Service Architecture. Web Apps.
Azure App Service Architecture. Web Apps.
Alexander Feschenko
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
Web of Things Application Architecture
Web of Things Application ArchitectureWeb of Things Application Architecture
Web of Things Application Architecture
Dominique Guinard
 
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
JISC GECO
 

Viewers also liked (20)

Web mapping
Web mappingWeb mapping
Web mapping
 
Stat planet - tutorial
Stat planet - tutorialStat planet - tutorial
Stat planet - tutorial
 
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINAGetting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
 
shift2010 - 17apr2010 - OpenStreetMap: a free map for our world
shift2010 - 17apr2010 - OpenStreetMap: a free map for our worldshift2010 - 17apr2010 - OpenStreetMap: a free map for our world
shift2010 - 17apr2010 - OpenStreetMap: a free map for our world
 
evelopment of a server to manage a customised local version of OpenStreetMap...
evelopment of a server  to manage a customised local version of OpenStreetMap...evelopment of a server  to manage a customised local version of OpenStreetMap...
evelopment of a server to manage a customised local version of OpenStreetMap...
 
Geo standard
Geo standardGeo standard
Geo standard
 
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
Aerial Images from Around the World – Andreas Buchholz, GIS and Research Cura...
 
OpenStreetMap : Open Licensed GeoData
OpenStreetMap : Open Licensed GeoDataOpenStreetMap : Open Licensed GeoData
OpenStreetMap : Open Licensed GeoData
 
Pertemuan 1 - Introduction StatPlanet
Pertemuan 1 - Introduction StatPlanetPertemuan 1 - Introduction StatPlanet
Pertemuan 1 - Introduction StatPlanet
 
Architecture & planning for software & web
Architecture & planning for software & webArchitecture & planning for software & web
Architecture & planning for software & web
 
OpenStreetMap a servizio delle emergenze
OpenStreetMap a servizio delle emergenzeOpenStreetMap a servizio delle emergenze
OpenStreetMap a servizio delle emergenze
 
Geodjango and HTML 5
Geodjango and HTML 5Geodjango and HTML 5
Geodjango and HTML 5
 
Mapping Your Data 2
Mapping Your Data 2Mapping Your Data 2
Mapping Your Data 2
 
OpenStreetMap Response to Haiti earthquake
OpenStreetMap Response to Haiti earthquake OpenStreetMap Response to Haiti earthquake
OpenStreetMap Response to Haiti earthquake
 
Rendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using MapnikRendering OpenStreetMap Data using Mapnik
Rendering OpenStreetMap Data using Mapnik
 
Making use of OpenStreetMap data with Python
Making use of OpenStreetMap data with PythonMaking use of OpenStreetMap data with Python
Making use of OpenStreetMap data with Python
 
Azure App Service Architecture. Web Apps.
Azure App Service Architecture. Web Apps.Azure App Service Architecture. Web Apps.
Azure App Service Architecture. Web Apps.
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Web of Things Application Architecture
Web of Things Application ArchitectureWeb of Things Application Architecture
Web of Things Application Architecture
 
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
Map Styling Tools and Interactive maps on the web with OpenLayers - Addy Pope...
 

Similar to Building OpenStreetMap.org, SOTM US 2015

Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
Guillaume Laforge
 
Rails - getting started
Rails - getting startedRails - getting started
Rails - getting started
True North
 
Groovygrails
GroovygrailsGroovygrails
Groovygrails
Manav Prasad
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
Henry S
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
Guillaume Laforge
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
Guillaume Laforge
 
Logs aggregation and analysis
Logs aggregation and analysisLogs aggregation and analysis
Logs aggregation and analysis
Divante
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
Kevin Webber
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
Geospatial web services using little-known GDAL features and modern Perl midd...
Geospatial web services using little-known GDAL features and modern Perl midd...Geospatial web services using little-known GDAL features and modern Perl midd...
Geospatial web services using little-known GDAL features and modern Perl midd...
Ari Jolma
 
Intro to sbt-web
Intro to sbt-webIntro to sbt-web
Intro to sbt-web
Marius Soutier
 
Next Generation Spring MVC with Spring Roo
Next Generation Spring MVC with Spring RooNext Generation Spring MVC with Spring Roo
Next Generation Spring MVC with Spring Roo
Stefan Schmidt
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
Source Conference
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to Prod
Subhas Dandapani
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsitricks
 
Knolx session
Knolx sessionKnolx session
Knolx session
Knoldus Inc.
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsitricks
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsi krishna
 
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
Metosin Oy
 

Similar to Building OpenStreetMap.org, SOTM US 2015 (20)

Gaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume LaforgeGaelyk - JFokus 2011 - Guillaume Laforge
Gaelyk - JFokus 2011 - Guillaume Laforge
 
Rails - getting started
Rails - getting startedRails - getting started
Rails - getting started
 
Groovygrails
GroovygrailsGroovygrails
Groovygrails
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
Gaelyk update - Guillaume Laforge - SpringOne2GX 2011
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
Logs aggregation and analysis
Logs aggregation and analysisLogs aggregation and analysis
Logs aggregation and analysis
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
Geospatial web services using little-known GDAL features and modern Perl midd...
Geospatial web services using little-known GDAL features and modern Perl midd...Geospatial web services using little-known GDAL features and modern Perl midd...
Geospatial web services using little-known GDAL features and modern Perl midd...
 
Intro to sbt-web
Intro to sbt-webIntro to sbt-web
Intro to sbt-web
 
Next Generation Spring MVC with Spring Roo
Next Generation Spring MVC with Spring RooNext Generation Spring MVC with Spring Roo
Next Generation Spring MVC with Spring Roo
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to Prod
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Knolx session
Knolx sessionKnolx session
Knolx session
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016
 

Recently uploaded

Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
Zycus
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
KrishnaveniMohan1
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
Alina Yurenko
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
michniczscribd
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
aeeva
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 

Recently uploaded (20)

Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
How GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdfHow GenAI Can Improve Supplier Performance Management.pdf
How GenAI Can Improve Supplier Performance Management.pdf
 
Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.Penify - Let AI do the Documentation, you write the Code.
Penify - Let AI do the Documentation, you write the Code.
 
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
Going AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applicationsGoing AOT: Everything you need to know about GraalVM for Java applications
Going AOT: Everything you need to know about GraalVM for Java applications
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
bgiolcb
bgiolcbbgiolcb
bgiolcb
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
TMU毕业证书精仿办理
TMU毕业证书精仿办理TMU毕业证书精仿办理
TMU毕业证书精仿办理
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 

Building OpenStreetMap.org, SOTM US 2015

Editor's Notes

  1. Session all about the code behind osm.org and how we develop it and how you can help I'm Tom Hughes and I've been helping run the servers since 2007 I work on everything but in particular on the main web site
  2. Quick overview of architecture ** Three frontends using round robin DNS Run apache and passenger Handle most requests Heavy requests proxied to shared backend pool ** Three backends Run apache, passenger and cgimap Some API requests sent to cgimap Everything else handled by passenger (currently)
  3. Overview of database Users table, with various auxiliary tables ** Geodata, everything grouped by changesets ** Nodes – current tables with latest version, history tables with all versions – yes duplicated... ** Repeated for ways and relations but with tables to link to child objects ** Imported GPS data – yes the names are not consistent ** Notes with comments Various others with diaries, friends, messages,etc
  4. Main web site is Ruby on Rails – known as the rails port for historical reasons Find it on github – issues welcome – pull requests even more welcome Includes an implementation of the API Alternate implementation of part of the API is what is used in production though – more later
  5. Get started – checkout the code! Do a (small) bit of reading ** INSTALL.md tells you how to do the basic setup ** CONFIGURE.md covers a few things you may want to do once you have the basics working ** CONTRIBUTING.md explains how we work ** Or you can use vagrant to do much of the basic setup – read VAGRANT.md for more information ** If you're looking for things to do then we have open issues!
  6. Structure is a basic MVC architecture Models represent the data with a class for each type of data ** Views are what the user sees – we use ERB templates which are a mix of HTML and Ruby ** Controllers handle user requests – fetching the needed data and then rendering a view ** We also have client side javascript code using jQuery ** And stylesheets to control client side rendering of the views ** All text needs to be translatable – add strings to english and Translatewiki does the rest
  7. Models have one class per database table Mostly the names match Except when they don't... ** Big difference is that current tables lose their prefix ** and history tables gain an old prefix Applies to ways and relations as well ** GPS tables also different This is largely a question of history and the rails code being written around an existing schema
  8. Please run style checkers – we have rubocop setup for ruby and jshint for rails ** Even more important – please run the tests We have good tests for the ruby code But not (yet) for javascript ** Style checks and tests will be run by travis when you open a pull ** Coverage will also be checked by coveralls – only the ruby code at the moment but coverage is good and we'd like to keep it that way So add tests for any new ruby code!
  9. When your change is ready, open a PR The rails-dev list will be notified, as it is for all issues ** First thing we will usually do is look at the change as a user – what are the UI changes etc ** When we're happy with that I will usually look at the actual code for any implementation issues Not hard and fast though, things may happen in a different order, and small fixes are often just merged straight off ** Larger changes may get a test instance, with people invited to try it out
  10. Second part of our story is CGImap Also on github C++ implementation of (part of) the API Increased performance by carefully tailored SQL queries Better memory management for potentially large data sets
  11. Currently handles The main map call – what editors use to get data Fetching individual map objects Fetching multiple map objects Fetching map objects with their child objects ** Want to extend it Calls which include object history Changeset calls And so on
  12. Currently runs as a separate daemon called via FastCGI ** Core code has been split into a library Will allow a gem wrapper to be written for integration with rails code Avoids current duplication of API code between rails and cgimap ** Supports JSON but not currently enabled as only calls handled by cgimap would be supported Moving rails code to call cgimap via gem wrapper will allow this (and other changes) to be implemented once Need to reach reasonable API completeness in cgimap first though – help please!
  13. Formatted in LLVM style with clang-format Need to configure –with-clang-format then you can reformat with make clang-format Needs clang 3.6 ** Run the tests with make check Need to have postgres running Travis config merged but not enabled yet
  14. None of this happens by magic, and many of the people working on this are also trying to keep the servers running So please, get involved – if you're planning something big, or just want advice, then please contact us and we'll be glad to help I can take some questions now, or find me later – I'm around all weekend and for the hackday on Monday And if you want to know more about how we actually turn all this code into a running service then stay around for my colleague Grant Slater's talk which is up next in this room