Web: Roadmap and MQTT 5 updates.

This commit is contained in:
Roger A. Light 2018-11-29 22:54:25 +00:00
parent 8960b1fe29
commit 44135bc680
4 changed files with 144 additions and 0 deletions

3
www/README.md Normal file
View File

@ -0,0 +1,3 @@
This is the mosquitto website, it can be built with `nikola`:
`nikola build`

View File

@ -87,6 +87,7 @@ NAVIGATION_LINKS = {
#("/sponsoring/", "Sponsoring"), #("/sponsoring/", "Sponsoring"),
( (
( (
("/roadmap/", "Roadmap"),
("/api/", "API"), ("/api/", "API"),
("/man/libmosquitto-3.html", "libmosquitto"), ("/man/libmosquitto-3.html", "libmosquitto"),
("/man/mosquitto-8.html", "mosquitto"), ("/man/mosquitto-8.html", "mosquitto"),

81
www/pages/roadmap.md Normal file
View File

@ -0,0 +1,81 @@
<!--
.. title: Roadmap
.. slug: roadmap
.. date: 2018-11-09 10:53:50 UTC
.. tags:
.. category:
.. link:
.. description:
.. type: text
-->
# Roadmap
## Version 1.6
The next minor release. The focus of this release is on providing support for
version 5 of the MQTT protocol.
This release will provide a feature complete implementation, but does not
represent the final interface for all features. In particular, functions are
being added to libmosquitto to provide support for MQTT 5 features, but these
will be consolidated with the API changes planned for version 2.0.
### Deprecation notices
#### libmosquittopp
libmosquittopp, the C++ wrapper around libmosquitto is now deprecated and will
be removed in the next major release (2.0). The wrapper came about by an
external request and at the time it was created there were no other C++
solutions for MQTT. This has changed in the past years and this wrapper
provides no benefit over true C++ libraries or using the pure C libmosquitto.
#### libmosquitto API changes
The Mosquitto project has maintained API and ABI compatibility in libmosquitto
since version 1.0, and has dealt with the introduction of new specification
features by adding new functions which duplicate the behaviour of existing
functions, but with additional arguments to support the new features.
Particularly with regards to adding support for MQTT version 5, this has lead
to a proliferation of functions which offer small variations on a theme.
The libmosquitto functions listed below (which includes some new functions
included in 1.6) are going to be updated for version 2.0. Functions not listed
here should still be considered at risk of being updated.
* mosquitto\_will\_set
* mosquitto\_connect\*
* mosquitto\_reconnect\*
* mosquitto\_disconnect
* mosquitto\_publish\*
* mosquitto\_subscribe\*
* mosquitto\_unsubscribe\*
* mosquitto\_loop\*
* mosquitto\_\*\_callback\_set
* All callbacks
* mosquitto\_\*\_topic\_check\*
## Version 2.0
This is the next major release and includes breaking changes. Other features
planned include:
## Disk persistence improvements
A new disk persistence interface will be created to allow persistence to occur
immediately, rather than periodically. This will allow queued messages for
disconnected clients to be removed from memory, and reduce the periodic pause
caused when writing the persistence file.
## Breaking changes
### libmosquitto
The libmosquitto API is being consolidated to better support the new MQTT 5
features whilst reducing the number of function variants.
### libmosquittopp
The C++ wrapper around libmosquitto will be removed in this release.

View File

@ -0,0 +1,59 @@
<!--
.. title: MQTT 5 progress
.. slug: mqtt5-progress
.. date: 2018-11-29 21:33:29 UTC+00:00
.. tags: MQTT5
.. category:
.. link:
.. description:
.. type: text
-->
Development of support for MQTT 5 is ongoing and making good progress, but has
been substantially delayed due to other non-Mosquitto work having to take
priority.
It is possible to test the current state of MQTT 5 support by using the `mqtt5`
branch of the [repository]. Please note that this is very much a work in
progress, so parts are incomplete and interfaces may yet change. The client
library in particular has had to have an increase in functions available in
order to provide the features needed whilst providing backwards compatibility.
Part of the plan for the 2.0 release, which will follow after 1.6, is to
consolidate the libmosquitto API with breaking changes. There are more details
on the [roadmap].
Current features include:
* Support for all incoming and outgoing packets, although not everything is
processed.
* Support for sending and receiving all properties, with not all properties
processed.
* Client support for setting properties
* Request/response support (client cannot process incoming correlation data)
* Retain availability
* Message expiry interval support
* Server support for assigned client identifiers
* Payload format indicator support
* Content-type support
* Basic topic alias support from client to broker
* Lots of new tests
Both `mosquitto_pub` and `mosquitto_sub` support setting properties on the
command line, for example:
```
mosquitto_sub -t topic -v -D connect session-expiry-interval 60 -D connect user-property key value -D subscribe user-property sub-key sub-value
```
```
mosquitto_pub -t topic -m '{"key":"value"}' -D publish content-type "application/json"
```
```
./sensor_read.sh | mosquitto_pub -t topic -l -D publish topic-alias 1
```
Further updates will be posted when more features are available.
[repository]: https://github.com/eclipse/mosquitto/tree/mqtt5
[roadmap]: https://mosquitto.org/roadmap/