Breaking down walls and attracting more devs to OpenMRS

@bistenes Thanks for pointing this problem. I am a fairly new to the OpenMRS community (just joined in Jan’20). I am also selected as a GSoC’20 student and working on adding SMART-on-FHIR functionality to OpenMRS.

I agree with the fact that many OpenMRS modules are not maintained but I think that this is not only because of ownership / responsibility problems but also because we have very few active new/intermediate developers. I mean to say that we have plenty of dev5 and dev1 developers but what about dev2,3,4 I don’t see much of them active in the community.

From my post I want to mainly point out the fact that OpenMRS as a community is not being able to attract a good amount of new developers. Lesser new developers means lesser chances of dev2,3,4 developers who actually should be the once maintaining and reporting errors in different OpenMRS modules.

I would like to share some of my on boarding experiences with OpenMRS and I would also like to suggest few things.

So as @ssmusoke said “Most new developers join during GSoC” I also joined during the GSoC period. I should say that OpenMRS as a community has huge entering barriers (Walls) but once you cross those one can easily start contributing only if one is bold enough to ask silly questions like I did. But we as community members should understand that everybody is not bold enough to ask questions directly on TALK. I am not at all saying that we don’t have good members to help but only that reaching them is a difficult task. @ibacher has helped me immensely.

Reasons why I say this (OpenMRS has huge WALLS):-

  1. When a beginner first lands on the TALK page of OpenMRS he/she can only see titles which are all very overwhelming and frightening mostly coming from experienced developers (dev3, dev4, dev5) which totally demotivates a beginner from asking environment setup related questions (which is generally the starting point for all beginners).

  2. Now if a beginner tries to ask a question via Personal Message [PM] to a community member, they can’t because they don’t have the access to do that (a /dev level is required to do so). For a beginner to be able to ask a question they’ll atleast have to spend few days reading posts on TALK which is totally acceptable and logical but for a beginner to stick with a community in the very initial days is very tough I guess.

  3. If one tries to setup their environment themselves then also it is almost impossible (unless he/she is an experienced developer) to set it up because none of our wiki pages explains / provides working links on how to install MySQL 5.6 and Java 8 on Linux, Windows or Mac. It was almost impossible for me to install such an old version of MySQL on my machine. But hopefully we’ll get out of this problem soon because I can see developers working on it.

  4. One more thing which a beginner (or at least I face during my initial days) that there are so many confusing names which we use very frequently inside the community but they might not make sense for a beginner. Few examples Reference application, OpenMRS SDK, OpenMRS Distribution, OpenMRS Platform. And the versions are a lot more confusing.

  5. One Android client specific thing which demotivates beginners is the Demo server. Most of the times its down which makes it impossible for a beginner to login to the OpenMRS App. I understand there might be a problem which causes this but a beginner can never imagine that there might be a problem from the community side, they always blame themselves for it.

  6. Likewise if a module or core is broken and a beginner is not able to build and deploy it they get demotivated and might leave the community.

Most of the problems have very obvious solutions but somethings that I would like to suggest :-

  1. OpenMRS community should have a more approachable and at the same time professional chat platform like Gitter or if not this atleast we should make our existing platforms more engaging. I know OpenMRS is on Telegram and Slack but on Telegram I can only see bot messages and nothing else. This would help beginners to get a easy start.

  2. I think OpenMRS also lacks on the documentation part. It can be a case that all the modules don’t need maintenance as we have shifted to more sophisticated technologies but it’s better to add a Depreciation Notice or something similar (like supported by versions below 2.0.x etc) in the readme of every module.

  3. Also it will be nice if we can provide links to download MySQL, JAVA, Maven versions which actually works with OpenMRS. Some newer getting started tutorial videos will also be nice.

I am at /dev/1 stage and pointing out so many things might not be something I should do. Just trying to help make the OpenMRS community better. Sorry for the wall of text.

11 Likes

@sidvaish97,

Thank you for your thoughtful post. I hope you don’t mind that I pulled it out of Brandon’s topic on module maintenance conventions. While your post strayed off topic in that thread, I think you make some great points and I wanted to make sure we had space to discuss this.

