Paho 0.9.0 Release Review

Type: 
Release
State: 
Successful
End Date of the Review Period: 

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Wednesday, April 30, 2014
Project: 

Release Review

Release: 

Paho 0.9.0

Description: 

This is the first release of the Java, C, JavaScript and Python MQTT client libraries.  They allow application programs to communicate with MQTT servers using the existing MQTT specification, 3.1.  The MQTT standard currently being drafted, 3.1.1, will be supported in a later release.

Each library supports the full MQTT 3.1 specification including:

- QoS 0, 1 and 2

- payloads up to 256MB (MQTT server support needed)

- will messages.

 

API Certification: 

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Architectural Issues: 

Each of the APIs in any of the languages has a similar look and feel, with one operation for each of the MQTT commands, connect, subscribe, unsubscribe, publish and disconnect.  So, the behaviour of each is similar, internally.

Static analyis of the C client library showed only 3 possible logic errors, none of which were serious.

Gerrit is used to review contributions on the C, Java and Python repositories.  Build and test results are available on the Paho HIPP instance: https://hudson.eclipse.org/paho/, with builds triggered automatically by Gerrit submissions for the Java and C repositories.

Security Issues: 

The C client library does make use of OpenSSL for secure connections.  However OpenSSL is not packaged or supplied with the Paho library - the version of OpenSSL provided by the host operating system is used.  So it is up to the user to use a version of OpenSSL which they are happy with.  The Python MQTT client library also indirectly uses OpenSSL through the Python SSL libraries.  Python itself needs to be kept updated to get the latest OpenSSL fixes.

One issue was raised as a vulnerability (https://bugs.eclipse.org/bugs/show_bug.cgi?id=425195), but this is normally avoided as described in the bug.   An option to allow this will be added in a future release.

Non-Code Aspects: 

The Paho web pages are in the process of being updated in readiness for the new release.  The old pages are here:  http://www.eclipse.org/paho/, the new here: http://www.eclipse.org/paho/new/

A number of MQTT/Paho articles have been written and linked to from the website: http://www.infoq.com/articles/practical-mqtt-with-paho, http://www.eclipse.org/paho/new/articles/talkingsmall/.

All of the APIs have samples to show how to get started with the API and reference documentation in a form suitable for that language (JavaDoc, Doxygen, etc).

 

Usability: 

Each of the APIs in any of the languages has a similar look and feel, with one operation for each of the MQTT commands, connect, subscribe, unsubscribe, publish and disconnect.   The success or failure of these operations is reported either synchronously via a return code, or asynchronously in a callback, depending on the API.   The basic styles of API have been developed over 8 years or more, from before Paho's existence, and continued within Paho, so we are confident of their basic usability.  We continue to get feedback and improve where necessary, for instance with the new embedded APIs.
 

End of Life: 

No previous releases, so this does not apply.

Standards: 

The current support is for the MQTT 3.1 specification, here: http://www.ibm.com/developerworks/webservices/library/ws-mqtt/index.html

Future releases will also support the OASIS MQTT 3.1.1 standard, which has not yet been finalized.

Communities: 

At the time of writing, there are 94 resolved/closed bugs for the Java, C, JavaScript and Python clients combined: https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Technology&component=MQTT-C&component=MQTT-Java&component=MQTT-JS&component=MQTT-Python&list_id=8914450&product=Paho&query_format=advanced

and 30 unresolved: https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&classification=Technology&component=MQTT-C&component=MQTT-Java&component=MQTT-JS&component=MQTT-Python&list_id=8914478&product=Paho&query_format=advanced.

At EclipseCon, an MQTT interoperability test day was held (http://eclipse.org/org/press-release/20140407_mqtt_test_day.php).  Test material from Paho was integral to the success of this day - although the test material is not part of this release. Four sessions at EclipseCon referenced MQTT and Paho: "Flying Sharks and M2M", "M2M Lightning Talks", "M2M, IOT, Device Management", "Powering Your Next Internet of Things App with MQTT".

MQTT.org is a central focus of the MQTT community - Paho news is updated here too http://mqtt.org/tag/paho.

A formal release for Paho is an integral part of raising its profile.

We are working with the mbed (mbed.org) community on embedded MQTT clients: http://mbed.org/teams/mqtt/

Several Paho committers are part of the MQTT standardization committee at OASIS: https://www.oasis-open.org/committees/membership.php?wg_abbrev=mqtt

MQTT and the Python client library: https://speakerdeck.com/jpmens/mqtt-for-sysadmins

 

 

Approved IP Log: