Showing posts with label dhis. Show all posts
Showing posts with label dhis. Show all posts

Thursday, March 21, 2013

Shout or Leave? - Open-source community governance

I’ve often thought that open-source contributions are towards “social good”, but I also realize it is a fairly naïve way to look at the open-source world. I was listening to a friend’s frustration of getting people to work together. She is a social worker and now in a political party is trying to make people work together to do “social good”. Participating closely in 3 fairly large open-source communities and following a few others closely, she asked me how I saw it works in the world of open-source. That’s where I thought it might be good to post my thoughts.

Open-source in its literal definition is just putting your code out. Doesn’t mean anything more. Thoughequality-vs-justice we have associated a few implicit connotations with the concept. Particularly, that there is an open, bazaar-like mode of working, which can be thought of as similar to the concept of democracy. But as we can see from the political conditions in different parts of the world, democracy isn’t one single thing. It is indeed a group of people working together towards a common goal, ideally each person having an equal weight of vote. But as the world is not idealistic, the more pragmatic meritocracy is acceptable. The open-source world looks at meritocracy through a number of aspects like code contributions, advocacy, documentations etc. with the general focus being towards getting work done. Yet, most research and discussion around open-source misses out on the aspect of power, tradition and culture of the communities that political scientists and sociologists have talked about for a long time. Open-source communities like other human networks have a vision of meritocracy and sometimes evangelize this vision, but often find it hard to practice.

Some open-source communities do have a BDFL, while others generally play by the resources rule. Resources include money, people, ideas and the group that possess these are generally considered more powerful. Some companies because of their “cool” products automatically make “cool” suggestions to the community and their work is “cooler” than the average contributor’s work. Because a developer works for a “cool” company, does not necessarily mean that every developer from that company has better skills than your average contributor. Some open-source communities value context-of-use, while others value “de-contextualization”. Many researchers have highlighted that domain-specific open-source software communities are better suited by being contextual. While, this challenge of being contextual and translating the contextual knowledge to a de-contextual developer, is also well studied, it is really not well enacted in domain-specific open-source community governance. Governance relates to decisions that define expectations, grant power, or verify performance. It consists of either a separate process or part of decision-making or leadership processes. Thus, when the next time you read about OSS 2.0, realize that governance plays a vital role in the challenge of domain-specific open-source communities.

Open-source communities are typically expected to work around an open-source license, some code of conduct pages and roles of developers. These alone, as we see from functioning democracies is fairly inadequate – judiciary, legislature, and executive. Media is often considered the 4th pillar of democracy. A vehicle that allows voices to reflect on how the other 3-pillars are doing. Good governance often comes from the fact that reflective voices are heard, understood and acted upon.

Yet, power plays an important role in sustainability or growth of a community. As an independent contributor (just as a citizen in democracy), one can either look at the power play, raise voice so that others see it or get fed up and leave.

Friday, September 28, 2012

Insourcing for Development – A Networks of Action Approach to GSD

When presenting “The Research Agenda for IT impact sourcing”, Heeks places Ethical outsourcing and Social outsourcing within the scope of what can be broadly referred as the use of outsourcing for development. In the BoP (Business Operation Process) outsourcing continuum he differentiates these from Exploitative Outsourcing and Commercial Outsourcing. You can read about these terms in depth on his blogs. The focus of Social Outsourcing is on contracting out goods and services into social enterprises. In their paper, Heeks & Arun (2010) highlight that social outsourcing has the potential to deliver development benefits to marginalized groups.

In the IT impact sourcing model the idea is to create sustainable jobs in communities where opportunities are low and can act as income improvements. While this is a useful and more common way to look at developmental impacts of outsourcing, there is another way to use IT for Development. And that is through the view of offshore insourcing.

Global Software Development (GSD) is a fairly common practice in large software projects. As an arbitrage in globalized markets, it is more common practice to contracting with a wholly owned subsidiary located in another country. This is offshore insourcing. While insourcing in itself might be offshore or in-country and there has been a recent push at GM towards insourcing, offshore insourcing has many advantages that are seldom described in research. This is what I’d like to add to the research agenda for IT impact sourcing.

Titlestad, Staring and Braa (2009) highlight how the design of health information in the global south has been co-ordinated in a GSD fashion. The project’s core development on what is referred to as global release happens at the Univ of Oslo, Norway, but the requirements for this comes from different local teams based in the “global south”, as can be summarized from their paper below:

GSD

Since this is an open-source project (DHIS2), the idea of wholly-owned subsidiary might be unconventional to think about, but being part of the same global research network (HISP), each of the local nodes actually act similar to what would happen in a large global software corporation. Thus, the local software requirements, design and use happens in different countries in the “global south”, but most of the global/generic software development happens in Norway. This type of offshore insourcing is done to keep “generativity” (Gizaw, 2013) of the software intact, such that it can be “ready-for-customization” and be “flexible”, which does not have the features that are specific to a country implementation. This allows new implementers or new country to use DHIS2 without any costs to software development, although only customizations to the context need to be done. Even then, the generic features are available at a much lower cost (following the principles of libre software) for the new implementations than it would, if they were to develop the features from scratch.