This doesn’t actually have to do with /dev stages; rather, it’s a built-in feature of Discourse to ensure visitors to the forum have engaged with the community a bit (built up a level of trust) before they start PM’ing folks.

We need to introduce you to my good friend Docker. :wink: The days of installing and managing different versions of software natively are behind us. With Docker installed, a command for installing MySQL 5.6 and running on your machine (regardless of OS) is:

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:5.6

Could you take a look at om.rs/gettingstarted and see if there are some ways it could be improved to overcome the challenges you’ve identified? Would a link to om.rs/glossary or specific edits/updates to the om.rs/devmanual help?

This type of detail is important. The uptime for most of our infrastructure is now 99.99%. The demo server is 88.69%, but that is only checking that the web page responds and may not reliably reflect actual uptime. I’ve just modified our uptime check to simulate a login via the REST API, so it should more accurately reflect uptime. Perhaps we could have a virtual hackathon to identify & address specific issues that are reducing the demo server’s reliability.

Also, the Android client could be adapted to alter it’s error message when the server URL contains “demo.openmrs.org” to help the user (e.g., a tip like “Check demo.openmrs.org and/or status.openmrs.org and make sure the demo site is running.”)

It might be time to retire or at least stop advertising Telegram. I think most community chat is happening in IRC or Slack these days. The challenge with chat clients is there’s always the shiny new one and they all have pros & cons. We need matrix.org to take over the world and connect all chat clients so we don’t have to choose. :slightly_smiling_face:

This sounds like great grist for the documentation teams to take on.

This might be useful for new GSoC students as well. /cc @suthagar23

Bless you for your willingness to share constructively. It’s a beautiful wall you’ve built. I hope @jennifer gets a chance to admire your wall too. :slightly_smiling_face:

7 Likes

Siddharth what an awesome and courageous email, Burke what a welcoming response, thank you.

I am brand new to the community. I am >40 years into my career as an engineering manager, I do some coding but typically not at a production level. I know some tech and project management stuff.

I would concur with Siddharth’s assessment, I have had a difficult time getting OpenMRS running so that I can learn more about it and explore its suitability for my work that I am much more passionate about than learning java :).

As I said I have been here only a week and I’d look to not type a lot here until I can be helpful but I don’t want to pass by this discussion.

Question One - and I am not intending to be flip - does the community want new developers? While the answer may seem obvious - perhaps the culture is one in which y’all are more productive with a relatively static team, culture, toolset, and design. Scaling the team means the team needs to invest in welcoming and supporting new members both socially and technically, I have noticed that sw teams in industry are often not good at it.

OK time for constructive suggestion, perhaps as I become more confident I can build/update a section of the wiki to support newbies and in particular getting their own instance of OpenMRS up and running as easily as possible? Siddharth maybe we can work on it together.

I’d like to focus almost exclusively on cloud (I am using GCP and am familiar with AWS) and it’d be nice to support some more modern tools on the front end. No X11 you guys it’s 2020, in all seriousness there is some old stuff here that we really ought to not burden developers with who are early in their careers. As I said I will look to be constructive :slight_smile:.

Hey and if there is a Slack please consider inviting us?

I very much look forward to contributing here and working with all of you.

-Carty

2 Likes

For what it’s worth I suspect my problem getting OpenMRS running is 100% related to old sw versions for the stack. In a world that has become very complex in terms of target platforms that makes for very complex and brittle configs. Asking the community to run very old releases of tools is risky.

Validating new versions of tools and platforms is low viz, hard work, I’d recommend that you (we? :slight_smile:) have a specific initiative to bring the toolset up to date. If any of the components turn out to be difficult to update that’d a great reason to sooner rather than later migrate away from them.

Thanks @burke for your response. I have gone through all the links you have given and they pretty much explain most of the setup especially the How-To Setup And Use Your IDE is explained beautifully with screenshots attached. But the Step by Step Installation for Developers doesn’t cover many important parts like the links for specific versions of Java, MySQL and Maven. Even here the links given for Java installation don’t seem to work at least they didn’t worked for me.

