User:Lonvia/GSoC 2021 Nominatim Projects
You are looking into doing an Google Summer of Code project with Nominatim? That's awesome. To avoid disappointment on our side and your side, here are a few hints, how you should prepare for the project.
Become familiar with OpenStreetMap
You are hopefully already familiar with the OpenStreetMap project and maybe have even contributed to the map. If not, this is the time to do so. Go through the beginners pages on this wiki, create an account and start mapping.
As this project is about geocoding, you should in particular familiarize yourself with mapping of addresses. Spend a few hours collecting house numbers in your neighborhood and enter them into OSM. Now play around with the search function on the main page. Find out which searches work to find your newly entered data and which don't. Bonus points if you can point out an example that does not work as you expect and you can explain why (for example by pointing to the relevant open issue on github).
Dive into the Nominatim code
Get the Nominatim source code and install your own database using an extract of a small country. You can get the OSM data from http://download.geofabrik.de/. Liechtenstein or Monaco are always good candidates. The Nominatim installation instructions are fairly detailed and should not pose many problems for anybody with a minimum knowledge of Unix system administration. You should be able to go through the process on your own. Please don't come with questions as soon as you hit the first bump in the road. Try to figure out what's going on yourself.
Get coding/documenting/testing
Attention: having submitted a PR is a requirement to be accepted for the project this year.
There's three ways you can contribute to the project at this point:
- Read the code, look at the database structure and document what you see. There is a large Developer's section in the documentation that waits to be filled by you. You can also add code documentation to the PHP and SQL code.
- Write tests. You can do unit tests for the PHP and Python code or dive into our BDD testing infrastructure. If you need hints what to test, please ask on the mailing list or discussion forums.
- Pick an issue. Issues which are suitable for newcomers are tagged with "good first issue" and "help wanted".
If you have questions, please use the Github disccusion forum, the geocoding mailinglist or our IRC channel #osm-nominatim on OFTC. Be as specific as possible with your questions and show that you have made an attempt to find the answer yourself. You will find that people are much more willing to help you out that way. Do not comment on github issues asking for guidance. Issue are there for discussing the problem that hand, not for helping you get set up.
Example of a good question: "I was trying to do FOO and oddly enough the result was BAZ. I was expecting to get BAR because it looks like the code in file foo.php is doing that. What's going on?"
Example of a bad question: "I want to take on issue 349204, please give me guidance."
Start writing your proposal
Write and hand in your proposal as early as possible. This way you can get early feedback and have a chance to straighten out the rough edges. Remember that GSoC is a 50% job for 10 weeks. Plan accordingly and be realistic. Think about what you will do when you hit a bump in the road and your work takes longer than expected. But also plan for what to do when things go exceptionally well. You never know.
That's it. If you like some further advise on being a GSoC student, have a look at https://www.kiwix.org/en/a-5-1-2-steps-guide-to-being-a-top-gsoc-applicant/