Non-free licensing in bundled modules

Agreed. I personally feel bundling proprietary licensed software like Highcharts just because it’s “cool” and familiar to some people, breaks the implicit promises we have made to our users and the world that everyone, including for-profit organizations and governments, should be able to use OpenMRS software.


I choose to go with the first option: “Don’t do anything now, and deal with this later”, thanks everyone

1 Like

Just a quick update on this based on conversations at OSCON last week:

In some discussions about this issue, some folks were concerned that adoption of non-free and/or non-open source components with license restrictions such as those for Highcharts mentioned above, could violate principles 5 & 6 of the Open Source Definition. Specifically, our software (if it bundled something licensed like Highcharts) could “discriminate against [a] person or group of persons” and/or “restrict [someone] from making use of the program in a specific field of endeavor”. That is to say, if bundled with OpenMRS, it would mean OpenMRS was no longer “open source” software as defined.

Just a thought and a reminder should this be revisited in the future.


I wish we could find a free charting library that was half as good as Highcharts. Since non-commercial use is free, anyone in a non-profit or using it non-commercially would have no issue. I don’t really care if people aiming to use the Chart Search module commercially have to worry about licensing fees, but the fact that governments might be restricted from using it (e.g., for national clinics) is a bummer and probably the best reason to look for an alternative charting solution.


I do wonder if we could get the Highcharts people to give OpenMRS some kind of a special license to be able to bundle it with the reference application…I am sure this is possible…There has to be a middle ground between “we can’t use this” and “this can’t happen”

We were discussing this at length in last year’s GSoC in one of the sessions. Probably one of those were Google shows-off new technology and many developers including me said that Highcharts doesn’t have an real-FOSS alternative. Many libraries based on D3 (MetricsGraphics, NVD3, C3, n3-charts, Rickshaw) are trying to be it, but I agree with @burke that they aren’t as good as Highcharts yet, but they are rapidly improving. We probably need to give those charting libraries a little more time for maturity… is what we are trying to exhaustively use now in the chartsearch module, however it seems to contain some bugs in it’s zooming and panning features!

are we still using HighCharts? do we have the appropriate language so that people are aware of this- to ensure that we don’t violate any licensure issues? terry

The Reference Application does not include highcharts, and it never has. (This thread was about potentially adding highcharts to a bundled module, but it never happened, largely because of the conversation on this thread.) So there is no need to change any language on our downloads pages.

Searching through github I see three modules that do include highcharts:

We should give a way that any modules we distribute through the module repository need to indicate any licensing that differs from MPL. (At present there is no technical way to do this, so maybe we would just edit the description on the module repo?)

FYI @ssmusoke I notice that you are actively touching the dataintegrity module, but you should be aware that (in my not-a-lawyer reading) it is not okay to use this module in a MOH-run health facility unless you have paid for a highcharts license, or else gotten an OEM one (and KenyaEMR was able to get this).

Given the evolution of D3, any module using Highcharts could probably be refactored to use D3 instead.

@k_joseph, have you considered D3? Looking through their examples, things like EventDrops look pretty amazing (e.g., intuitively allowing scrolling or gestures to control zooming).

Last I checked, D3 is incredibly powerful, but also too low-level for most users. I would advise choosing some higher-level library built on top of it. (I mentioned some in an earlier message in this thread.)

1 Like

@darius Thank you for pointing that out, will review our usage of the module for now, will probably exclude it for the time being :cold_sweat:

@ssmusoke as far as i remember, i do not think you are using the charts component of this module in any of the facilities. So you could fork and remove the charts functionality together with the highcharts library. :smile:

@dkayiwa I think I will do just that - do we then need to call it data-integrity-lite?

@ssmusoke since you are the active user and maintainer, the choice is yours :smile:

1 Like

Do we know of anyone actively using the data integrity module and depending on Highcharts functionality? If there are none, then you can just remove Highcharts from the module. If there is someone using the module and it’s charting features, perhaps they’d be interested in helping convert from Highcharts to something without licensing restrictions.

Since the thread was awakened again, I think I should mention a recent experience I had with JS charting libraries. I had a student demonstrate to me a mobile app’s charting written using Vega. Pretty neat stuff with how components of charts can be bundled together. Immense flexibility and does nearly all the good stuff that highcharts does… So anyone looking at replacing highcharts in those modules, I recommend looking at Vega.

One of the most important graphs for clinical data is a zoomable time series that can show normal ranges like Highchart’s Time series or something like D3’s Event Drops. Is there an example of an interactive, zoomable time series chart that could show normal ranges in Vega?

Just re-sharing something I said earlier. (I have no direct experience with these libraries, but I spent some time searching at that point and reading opinions.)

1 Like

Vega is great for simplicity that students with no prior background can use… I am not sure the exact of what you point to is possible in Vega. At least I haven’t seen a ready demo. There is this - Another powerful, but complex one the student had tried was Dygraphs. That has a demo of I think what you need -