Adding this to Step by Step Installation for Developers could be a good option but I think beginners will face difficulties using Docker. I’ll suggest that we edit the Step by Step Installation for Developers and add links and installation screenshots for all the tools OpenMRS instance needs to set it up.

I guess most of the GSoC’20 students have recently faced these getting started problems and have solved those with some hacks and tricks. It would be great if they and anyone who finds this interesting could join in share their thoughts and make the getting started page better.

cc @ayesh @aman @iamsr @rishabh997 @achilep @alinmihaila99 @varung31 @jayasanka

3 Likes

This is one thing that can be done and also attach the link to Step by step guide. I too had difficulties installing core application in the beginning and had to wait hours for demo server to start, thinking there was some error from my side… cc: @f4ww4z

1 Like

Hey @sidvaish97! It’s a great post indeed.

I guess people might face some issues installing MySQL 5.6 on newer releases of Ubuntu (at least I did). Thus, I’d share the steps I followed for the same.

  • Download the MySQL Community Server DEB Bundle from here. Select 5.6.* as Product Version, Debian Linux as Operating System and then download the 32-bit or 64-bit DEB Bundle as per the system’s requirement.
    It basically contains individual packages like mysql-common, mysql-community-client, mysql-client, mysql-community-server, etc.
  • Install the packages individually using dpkg -i <package-name>.deb.
  • Note that it will be required to go in a certain order for installing the packages, which could be found out by trial-and-error (see the error messages if any for the other package’s requirement).
  • In case there is some error for missing dependencies, run sudo apt-get install -f.

Just to share, I use Ubuntu 20.04 and I went in the following order:

sudo dpkg -i mysql-common_5.6.47-1debian9_amd64.deb 
sudo dpkg -i mysql-community-client_5.6.47-1debian9_amd64.deb 
sudo dpkg -i mysql-client_5.6.47-1debian9_amd64.deb 
sudo dpkg -i mysql-community-server_5.6.47-1debian9_amd64.deb

After which, I got some errors (maybe because of the order I followed). I again did:

sudo dpkg -i mysql-common_5.6.47-1debian9_amd64.deb
sudo dpkg -i mysql-community-client_5.6.47-1debian9_amd64.deb

After this, I got some errors about missing dependencies, so I ran sudo apt-get install -f.

That’s it, MySQL 5.6 successfully got installed!

3 Likes

It’s a good question. At its heart, the OpenMRS Community is a consortium of implementing organizations trying to save the world by applying technology toward tackling difficult health problems in resource-constrained environments and realizing that we can walk farther together. We’ve spent over 15 years with varying levels of success along the journey. But, since we first joined GSoC in 2007 and transformed from a group of teams working together online into an open source project, we’ve reaped incredible rewards from investing in GSoC and similar ventures – not just in code, but primarily from the amazing people who’ve joined & strengthened the community over the years. That said, everybody is busy trying to address very difficult real world problems (heath informatics is fun, but can be hard work) and that often leaves our shared garden untended. But that doesn’t mean we can’t keep trying to assess what’s working & what’s not within the community and trying to improve. As long as we all realize we’re in this together, there’s nothing we can’t do. :slightly_smiling_face:

So, the short answer is: Yes, we want new developers. That’s in part why we have a Getting Started page, a Dev Manual, created an SDK, participate in GSoC + Googlel Code-In + GSoD each year, try desperately to protect some time of expert devs (like the amazing @dkayiwa) to tend to our garden, and use precious resources of our community’s supporting OpenMRS Inc to hire @jennifer as a Director of Community and (soon) at technical PM.

There’s a lot of change in the works, including legacy code that needs replacing, and in the midst of that being done, it makes it even harder for those new the community to get up to speed.

While there’s still a lot of work ahead to make our platform horizontally scalable, there’s a lot of good work that’s been going on to shed some of our legacy code (see this discussion). That include, for example, support for Java 14, latest versions of Spring & Hibernate libraries, support for Postgres, and an update to FHIR R4. Our goal is to get this Platform released by September/October.

Also, it helps to understand that there are hundreds of implementations and some country-level implementations of OpenMRS with thousands of servers often in resource-constrained environments with intermittent connectivity (take a look at the OpenMRS Atlas and turn fading off under the View menu to see the tip of this iceberg). Many of those implementations don’t have the luxury or resources to run from the cloud or perform regular upgrades, so we have to be mindful of backwards compatibility and providing a realistic migration path for existing implementations.

If you visit slack.openmrs.org or click on the Slack in the banner of Talk’s home page, it should help you self-invite yourself to Slack. Thanks to this nudge, I’ve updated the Getting Started page to promote IRC & Slack. :slightly_smiling_face:

Please feel empowered to edit the wiki to update outdated instructions or otherwise enhance the experience for the people who will follow you. You might also find the folks participating soon-to-start GSoD willing to help with heavier documentation lifts. /cc @gracebish

Thanks for sharing, @iamsr. Could you make sure these tips make it into an appropriate place in our wiki? :slightly_smiling_face:

My 2-step recipe for this is:

  1. Install Docker
  2. docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:5.6

With the nice side effect that I can bring up any version of MySQL, even run them in parallel on different ports, install postgres, and take advantage of similar features of the OpenMRS SDK. Want to serve up files in the current directory via nginx without nginx installed on your machine? docker run --rm -v $PWD:/usr/share/nginx/html:ro -p 80:80 nginx. Done. Then again, I love life with Docker. :stuck_out_tongue:

5 Likes

@burke Sure, will do that! (EDIT: Done. Added a section here.)

Nd will try out Docker too. :smile:

1 Like

@burke

That said, everybody is busy trying to address very difficult real world problems (heath informatics is fun, but can be hard work) and that often leaves our shared garden untended. But that doesn’t mean we can’t keep trying to assess what’s working & what’s not within the community and trying to improve. As long as we all realize we’re in this together, there’s nothing we can’t do. :slightly_smiling_face:

This is great news because I am committed to addressing real world problems in health informatics, clearly I have come to the right place. ItsMyHealth is a not for profit, we’re going to change the way providers and patients use data both here in the US and in the developing world.

The OpenMRS data model is a trusted asset that I need to understand and build upon in order to be successful, my interest is not casual.

@burke

So, the short answer is: Yes, we want new developers. That’s in part why we have a Getting Started page, a Dev Manual, created an SDK, participate in GSoC + Googlel Code-In + GSoD each year, try desperately to protect some time of expert devs (like the amazing @dkayiwa) to tend to our garden, and use precious resources of our community’s supporting OpenMRS Inc to hire @jennifer as a Director of Community and (soon) at technical PM.

Those initiatives are very cool and do demonstrate commitment.

A desire to protect expert devs is understandable but not a reason for the community to be subjected to out of date and inaccurate information on e.g. the development wiki. It’s important to remember that the cost of allocating a dev to update the wiki is easy to see, the cost of a new community members walking away because they were intimidated or unsuccessful is much more difficult to see and measure.

I am confident talking this directly about the status of the wiki because I want y’all to hold me accountable for fixing it.

@burke

Also, it helps to understand that there are hundreds of implementations and some country-level implementations of OpenMRS with thousands of servers often in resource-constrained environments with intermittent connectivity (take a look at the OpenMRS Atlas and turn fading off under the View menu to see the tip of this iceberg). Many of those implementations don’t have the luxury or resources to run from the cloud or perform regular upgrades, so we have to be mindful of backwards compatibility and providing a realistic migration path for existing implementations.

Sure, gotcha. If I did not need to accommodate such resource constrained environments in the developing world I could use my own data model :slight_smile: what y’all are doing is uniquely valuable.

Cloud is a critical enabler for the community whether any deployment is or can be cloud-based.This is a rich topic that I’ll pursue if and when I develop some credibility here. It looks like y’all supported an AWS AMI with some previous releases, It’d be super to have that for the standalone reference app, an instance template at GCP as well. If you don’t talk me out of it I’ll try to contribute here as well.

@burke you mention docker, containers clearly play a role in helping manage configs but we need a solution for people coming in cold.

@burke thank you for engaging me so sincerely, that’s what a welcoming community looks like.

1 Like

