Kernel.org keysigning map
~~~~~~~~~~~~~~~~~~~~~~~~~

About
~~~~~
The project is realized with leafletsjs [0] and uses Openstreetmap [1] to
render the map. Each kernel.org account holder may put a place mark to show the
world where they might be available for a keysigning.

Privacy
~~~~~~~
The source repository is public, so when you pick coordinates, PLEASE be
mindful of your privacy. The last thing you want is someone knocking on your
door demanding that you fix their computers. It is recommended that you only
list the city centres in the source YAML files, unless you really like
uninvited visitors.

How to get on the map?
~~~~~~~~~~~~~~~~~~~~~~
Find out your coordinates (latitude,longitude). Nominatim can help with this:

  - http://nominatim.openstreetmap.org/

Search for your City name, then click "Details" and copy-paste "Centre Point"
coordinates as shown on the results page. If you obtain the coordinates via
some other means, make sure they are in the 'latitude,longitude' order expected
by the script.

Once your have your coordinates, create a new file in users/[username].yaml
where [username] is your kernel.org account name. See other examples already
there, and also a commented "sample.yaml" in toplevel directory. You can list
multiple locations and specify in the description the frequency at which you
may be found at each one.

You may then preview the results by running:

  ./yaml-to-kml.py -f users/[username].yaml -o www/developers.kml
  firefox www/index.html

You might need to temporarily change the security.fileuri.strict_origin_policy
(or privacy.file_unique_origin in older versions) in about:config to allow
accessing local resources in page directory.  Disable the setting after tests.

If all looks good, you need to push this information back into the kernel.org
repository.

[0] http://leafletjs.com/
[1] http://www.openstreetmap.org/