How the GSD model has contributed to developmental impacts in many countries in “global south” has been discussed through many research articles. Staring & Titlestad (2008) describe the global software development and commons-based peer production of DHIS2. Through practical examples of the project they discuss the software development practices that are aimed at improving public health sector in the south. Many other researchers in the HISP network over the years have shown the developmental impacts resulting from the project and its use in developing countries. This action-research approach of the HISP network has been referred to as “Networks of Action”, where the method of action research has been shown to have sustainable developmental impact in the “global south”. Combining these concepts of Insourcing for the purpose of development using the Networks of Action approach is what should become part of the IT impact sourcing research agenda.

This blog post is just to introduce the idea that instead of focusing on outsourcing alone, “IT impact sourcing” can also cover insourcing and development through insourcing. Much more detailed analysis and discussion on this will be part of an upcoming research paper.

Tuesday, November 16, 2010

Troubleshooting smslib-based applications (DHIS Mobile, SCDRT, InventMobi, StocksTracker)

While I’ve been troubleshooting SMS Applications (based on smslib, Gnokii, Kannel) for over 3 yrs, it is excruciatingly painful to tell people the basics of the troubleshooting again and again. There have been numerous small docs, readme files, emails that have repeated the same things again and again. To people who have gone through with the implementation and fixed problems, I’ve repeatedly requested to document these at some place (…infact as part of their job profiles), but none have sadly been able to produce anything useful. So, here is an attempt to make the troubleshooting process a little more easier for someone who is stuck. There is always websearch that will finally give you the answer to the troubleshooting process, but this is just a reminder to myself where to look at.

    0.) Archive the logs and send it... as basic as it sounds, ALWAYS look at the log file
  1. Check the application/library version – report this as part of any question you are asking
  2. Check the Native Library version and the Java Library version. These should ideally match or should have the same type. i.e if you are using RXTXComm (this is bundled with dhis-web-mobile module), then you should have rxtxSerial.so (Linux) or rxtxSerial.dll (Windows). If using the older version, check the comm.jar and the required dlls is at the right location.
  3. Check the compatibility of the modem (Kannel) and (smslib). If not listed, check if it supports common standard AT command and may just work
  4. If you are using SMSLib for Java on Linux with the RxTx, you can have a no response exception or gnu.io.NoSuchPortException, as if no modem is actually connected to your computer – create a simlink to the dev/ttyS20 and also do start your application (for DHIS this is catalina.sh) with the –Dsmslib.serial.polling parameter as given in this bug filing.
  5. Check if you have the correct port number in the configuration. For Windows, look at the device manager and the modem. Put the COM10 as the port (COM is needed for DHIS, while not for SMSListener), while for Linux add the /dev/tty<whatever> (/dev/ttyUSB0). For linux, try running the “wvdialconf /etc/wvdial.conf” (without quotes) or scanModem script. This will give the modem port
  6. Check the SIM memory location and add it to the configuration file. This is complex, but a Google search on your modem should help. If you don’t find anything obvious leaving it blank should likely work for your modem
  7. If you repeatedly see Framing Errors, it is primarily because the baud-rate mismatch between what you have set and what your modem supports. Running wvdialconf as earlier may give you good indication of what baud-rates are supported and best for your modem. If its windows, then setting to 56000 should be safe enough.
  8. Some modems supports a specialized AT command set. These are init commands and activation AT commands. You should change the manufacturer and model string. If you know the manufacturer, then it is always good to put the exact manufacturer name in that string.

Saturday, August 7, 2010

Tabbed Interface to OpenMRS Global Properties

I’ve always hated to scroll through long lists when trying to find the thing I’m looking for. Computer interfaces which are designed as long list and give you a hard time to look through all of the things without a filter is definitely bad design. But even with a text field filter, long lists take a lot of time to load... The two applications that I’m working with these days, OpenMRS and DHIS2, both have these long lists that in my opinion are a pain to use.

The DHIS2 uses lists for data elements, indicators, users and these are not divided into pages. There is a text filter, but the time it takes to load the page when the list is long is excruciating. One of the recent examples, where we had over 5000 users in DHIS2 Punjab mobile application, it was excruciatingly slow to load that list of users. And then finding through that list to change anything is also quite slow and painful.

