Mosquitto 0.9~test2

Mosquitto 0.9, which I hope to release mid November, represents the most significant change to mosquitto to date - the removal of sqlite as an absolute dependency. In addition, this removes the dependency on the sqlite3-pcre extension and on pcre. This gives a definite performance improvement, reduces the amount of object code that needs loading by around 95%, reduces memory usage and also makes it lots easier to compile on more unusual systems.

It's quite a substantial change though, so I've made a test release to hopefully get some external testing. If you could give it a try and report back that'd be great. The source is at http://mosquitto.org/files/source/test/. (use the highest numbered version available). There are also Ubuntu packages available at the mosquitto-expt ppa and binaries for Fedora, Mandriva,  SLES and openSUSE at the openSUSE build service. If you'd like binaries for other systems, please get in touch.

Note that this is a test release, not a release candidate - there are definitely things that still need changing. The following list shows the points I'm currently aware of:

  • Old style sqlite will be imported when the option is compiled in (enabled by default). This import currently only imports retained messages and durable subscriptions, but not queued messages.
  • The max_inflight_messages and max_queued_messages config options are ignored and no maximum is applied.
  • The CMake compilation scripts aren't updated.

Update

I've uploaded test3 with a python fix, updated CMake scripts and fixed max_inflight_messages and max_queued_mesages.


One year old!

On the 25th October 2009, at 21:40:51 (just five hours and forty minutes after the first oggcamp ended :), I made the first commit to what would become the mosquitto source code repository. Although there was no code committed until the next day, and the first release wasn't until almost six weeks later, I consider this to be when mosquitto was born. It's been a good year. Thanks to everybody who has helped out and been in touch!

I had hoped to release version 0.9 today, but it isn't to be. Nevertheless, I hope you'll join me in hoping for an even more successful year ahead. I'm aiming for a 1.0 release before this time next year with full MQTT 3.1 support, full rsmb feature set (except where inappropriate), IPv6 support, SSL support, language translation for the programs and man pages, full API documentation and examples, and whatever I think of in the meantime.

Have a feature you're particularly interested in? Leave a comment! :)


Man Page Translations

Something that is very much in the back of my mind whilst developing mosquitto is that it should have support for language translations. I've been reluctant to start this effort until development was a little bit more settled, to avoid wasting translators time. I think it's now time to start the ball rolling.

I'm going to approach this in two stages - the man pages and the programs. Man pages are first. I've imported the translation templates to launchpad, so if your native tongue is anything other than English and you'd like to translate them - please go ahead. I'll be putting any translated man pages (with credits :) into the upcoming 0.9 release. I think I've finished making changes but if I haven't, the one most likely to change is for mosquitto.conf

The translation page can be found at http://translations.launchpad.net/mosquitto/trunk

Thanks in advance, and please get in touch if you find any strings that don't make sense.


Version 0.8.3 released

This is a bugfix release.

  • Fix compliance with the MQTT protocol for messages published at QoS 2. This means that messages that time out are dealt with correctly and duplicate messages are also dealt with correctly.

See the download page for the update.


Debian packages

I've created some packages for Debian on i386 and amd64. They can be found at http://mosquitto.org/files/binary/debian/. They are almost identical to the Ubuntu packages (Debian doesn't use upstart, so there is a different init script), but compiled against Debian testing (Squeeze) instead. This is because Debian 5 (Lenny) doesn't include a recent enough version of sqlite3.

Please let me know if you have any problems with the packages.


MQTT with PHP

Using MQTT in PHP has been possible for a long time using the Simple Asynchronous Messaging MQTT class. Unfortunately this is an imperfect solution due to unclear licensing, some slightly dubious design decisions and bugs.

Thankfully, Andrew Milstead has started creating an alternative implementation. It is MIT licensed and available on github. It's very new, so if you have problems check back to see if there have been updates and then let Andrew know.


MQTT v3.1

The MQTT v3 spec has been updated to v3.1. The significant change is the inclusion of the option to send a username and password as part of the connect command. The new spec is available at http://www.ibm.com/developerworks/webservices/library/ws-mqtt/index.html and is a lot more readable and clear than the original.

Mosquitto will support the v3.1 spec in a future release, along with the ability to control both broker and topic access by username. In the meantime, if you need this functionality, the IBM proprietary RSMB broker may be suitable for testing purposes. The RSMB package now also includes an MQTT client library, a simple publish client and a simple subscribe client, just like mosquitto. Be sure to check the license terms before using it!


Version 0.8.2

This is a bugfix release.

  • Fix default loop() timeout value in mosquitto.py. Previous value was 0, causing high cpu load.
  • Fix message handling problem in client library when more than one message was in the client queue.
  • Fix the logic used to determine whether a QoS>0 message needs to be retried.
  • Fix the Python sub.py example so that it quits on error.

See the download page. Includes Windows 32-bit binaries for the broker compiled with Cygwin, and the client library and clients compiled natively with Visual Studio to allow developing native Windows MQTT clients.


Version 0.8.1 released

This is a minor release. The primary reason for it is the amount of interest in the Python interface to libmosquitto. This release tidies up the Python interface considerably (it is now more "Pythonic" and easier to use), and significantly, brings the promised packages.

This release also provides a few fixes, including to the packaging and installation scripts. Unfortunately, it does also include a known bug that was fixed prior to release, but accidentally left unmerged. This affects mosquitto_pub client when using the -l option (publish line by line input from stdin), causing it to exhibit high cpu load. I'll make a new bug fix release in a few days with this and any other fixes that come up.

This release also provides improved packaging options. All of the available options are now packaged for Ubuntu, including the libmosquitto0-python package. Because there are now multiple packages, it is possible to provide some mosquitto functionality on distributions where the version of sqlite3 is too old. The packages available on these systems are listed as "clients only":

  • Fedora 12, 13 (full support)
  • openSUSE 11.3 (full support)
  • openSUSE 11.1, 11.2 (clients only)
  • Redhat Enterprise Linux 5 (clients only)
  • CentOS 5 (clients only)

Details are available on the download page. Please note that some distributions have different naming schemes, so the Python module can be called both python-mosquitto and libmosquitto0-mosquitto for example.