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