Similarly in OpenMRS, one of the things I often use for our modules is the global properties. Modules can use the global properties infrastructure to store options and it is a quick solution when you want to store some settings that can be configured by the user for your module. But as the number of modules or the number of options in a module increases, it becomes a pain to search the exact option from that long list of options. It also does not have a text filter, but you can always use the browser search to reach what you are looking for and text filters, don’t really solve much. Infact, may be the text filter in your application does not have a shortcut, while Ctrl+F would quickly give you a browser search text field.

Nevertheless, a quick hack by our developer Viet Nguyen (the JavaScript Ninja), was an OpenMRS module called moduleoptions. This is his first module, just to understand the OpenMRS framework and to me is quite a useful thing. It divides the global properties in tabs and makes the properties more manageable in my opinion. It provides better management to the long list of global properties and looks more convenient to use. It was developed in a few hours time and is definitely something that I would want to see as default when managing global properties. Below is a screenshot of how the global properties looks now:

module-options-screenshot

Monday, June 1, 2009

The Mobile Phone Tool for Indian HMIS

As you have already found out, I haven’t been blogging lately because of the travel and development work I have been doing for HISP India. One of the new developments that I have been working over the last 3 months is a mobile phone application for routine health data collection, obscurely called “Mobile-SCDRT”. Its a Java ME MIDP that runs on all those commodity mobile phones and is used by a community health Sub-Center for Data Reporting and Transmission (SCDRT). Now you know where that obscure acronym came from and I am unsure who gave it that “wanna-be” name.

That apart, the mobile application is being deployed part of a pilot in the 5 states of Himachal Pradesh, Kerala, Rajasthan, Nagaland and Gujarat. As part of the pilot 200 health workers from the above states receive a Nokia 3110c mobile phone with the application installed and use the application to report the routine health-related data that is collected by the Government of India as part of Health Management Information System (HMIS).

The following is an architectural overview of how the application works for those of you interested in the technical details:

clip_image002

So, DHIS2 is where the data gets added after being sent from the mobile phone and in DHIS2 you can do all the analysis and “use of data” for health program decisions. There are other nitty-gritty details of the application and lots of new learnings for me, but I’ll leave that to another blog entry for another day.

We have started the pilot in 2 states: Himachal Pradesh and Kerala. Its been running for close to a month now in these 2 states and from the looks of it, people are happy and excited to use it. Recalling an incident from the launch in Kerala:- When just about 15 minutes of looking into the application, a JPHN (Junior Public Health Nurse - as health workers are called in Kerala) could explain the whole application, its use and reporting procedure to her colleagues better than most of us could. It was a wonderful and humbling experience for us to see that people were so much wanting to use the application and learnt it so quickly. It was satisfying to see that it was helping the health worker to make her reporting process more efficient. What was more rewarding for her, as I understand now, was the job perk that she thought she got in the mobile phone. The mobile phone was not just a tool for reporting, but also something that she would use for calls and show it to her kids and family. Few JPHNs were instantly taking photographs of our launch using the mobile phones we provided. I hope I can have many such satisfying moments through my work in health informatics.

But not everything was perfect in all this. I for one realized, that logistics required for a project of this magnitude is not an easy job. Having a team of people in the state and within us at Delhi is a challenge. Discussions of inefficiencies and incapability of the team is a burden in itself to manage. Not everyone may have the goal to change the world and some might even be in it for the money. As for the logistics, we learnt early in the pilot at Himachal Pradesh that a “Step-by-Step” reference manual on using the application was a necessity for the health worker which she can refer to, when she’s at her home and using the application to report. Then there was the purchase of state-specific SIM cards and allocating mobile phone numbers to each health-worker and her reporting office. All this requires lots of planning and managing the logistics and repeated changing of plans has been a tough one for me.

The technical preparation of installing the application, creating the database and installing the server at the primary health centers, block hospitals and district health offices have also been somewhat of a mismanagement. Its been a complex process involving people with different work cultures and behaviors. But in the end the 2 pilots have been successful because its been an opportunity for health workers to report data more efficiently. Final results of the pilot await us, but the start has been great!

Saturday, March 14, 2009

Working for HISP India on Health Informatics

I haven't been blogging for quite a while now, but the reason is partly because I'm moving into a new job and also not getting enough motivation to blog. But I thought it's a good time that I start to blogging again and what better topic that introducing my new job.

I have joined HISP India (Health Information System Programme) as a Director of Research and Development. I will be working with the National Health Systems Resource Center (NHSRC), a part of the Ministry of Health & Family Welfare of India. Our primary job at the moment is Health Management Information System (HMIS) for the National Rural Health Mission (NRHM). I know it sounds like a lot of abbreviations, but thats the thing about government organizations I guess!!

My primary test starts with a pilot test of a mobile application for data entry for DHIS 2. I will in the next few weeks talk about DHIS 2, but also talk about other research areas that I will be working on and hopefully get ideas from you guys on how I could improve the health of people in rural India through technology. Lots more to talk about, but may be more in the next few weeks on all technology