## How to Contribute Code to OpenStreetMap Core Website t <!-- Put the link to this slide here so people can follow --> https://hackmd.io/p/template-Talk-slide Brian DeRocher State of the Map US June 9th, 2023 --- ## Who am I? - Brian DeRocher - organizer of MappingDC 🏴󠁵󠁳󠁤󠁣󠁿 - 14 year volunteer :world_map: - working on a feature for a long time --- ![](https://hackmd.io/_uploads/ByUQAByD3.png) --- ## First Commit <!-- Source : https://github.com/openstreetmap/openstreetmap-website Wiki : https://wiki.openstreetmap.org/wiki/Openstreetmap-website --> ```text commit 06f3473d1c64d2e0a1ecc6f1a9c4679a52bc4761 Author: Steve Coast <steve@asklater.com> Date: Fri Jul 28 21:41:39 2006 +0000 beginning of osm on rails ``` <aside class="notes"> test </aside> --- <!-- | | | | --- | --- | | lanugage | Ruby | framework | Ruby on Rails | database | PostgreSQL | postgis | no --> | language | framework | |:---:|:---:| | Ruby | Rails | | database | PostGIS | |:---:|:---:| | PostgreSQL | no | | core team | commits per day | contributors | |:---:|:---:|:---:| | 2 | ~1 | ~ 200 | --- ## Context ![](https://imgs.xkcd.com/comics/dependency.png) https://xkcd.com/2347/ --- ## Communicate Start a conversation with the core team * Andy Alan (gravitystorm) - Rails / UI * Tom Hughes (tomhughes) - Infrastructure <aside class="notes"> Andy says Yes Tom says No </aside> <aside class="notes"> Working on Microcosms/Communities. Conversation started 2017 at SotM US in Boulder while sitting with Andy Alan. I tell him I'm working on a separate app, also Ruby on Rails. It should integrate well with osm-website. He says it should be included in core. I go off and rework things. I had been using Cucumber testing framework. When I created my first PR, I got some scornful comments from the core team. </aside> --- ## Communicaiton Resources * IRC * Matrix https://app.element.io * mailing lists * https://wiki.openstreetmap.org/wiki/Mailing_lists * https://lists.openstreetmap.org/listinfo/rails-dev * Issues open and closed * Pull requests * https://wiki.openstreetmap.org/wiki/Develop * https://wiki.openstreetmap.org/wiki/Top_Ten_Tasks <aside class="notes"> Ask if this feature would be well received. Ask about an approach to the solution. See if anyone has ever discussed this before. The Communities feature was started by Tom MacWright, 2013 (to the day 10 years ago) </aside> <!-- --- ## Adjacent Tools * https://github.com/openstreetmap/operations * https://github.com/openstreetmap/iD * https://github.com/openstreetmap/osm2pgsql * https://github.com/osm-search/Nominatim * https://github.com/gravitystorm/openstreetmap-carto * https://josm.openstreetmap.de/browser/josm/trunk * https://github.com/Leaflet/Leaflet --> --- ## Getting Started 1. First install it locally. * INSTALL.md 2. Contribute * CONTRIBUTING.md 3. Before and after any code changes, make sure tests are :100: --- ## Database ERD ![](https://wiki.openstreetmap.org/w/images/1/10/ERD_of_OSM_DB.svg) Thanks User:Andygol <aside class="notes"> Understand the structure of the database. </aside> --- ## Docker Read DOCKER.md. Use docker-compose. Create docker-compose-test.yml. <aside class="notes"> recently introduced, great for development, for isolating Whereas Ruby on Rails lets you select among 4 databases based on env var, each docker environment has 1 database. Docker-compose will start up and initialize the database for you. </aside> --- ## docker-compose-test.yml ```yaml= services: web_test: build: context: . command: sh -c "" export RAILS_ENV=test; bundle exec rails db:migrate && bundle exec rubocop -A --format fuubar && bundle exec rake test:all && bundle exec brankeman -q" depends_on: - db_test volumes: - .:/app ``` <aside class="notes"> I suggest building a separate docker-compose-test.yml to run the testing framework which is isolated from your development. </aside>``` --- ## docker-compose-test.yml Do not use a db volume. Recreate the database with every test. Can run one isolated test, exec into container ```sh bundle exec rake test \ test/controllers/community_members_controller_test.rb \ TESTOPTS="--name=test_create_when_save_fails -v" ``` <aside class="notes"> Contact me for a complete copy. </aside> --- ## Testing Use minitest --- ## Branching ![](https://hackmd.io/_uploads/Sys3FUJDn.png) <aside class="notes"> One branch per feature, bug fix or task. Use git-rebase to attach your feature to the end of master. If your branch is open for a while, rebase master often. Rerun tests. Often Rubocop is upgraded and makes you clean more code. git push --force is ok for the branch </aside> --- ## Pull Requests * Only change what's needed for your feature * Ask for early feedback * Address all issues the core team finds <!-- * [pullrequestreview-1158019701](https://github.com/openstreetmap/openstreetmap-website/pull/3717#pullrequestreview-1158019701) --> * If there's a dependency, create a new ticket/branch/PR and merge that first --- ## Dev Site https://apis.dev.openstreetmap.org/ <aside class="notes"> Get feedback from real users on the dev site. </aside> --- ### Thank you! :earth_americas: You can find me on - GitHub: OpenBrian - Mastodon @brian_derocher@en.osm.town - email: brian@derocher.org
{"title":"How to Contribute to osm.org","breaks":true,"description":"Help in making changes to the core OSM website.","metaMigratedAt":"2023-06-20T16:40:11.524Z","metaMigratedFrom":"YAML","contributors":"[{\"id\":\"d2d07d20-7050-4778-b4da-0adafb68b895\",\"add\":16940,\"del\":5548}]"}
    235 views