Maintaining a languages  binding is actually a really big task.  I know this, 
at one point in time, I was one of the primary maintainers for four language 
bindings that were found in the AllJoyn project (At one point in time there was 
work on seven different language bindings).  Just like what has been done for 
IoTivity each language binding was hand crafted and maintained. I did not have 
enough time to maintain all the languages and continue to develop all the other 
features that were constantly being added.

Only three of the language bindings had lots of priority. Java, C (AllJoyn is 
C++ and had to have a translation layer to go to C), and Objective C. The other 
languages JavaScript, dotnet, C# (non-dotnet variant), and Python. Python was 
never released  or finished. JavaScript was still being maintained but was 
often one or two released behind feature wise. It typically only had enough 
done to keep it building and running the few things that were using it and 
nothing more. The C# and dotnet were dropped due to lack of developer support 
and inability to maintain the code.

Having many language bindings for a really stable project is probably fine. For 
something that is growing and changing as fast as IoTivity; binding maintenance 
becomes almost a full time job of its own.

Someone from the AllJoyn group was looking into using tools to generate the 
language bindings.  The one that was being looked at was SWIG 
(http://www.swig.org/exec.html).  Using SWIG changes the development of 
bindings considerably You basically build a set of rules on how to translate 
one language to another. When working this way the focus moves to developing 
unit tests to test/validate the output from SWIG instead of developing the 
language binding.

Hand crafting bindings will result in much cleaner and more useable code. Using 
a tool like SWIG you end up with code that can be run in another language but 
will not really match the language style.

The more languages you want to support the more important I would say it is to 
find a tool to help do the work.  If you are only interested in one or two 
languages Then had crafted solution will always be of higher quality.

George

-----Original Message-----
From: iotivity-dev-bounces at lists.iotivity.org 
[mailto:[email protected]] On Behalf Of Mats Wichmann
Sent: Thursday, October 6, 2016 12:18 PM
To: iotivity-dev at lists.iotivity.org
Subject: Re: [dev] Generic Java Bindings [IOT-1089]

On 10/06/2016 01:05 PM, Nash, George wrote:
> Larry Sachs, Rick Bell and myself will be taking ownership of the IOT-1089 
> task of creating a Generic Java language bindings.
...
> The work is on the generic-java branch so could be merged now if need.  
> However, that branch was created over three months ago and is over 1200 
> commits behind master. 

This is nothing at all specific to the Java bindings work. After all, I know 
there's interest in Javascript, I'd not be surprised if there will was a call 
for a C# interface someday, and who knows what else.  All cool, but how can we 
arrange to keep multiple language bindings in sync so they don't go out of skew 
if every binding doesn't have an active maintainer paying attention to 
everything all the time (which would be the ideal of course)? Is there some 
workflow thing that could be done to record bindings-related api movement to 
make the work easier?



_______________________________________________
iotivity-dev mailing list
iotivity-dev at lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to