Today’s guest post is some thoughts from the OpenClinic project.
Thoughts of a web developer
A Jorge Drexler song says: “Everyone gives what they receive and then gets what they give, nothing is simpler”. Despite that, when you are on open source, you normally get much more than what you give.
That is happening with me and a project I started more than 10 years ago. I had a few items of unfinished business with it. This article is one of them.
OpenClinic is the project that landed me on the wild web world and the captivating open source development. This closed up my university degree in IT and opened the way to my first full time job position.
Openclinic was a playground (as a learning experience) and testing space for me. And that is the main reason why I mislead the true intention of the application. Instead of searching and attract professionals, within the medical sector, to fully develop the project I concentrate on the technical aspects of the project to obtain a personal framework to be used as a ground base to develop further projects.
It was in 2003 when a quite stable version of the project was up and ready. It would have been a perfect timing for the idea to come to live. It was the right time and I was not able to see it. Now it is too late. There are many other projects as Gnu Health, OpenEMR or OpenClinic GA (yes, they copied the name ;), nothing I could do), already in the market with a good product.
OpenClinic has preserved both its simplicity and little ambition. I tend to believe that is the reason people has kept downloading and using the application during all this time and that, from time to time, people contacted me to show interest. Lately I was receiving too many complaints about installation process though. This was the main reason that I launched, 8 years later, a new version.
OpenClinic followed PHP evolution. When I first looked into the project (in which Emilio Cazcarra had a lot to do) and decided to go web oriented, I did not know all the available technology solutions to choose from. First I discovered Perl and while studying it I found PHP. I became fond of it really soon as in 2002 it was the way to go on web programming and decided to use it as backend language. Although the first version of PHP4 was published in 2000, version 3 was still used as standard both for application and hosting programming.
I had to choose and decided to go for the newer one. As I had to learn the language from scratch, it made sense to study the latest version. I thought that, in the time I needed to develop the application, PHP4 would become very stable. I was right!
I released OpenClinic 0.7 mid 2004 (forever beta) and finished its evolution. As mentioned above, I did not see how to give the application new features and kept focused on technical aspects. Maybe so, although I continued with development, I was not seen reasons to publish new versions (contributed nothing new in terms of functionality for users).
That same year, 2004, PHP5 came to life. Unlike with PHP3 to PHP4 change, which was quickly adopted by major projects that used PHP and hosting servers, switching to PHP5 was traumatic and torturous for everyone. At a personal level, I did not use it at all till I met Zend Framework, around 2007, three whole years after its first release!
Taking it into perspective, OpenClinic had two big issues to be addressed:
- Not to be based in PHP5 (last version released).
- Not be programmed within a development framework. This well may be the biggest one…
Adapt the code to PHP5 has not been that hard (talking about syntax here). The challenge came from using PHP4 and PHP5 at the same time in a single web environment.
The latter was a terrible conceptual mistake. I wanted OpenClinic to become a framework in itself. In that moment in time (Far West PHP), when PHP received bad name due to the lack of formal structure, each developer used to create their own framework to maintain chaos under control, especially in big projects. I am not surprise I was misled, (trying to reinvent the wheel) but I did not see it at that time and it went against the project itself and led it to its end. If it had been based in a framework, amongst other positive matters, it could have been easier for other people to contribute by adding new features.
Not everything has been negative thought. In fact, the project, as I started stating, has given me a lot more than what I put on it. This all has been possible thanks to open source:
- PHP as backend programming language,
- HTML as markup language,
- CSS for design tie,
- MySQL as database server (although its status has changed over time…),
- gettext for translations,
- and Docbook for documentation.
I had only to invest my own time to learn all these technologies. They all are available as open source and, most of them, are free of charge. Benefits obtained from them are still both constant and consistent. Moreover, there have been people that could contribute by generating translations and CSS themes for the application.
Despite of the above, reviews have been really good. OpenClinic has been downloaded around 20000 times and, from time to time, I found an Internet domain with the program running. I even got letters form No Governmental Associations working in developing countries that are using the application. Especially the latter is really rewarding, at the end of the day, I develop software for people to use.
In a nutshell
Today not do things the way I did, but I can say that now because I have done it this way. One learns or dies, there is no middle.
If I were to re-do the application (it would not be the first time…):
- I would use a development framework,
- I would use a public code repository from the very first beginning,
- completely freeing the database engine of application code,
- I would invite people to contribute, even handing over the project leadershing and control to others.
In the meantime, I am involved in other open source projects. One of them, migasfree, having still many things to be improved, has started to put my conclusions in practice.