This sounds like a great enhancement @burke , thanks for that. We can improve the error message displayed when the client cannot connect to one of OpenMRS’s demo servers (right now it’s only a Cannot connect to <hostname> toast message). We will work on it soon.

2 Likes

@sidvaish97 and @carty thanks for sharing your experiences and putting the spotlight on some specific areas where we can make some changes that can make a real difference in a community member’s experience.

Question One - and I am not intending to be flip - does the community want new developers? While the answer may seem obvious - perhaps the culture is one in which y’all are more productive with a relatively static team, culture, toolset, and design. Scaling the team means the team needs to invest in welcoming and supporting new members both socially and technically, I have noticed that sw teams in industry are often not good at it.

To echo @burke’s short answer, yes, we do want new developers. And we’d like to help those who start contributing through GSoC and GCI opportunities to continue contributing to the community.

We’re lucky to have some wonderful guides that welcome people to the community on our Welcome! Please Introduce Yourself thread and at least try to direct them to the right starting place. That said, we know that there are other things that we can do to not only onboard new members and help them get started, but to help everyone discover where and how they can contribute to the community in a way that is in line with their passions and interests.

And I think you raise an interesting point that sw teams are not always very good at welcoming and supporting new members. Sometimes even our guides need guidance, so I can’t help but think that the time is right for the Developing a Set of Volunteer Guides project. It’s true it’s a proposed Google Season of Docs project - and that doesn’t mean we can’t start it now, especially if there are a couple of people willing to work with me and the Documentation Team on this project.

1 Like

Hi @jennifer!

I can tell by reading through the wiki how much really important work has been done in the core, and that is made super accessible by the reference UI and API docs, it’s really very exciting.

The team has been around for a while, there is idiosyncratic technical knowledge they share that is incredibly valuable to newcomers. One can see in the wiki several “old” newcomers who tried to fix it. Over time though the fixes overlap and become stale making it more difficult than it needs to be for newcomers.

The clear response is not for me to show up and whine about it, it’s for me to fix it, these are straightforward (if laborious) technical issues. To do that I need to learn enough to be constructive, the team has already been awesome in supporting me, I am so excited to be here and look forward to working with you Jennifer.

1 Like

I have made some improvements in the Step by Step Installation for Developers.

Thanks @iamsr for helping with the steps to install MySQL 5.6.

I’ll also try to add Steps to install Java 1.8 and Docker commands for both MySQL and Java.

If someone is using a Windows or Mac machine it’ll be nice if they could share the Steps to install MySQL and Java.

2 Likes

Thanks for these steps will make some review on them

That’s nice @sidvaish97!

Though I’d also added the MySql thing here.

2 Likes

@sidvaish97 @iamsr @f4ww4z @rishabh997 @burke @carty @jennifer @herbert24

Hello everyone, I am a technical writer and a GSoD 2020 applicant. I am trying to explore if it is worthwhile having a centralized getting started documentation specifically for new developers who have no OpenMRS experience. The goals are to provide a guide for new comers to

  1. have a general idea what openmrs is and what are the major components
  2. set up the environment (linux and windows)
  3. set up openmrs core and essential modules (such as REST API, UI etc), SDK
  4. produce hello world type of results (I am stuck at this step myself)
  5. link to other useful resources for beginners

Thank you all for providing some insight into the pain points and possible solutions for new comers.
I will be writing up my project proposal based on your discussions and my own ideas in the coming week and will post it here to gather your feedback. Meanwhile, if you have more ideas about how to make the life of the new comers easier, I’d be happy to include in my project proposal.

Thanks again!

1 Like

My question is: Beginners such GSoC students will participate in different projects, they probably will have different needs to get started. What are the common denominator for their needs? Or what is the most common needs?

Please help us advance the resources we have (wiki content starting at om.rs/gettingstarted and our om.rs/devmanual) or transition them to something better/newer. And any efforts that help devs & future technical documenters feel empowered and understand how to contribute to and incrementally improve our existing documentation is worth at least 10x the equivalent documentation. :slight_smile:

1 Like

Almost all the information are in those two files. But they do need reorgnization and update. I think it is a good project. Thanks! :slightly_smiling_face: