A more robust version of ODK Client that works with the OXD platform is now ready

95 views
Skip to first unread message

Shashank Garg

unread,
Feb 20, 2014, 10:15:43 AM2/20/14
to Jørn Klungsøyr, openxd...@googlegroups.com, Shashank Garg
Dear All,

We have felt the need for a robust Android client for the OXD platform in many recent scenarios. While we have been using for quite some time our own mCollect on Android which runs on HTML5 browsers, we have felt a lack of performance and some limitations.

While mforms is a good client, the J2ME platform seems to be a dying platform and it is difficult to expend energy on that. Further, the prices of smart-phones keep dropping steadily and makes it difficult to ignore Android.

So a few weeks back we decided to explore the option of using ODK-Collect on the Android smart-phones and tablets within the OXD Server framework.

We started with the ODK-to-OXD Bridge in the OXD repo and found that the Bridge wasn't fully working and wasn't really usable because some basic functionality was broken. However, we decided to pursue this further since we wanted a serious alternative to mForms. We have now fixed the major problems in the ODK to OXD link and we have a version of ODK which works very well with the OXD Server. The client application is very feature-rich and yet easy to use.

We will take some time to release the code back to the developer repository because we are waiting for further independent field testing on some live scenarios. If someone has an urgent need, please feel free to contact Raghu who is working on this project.

Cheers!

Shashank@Handsrel
_____________________________________________________________
Dr. Shashank Garg, PhD
CEO
Handheld Solutions & Research Labs [HANDSREL]
36, 20th Main 1st Cross, 1st Stage BTM Layout, Bangalore - 560068 [India]
Email: shasha...@handsrel.com, garg.s...@gmail.com
URL: http://handsrel.com/

2007-Fellow, Digital Vision Program, Stanford University
______________________________________________________________

Daniel Kayiwa

unread,
Feb 20, 2014, 10:22:30 AM2/20/14
to oxd dev, Jørn Klungsøyr, Shashank Garg
Shashank,

This is amazing work and with perfect timing!!!
Yesterday i was talking to some one whose company wanted to use OXD but on Android.
They wanted ability for ODK to connect to OXD and i had no answers for that basing on the current code base.
But now here you come!!! :)


--
You received this message because you are subscribed to the Google Groups "openXdata Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openxdata-de...@googlegroups.com.
To post to this group, send email to openxd...@googlegroups.com.
Visit this group at http://groups.google.com/group/openxdata-dev.
For more options, visit https://groups.google.com/groups/opt_out.



--
If we keep uppermost in our minds the unkind and unjust acts of others, we shall find it impossible to love them as Christ has loved us; but if our thoughts dwell upon the wondrous love and pity of Christ for us, the same spirit will flow out to others.

Ronald Kayondo

unread,
Feb 20, 2014, 10:23:48 AM2/20/14
to openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
This is great work Shashank/Raghu. Will be waiting to try it out.


On Thu, Feb 20, 2014 at 6:15 PM, Shashank Garg <garg.s...@gmail.com> wrote:

--
You received this message because you are subscribed to the Google Groups "openXdata Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openxdata-de...@googlegroups.com.
To post to this group, send email to openxd...@googlegroups.com.
Visit this group at http://groups.google.com/group/openxdata-dev.
For more options, visit https://groups.google.com/groups/opt_out.



--
Ronald. K

Shashank Garg

unread,
Feb 20, 2014, 11:14:56 PM2/20/14
to Daniel Kayiwa, oxd dev, Shashank Garg
Thanks Daniel, we have been feeling the need for a robust native model client that could work with the OXD platform and ODK seemed like the fastest way to get started. We are very happy with the progress so far.

Shashank

Shashank Garg

unread,
Feb 20, 2014, 11:16:34 PM2/20/14
to Ronald Kayondo, openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
Thanks Ronald. We will be submitting it to the repo as soon as we get some testing done on some large and complex forms.

Shashank

Peter Wakholi

unread,
Feb 21, 2014, 1:16:53 AM2/21/14
to openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
Shashank,

This is welcome news. Here as well, Android platform is gaining much prominence. We will be in touch and see how it works and if there are any things that we can contribute.

Regards,

Peter Khisa Wakholi (PHD)
CEO, OMNI-TECH Ltd,
Lecturer, School of Computing and Informatics Technology
Makerere University
Tel: +256-312-110463
Skype ID: p.khisa



On Thu, Feb 20, 2014 at 6:15 PM, Shashank Garg <garg.s...@gmail.com> wrote:

--
You received this message because you are subscribed to the Google Groups "openXdata Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openxdata-de...@googlegroups.com.
To post to this group, send email to openxd...@googlegroups.com.
Visit this group at http://groups.google.com/group/openxdata-dev.
For more options, visit https://groups.google.com/groups/opt_out.



--
Peter Khisa Wakholi (PHD)
Lecturer, School of Computing and Informatics Technology
Room 307 Block A, COCIS
Makerere University
P.O.Box 7062 Kampala, UGANDA
Fax: +256-41-540620
Skype ID: p.khisa

Shashank Garg

unread,
Feb 21, 2014, 1:21:05 AM2/21/14
to Peter Wakholi, openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
Thanks Peter.

We are planning to add a few features like Download Data so that ODK client will be a minimum requirement to work with a workflow. It will be great to work together to keep the OXD platform going as newer clients and functionality get added.

Regards,
Shashank

Dagmar Timler

unread,
Feb 21, 2014, 1:45:11 AM2/21/14
to openXdata Developers, Jørn Klungsøyr, Shashank Garg
Hi Shashank, Raghu + team

Thanks for taking the effort to implement the full xforms spec for the ODK collect mforms-prototype (currently only very basic forms are supported). If you can submit the code to the repository, it would be great for the community. 

Here are the open tickets (I am sure you will need to make some more):

And the documentation on the wiki

Obviously they will need updating when you submit the code.

Thanks
Dagmar


--

Raghu Mittal

unread,
Feb 21, 2014, 1:58:46 AM2/21/14
to openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
Thanks Dagmar.

I have fixed the GPS problem and will submit a patch soon. I will also have a look at ticket #964.

Regards,
Raghu

Shashank Garg

unread,
Feb 21, 2014, 1:59:20 AM2/21/14
to Dagmar Timler, openXdata Developers, Jørn Klungsøyr, Shashank Garg
Hi Dagmar,

Thanks for your email. The GPS and multimedia problems have already been rectified on ODK though we didn't go through the tickets. In addition, Repeat was also broken and we have fixed that too.

When Raghu submits this code to the repository he will definitely go through the tickets, create additional tickets and update them and the Wiki documentation also.

Best,
Shashank




On Fri, Feb 21, 2014 at 12:15 PM, Dagmar Timler <diggi...@gmail.com> wrote:

Dagmar Timler

unread,
Feb 21, 2014, 2:30:26 AM2/21/14
to Shashank Garg, openXdata Developers, Jørn Klungsøyr
Awesome, I will be keen to make use of the code in the future. Thanks again

Jørn Ivar Klungsøyr

unread,
Feb 21, 2014, 2:49:12 AM2/21/14
to Dagmar Timler, Shashank Garg, openXdata Developers

Hi Shashank, Raghu +

 

Thanks for sharing the great work and progress achieved.

Getting a proper support for ODK-collect is going to be another great pluss for OpenXdata! :)

Congrats!

 

We have used ODK a couple of times – though with fairly basic forms.

We had issues with using SSL certificates as it did not accept the certificates we tried and it had some hardcoded port numbers that had to be used.

Though the odd thing was that as long as the “right” ports were used, ODK-collect did no longer require certificates.

This might have been improved in later versions as this was tested and setup around May last year.

Remi should have additional details on how he managed to solve it with some URL redirect magic.

 

One thing, are you using the regular ODK-collect client or a modified version of it?

 

Great work and progress! :)

Look forward to testing when you are ready for it!

 

Best

Jørn K

Shashank Garg

unread,
Feb 21, 2014, 4:33:50 AM2/21/14
to Jørn Ivar Klungsøyr, Dagmar Timler, openXdata Developers, Shashank Garg
Hi Jørn,

Thanks for the appreciation.

We have used ODK-collect with forms of varying complexity, including those with a large number of questions. The performance is very good.

We are working to ensure that authentication goes through the OXD Server, so the client will work just as simply as mforms does with OXD.

We have started with the regular version of the ODK-collect client and the ODK Bridge that was in the experimental repository of OXD. While most of the changes are in the Bridge code to ensure interworkingf with OXD, there are a few changes being made in the ODK-collect client code also. Most of those client changes are to incorporate the functionality that the mforms client provides.

Best,
Shashank

Raghu Mittal

unread,
Feb 21, 2014, 5:16:25 AM2/21/14
to openxd...@googlegroups.com, Jørn Ivar Klungsøyr, Dagmar Timler, Shashank Garg
Hi Jørn,

Thanks for the pointer on running ODK. Yes, we were faced with the issue of running ODK with OXD due to the SSL certificate requirement. So there are 2 things that can be done:
1. Use self-signed certificates on the server and get ODK to accept that self-signed certificate. We were successful in doing this, and I have written a preliminary blog post about this here:
I will also write a comprehensive blog post describing what code changes are needed to get self-signed certificates to work.
2. Another option is to just enable ODK to do basic authentication on a port that you need, so there will be no need for HTTPS. Just adding 2 lines of code in ODK is sufficient for this. This is useful primarily because we needed ODK to work with running OXD webapp code for testing code changes etc.

While we are changing some UI on ODK, we have left the form-rendering untouched. What that means is that we will submit fixes to the OXD-ODK bridge and it will simply work with the latest ODK client and there will be no need for making a fork of ODK.

One good thing about ODK is that we tried running a big form (around 400 questions) and it worked quite fast without any noticeable slowdown. On the other hand, mCollect HTML5 client was quite slow on the bigger forms.

Regards,
Raghu

Daniel Kayiwa

unread,
Feb 21, 2014, 5:25:09 AM2/21/14
to oxd dev, Jørn Ivar Klungsøyr, Dagmar Timler, Shashank Garg
This is great work Raghu!!!

Not requiring to fork ODK makes it an even more attractive solution. :)

Mark Gerard

unread,
Feb 21, 2014, 4:43:05 PM2/21/14
to openxd...@googlegroups.com
+1

Mark

Dagmar Timler

unread,
Jul 7, 2014, 9:24:50 AM7/7/14
to openXdata Developers
HI Shashank and Raghu

I was wondering if you had any updates for the community on the topic of the interface between ODK-collect and the openXdata server/. Are you planning to commit any changes to the openXdata SVN in the near future? Have you a list of the issues fixed in the odk-mforms-proto?

Thanks
Dagmar

Shashank Garg

unread,
Jul 7, 2014, 9:53:17 AM7/7/14
to openxd...@googlegroups.com, Shashank Garg, Raghu Mittal
Hi Dagmar,

Raghu has committed a few smaller changes to ODK-collect as he came up with problems in our forms. I do know that single select dynamic has been fixed. Display of a red mark for mandatory questions was also fixed.

He is currently away on a month-long European back-packing trip. When he comes back he will commit additional changes to the OpenXdata SVN. 

He has intermittent email access but may be able to answer your questions more specifically if he gets a chance to read his email.

Best,
Shashank



For more options, visit https://groups.google.com/d/optout.

Peter Wakholi

unread,
Sep 23, 2014, 10:46:11 AM9/23/14
to openxd...@googlegroups.com, Jørn Klungsøyr, Shashank Garg
Hi all,
At omnitech, we have been trying to use the ODK to collect data with openXdata however there were many forms that did not render properly on odk.
 
So we decided to rewrite the whole conversion process of OXD to ODK xforms  reusing the library we developed for the text based form designer.
https://trac.openxdata.org/wiki/FormMarkupEditor. This Editor outputs both ODK Xforms and OXD Xforms.
 
The library is now ready for beta testing. You Can download the protocol and library here http://goo.gl/N5uW6Z
This library can render almost any openxdata form that was designed by the oxd formdesigner.
So far these are some of the issues that we have tried to address
  1. Dynamic selects are now working
  2. Boolean questions support now working
  3. Basic conversion of XPath expressions referencing boolean or multi-select e.g /data/mutiQn = 'option' is converted to selected(/data/multiQn, 'option')
  4. Implemented of jr:count on repeats.(this converts expression like length(.) = /data/q1 to jr:count = '/data/q1'). 
  5. Fixing Xpath paths e.g data/q1 is corrected to /data/q1
  6. Visible and invisible attributes are now supported
  7. Support for hide and disable actions by negating the logic.
  8. Validation messages
  9. Start time and end time
The protocol uses the same code as the official openxdata protocol with just a single change in the ODKProtocolHandler.oxd2odk() method which delegates to the conversion library. 
Attached is the protocol and library. Unfortunately for now the converter library Cannot be bundled into the protocol because of the classloader magic that happens in the loading of protocol which leads to memory leaks among the groovy classes.
Instruction of how to install:
  1. Download  http://goo.gl/N5uW6Z and unzip contents
  2. Download http://repo1.maven.org/maven2/org/codehaus/groovy/groovy-all/2.0.8/groovy-all-2.0.8.jar
  3. Copy odk-groovy-proto-1.0-SNAPSHOT.jar to <openXdata.directory>/WEB-INF/protocol-jars
  4. Copy oxdmarkup-parser-0.2-SNAPSHOT.jar to <openXdata.directory>/WEB-INF/lib
  5. Copy groovy-all-2.0.8.jar to <openXdata.directory>/WEB-INF/lib
  6. Edit <openXdata.directory>/WEB-INF/protocol-jars/protomap.properties and Edit this line odk-proto-1.0=odk-proto-1.3 to look like this odk-proto-1.0=odk-groovy-proto-1.0-SNAPSHOT
  7. Startup up tomcat and test.
Copy the oxdmarkup-parser-0.2-SNAPSHOT.jar and the 
 
For any technical questions, please get in touch with Ronald Kayondo.
Peter Khisa Wakholi (PHD)
CEO, OMNI-TECH Ltd,
Reply all
Reply to author
Forward
0 new messages