Thursday, July 26, 2007

OpenMRS Visit #2

Well, today I made my second visit to OpenMRS headquarters in Indianapolis. As usual, it was great to see the guys, but also great to be in a professional software development environment. The OpenMRS guys are truly bright individuals, and it's more apparent in person listening to them problem solve and go back and forth with each other trading solutions. While I did get a lot of work done today, there are still a few hangups that I'm trying to iron out. When I do so, I'll have a much improved beta-installer for you all to try out.

Just a little insight into how I work... The beta's I try to get ready for the weekly releases are 1 of maybe up to 3 different installers I'm working on. When I say "different" I mean, they all contain subsets of more advanced functionality that will eventually be part of the final product. I'm currently working on 2 major installers: First, an installer that is ignorant of the environment, but does silent installations of all of the dependencies and configures them silently as well given the data input during the BitRock installer. Second, I'm furthering the development on the dependency checking code and working that into a stripped down installer for testing purposes. Once the dependency checking is "complete" I'll then merge that into the "ignorant" installer, and everything will just mesh due to some logic rules within BitRock that determine what gets executed when, and why. So, while the next update (coming before Sunday) will only be a marginal improvement upon the last (actually, it's a huge improvement), it is only a subset of the work that I've actually completed.

The "delay" with the dependency checking came in that after the last beta was finished, I started programming the dependency checker. Then, yesterday I found out that the mechanism I'd hoped to use to read my dependency checking program's output wasn't going to work, and I had to find a new method. This was also in parallel with having to get some sort of demo ready for my visit today. So, it's been hectic going back and forth between the two installers while always trying to make progress in both areas, but it's really starting to come together. The source code for the dependency checking is essentially complete, and any little things that come up are easily added/modified since it's C++ and I have full control of what I do. As for getting that data into BitRock, I had started experimenting with that yesterday, but ran into some confusing issues. However, after my work today, I have a much better understanding of how to address those issues.

The current updated installer that I'll have out to everyone within the next day or so includes the following upgrades from the previous installer:
  • Multi-Input Dialog Screens - You can now enter all relevant data on one screen instead of 4 or 5
  • Silent installations of all dependency applications - I use command line switches for the JRE installer, and I've bundled zipped versions of MySQL and Tomcat with the installer. They are unpacked into their proper places, and then I use BitRock's file editing abilities to configure their settings files with the proper data (username/password/port/etc...)
  • Setting of needed environment variables - Certain env variables need to be set, such as the path to the JRE, CATALINA_HOME, etc... as well as adding MySQL to the path after it is installed.
  • Demo Data - You now have the option to forgo installation of the demo patient data. This is helpful for people that already have OpenMRS running, and just need to install it on another system.
  • Port Validation - The installer now verifies that it can bind an address to the port numbers you specify for MySQL and Tomcat. If not, it asks you to enter a new port.
  • Improved Error Detection - The installer now correctly enforces illegal empty data (i.e all of the input data during the installation process)
I think that's about it as far as the changelog is concerned. The current hangups both deal with adding MySQL and Tomcat as Windows Services. I got nothing but grief today when I tried to do this, such as error messages that didn't tell me why it failed... This was the main reason I didn't have a demo to show the guys today, and that really bothered me. I wanted to show them what I had done, and I suppose they can still see everything except for it successfully starting the system, but still... very frustrating, for everyone I'm sure. I think the issue may have been linked with the fact that the machine I was using already had MySQL and Tomcat installed as services, but I didn't want to wreck my development machine with a scavenger hunt that may have turned up nothing.

That's all for now, I'll get the update out as soon as possible. I've worked myself thin the past 3 days, even to the point I had to stay home from my other job due to illness, so I've got to step away from it for tonight and put in a LONG weekend of work and get this thing finished as soon as possible. I'll keep everyone updated, thanks.

No comments: