GSoD 2020 - Improving Technical Documentation for New Developers

@herbert24 This can serve as the main discussion thread for this project.

The survey: Calling all developers: Want to help us improve on boarding documentation? Please fill out this survey!

The results of the survey:

Existing documentation:

https://wiki.openmrs.org/display/docs/Getting+Started+as+a+Developer

Project proposal:

3 Likes

Thanks @rainbow

@herbert24 I think I can continue with the old thread since it has a lot of work already there?

1 Like

Yes. That one is for REST API, and this one is for the new developer documentation. But you are welcome to join the conversation here :blush:

1 Like

@herbert24

I will be asking a lot of questions. Apologies first :slightly_smiling_face:

For the survey to be useful, we need to reach as many people as possible. I just found out @dev1 has no group members. @devnull group does not exist. How can we reach out to dev1 and dev null?

Another question I have is about Docker. I’ve seen discussion about Docker image for production. Is there a Docker image for development?

Thanks.

Hi @rainbow

What do u mean by docker image for development.

Normally we can use mysql docker image with a volume for development of plugin and the core.

When the development is done we can wrap it in to a docker image. And use it in the prod environments .

This is the normal procedure for the dev environemnt. I dont think anyone using docker image of openmrs for the development.

Hi @ayesh, thanks for replying. I know next to nothing about Docker. Just read the Wikipedia page today. My goal is to simplify the development environment set up process for the new developers. If Docker can make installing JDK, Java runtime, MySQL and SDK easier, then I would like to add it to the “getting started as a developer” document. The idea came from Burke in this thread.

@saurabh it is ok to continue with the old thread

@rainbow feel free to ask any questions,i saw the post you made about the survey and it is fine

Hi @rainbow

So that I think is a great idea. Because for some modules which are not in active development sometimes we need to switch to mysql older versions. It’s very hectic task to install mysql < 5.6 standalone versions in ubuntu for sure because I faced it.

So as Sidarth has mentioned in that thread it is actually a great way if we can move forward with a docker container for mysql installation. Which can be easily removed later.

So in openmrs instances that we have you can see a docker-compose which includes the mysql container as well. You can get an idea from it. We can do the same for the dev environemnt.

And the next thing is the persisting part. Persisting mysql data in a volume. So as we know docker containers data will only persist during it’s life time. Say if we want that data to be attached to another mysql container runing in you’re machine or in another machine. We can use volumes which will persist the data inside the volume. We can easily attach these volumes back in to another docker container. Here how it is done. I think this point is also very valuable for a developer who thinks about to work long time with openMRS. :slightly_smiling_face:

Hi @ayesh, So the solution is to install Docker then MySQL in Docker container (with the yml file you suggested)? What about JDK, JRE, OpenMRS SDK and IDE? Should they be installed in the same container? Is there no way to make an image so that people don’t have to install these things manually one by one?

JDK, JRE, OpenMRS SDK as well as the IDE you develop should be installed in your machine. So I was just showing u an example. Like this, we can up and run MySQL any version.

Thanks for clarifying. Only MySQL should be in a Docker container.

exactly for the dev environment.

1 Like

Thanks so much. My path forward is clear now :slightly_smiling_face:

@ayesh If we only use Docker to install MySQL, is it necessary to use Docker-compose?

Another question: for a new developer, is it still necessary to install standalone OpenMRS necessary after installing OpenMRS SDK ?

1 Like

@rainbow

Nope you can just use docker cli to run mysql container and u can attach a volume as well.

So yeah if you have sdk installed u can develop ref app as well as modules.Its easy to develop and debug as well

1 Like

@ayesh Thanks for the help :slightly_smiling_face:

1 Like

Hi All, from the survey results, someone suggested to have getting started guide for different types of module developers. I think the it makes sense to have several “Creating your first module” guides, as modules might be very different. From the technical point of view how many different kinds of module we have? I know OWA is different (web based, relying on REST API calls). What about the rest of the modules, how different are they technically?