]> git.openstreetmap.org Git - nominatim.git/blobdiff - CONTRIBUTING.md
actions: add test for database migration
[nominatim.git] / CONTRIBUTING.md
index 7ebd6b9dc9c9835f888000d2a2c8aaac6a154b54..a78bbfb3e8a8f9fc641da3bcd5be65d762e85570 100644 (file)
@@ -7,40 +7,9 @@ Please always open a separate issue for each problem. In particular, do
 not add your bugs to closed issues. They may looks similar to you but
 often are completely different from the maintainer's point of view.
 
-### When Reporting Bad Search Results...
-
-Please make sure to add the following information:
-
- * the URL of the query that produces the bad result
- * the result you are getting
- * the expected result, preferably a link to the OSM object you want to find,
-   otherwise an address that is as precise as possible
- To get the link to the OSM object, you can try the following:
- * go to https://openstreetmap.org
- * zoom to the area of the map where you expect the result and
-   zoom in as much as possible
- * click on the question mark on the right side of the map,
-   then with the queston cursor on the map where your object is located
- * find the object of interest in the list that appears on the left side
- * click on the object and report the URL back that the browser shows
-
-### When Reporting Problems with your Installation...
-
-Please add the following information to your issue:
-
- * hardware configuration: RAM size, kind of disks
- * Operating system (also mention if you are running on a cloud server)
- * Postgres and Postgis version
- * list of settings you changed in your Postgres configuration
- * Nominatim version (commit id, if you run from the github repo)
- * (if applicable) exact command line of the command that was causing the issues
-
-
 ## Workflow for Pull Requests
 
-We love to get pull reuqests from you. We operate the "Fork & Pull" model
+We love to get pull requests from you. We operate the "Fork & Pull" model
 explained at
 
 https://help.github.com/articles/using-pull-requests
@@ -64,10 +33,10 @@ that duplicate work can be avoided.
 ## Coding style
 
 Nominatim historically hasn't followed a particular coding style but we
-are in process of consolodating the style. The following rules apply:
+are in process of consolidating the style. The following rules apply:
 
  * Python code uses the official Python style
- * indention
+ * indentation
    * SQL use 2 spaces
    * all other file types use 4 spaces
    * [BSD style](https://en.wikipedia.org/wiki/Indent_style#Allman_style) for braces
@@ -77,23 +46,60 @@ are in process of consolodating the style. The following rules apply:
    * no spaces after opening and before closing bracket
    * leave out space between a function name and bracket
      but add one between control statement(if, while, etc.) and bracket
+ * for PHP variables use CamelCase with a prefixing letter indicating the type
+   (i - integer, f - float, a - array, s - string, o - object)
 
-The coding style is enforced with PHPCS and can be tested with:
+The coding style is enforced with PHPCS and pylint. It can be tested with:
 
 ```
-  phpcs --report-width=120 --colors */**.php
+phpcs --report-width=120 --colors .
+pylint3 --extension-pkg-whitelist=osmium nominatim
 ```
 
 ## Testing
 
-Before submitting a pull request make sure that the following tests pass:
+Before submitting a pull request make sure that the tests pass:
 
 ```
-  cd test/bdd
-  behave -DBUILDDIR=<builddir> db osm2pgsql
+  make tests
 ```
 
-```
-  cd test/php
-  phpunit ./
-```
+## Releases
+
+Nominatim follows semantic versioning. Major releases are done for large changes
+that require (or at least strongly recommend) a reimport of the databases.
+Minor releases can usually be applied to existing databases. Patch releases
+contain bug fixes only and are released from a separate branch where the
+relevant changes are cherry-picked from the master branch.
+
+Checklist for releases:
+
+* [ ] increase versions in
+  * `src/nominatim_api/version.py`
+  * `src/nominatim_db/version.py`
+  * CMakeLists.txt
+* [ ] update `ChangeLog` (copy information from patch releases from release branch)
+* [ ] complete `docs/admin/Migration.md`
+* [ ] update EOL dates in `SECURITY.md`
+* [ ] commit and make sure CI tests pass
+* [ ] test migration
+  * download, build and import previous version
+  * migrate using master version
+  * run updates using master version
+* [ ] prepare tarball:
+  * `git clone --recursive https://github.com/osm-search/Nominatim` (switch to right branch!)
+  * `rm -r .git* osm2pgsql/.git*`
+  * copy country data into `data/`
+  * add version to base directory and package
+* [ ] upload tarball to https://nominatim.org
+* [ ] prepare documentation
+  * check out new docs branch
+  * change git checkout instructions to tarball download instructions or adapt version on existing ones
+  * build documentation and copy to https://github.com/osm-search/nominatim-org-site
+  * add new version to history
+* [ ] check release tarball
+  * download tarball as per new documentation instructions
+  * compile and import Nominatim
+  * run `nominatim --version` to confirm correct version
+* [ ] tag new release and add a release on github.com
+* [ ] build pip packages and upload to pypi