Hi *,
I'd like to reach out the the xmpp-iot community to bring attention to the W3C
"Web of Things" Group[1]. The W3C urgently needs contributors able bridge the
areas of the Web with the Embedded domain.
The WoT[2] Framework is still at a very early stage, so this is just the time where we
need people who understand the vision and want to play an active role in refining it. We
want to raise awareness of the promise and challenges for the Internet of Things, and the
role of Web technologies as part of the solution.
We need plenty of help with developing open source software for the Web of Things,
including servers and test frameworks and test suites. Dave Raggett has started a NodeJS
based server[3], and we're also are looking for help with servers on microcontrollers,
on smart phones/tablets, and for highly scalable cloud based systems.
There are opportunities to help with embedded systems, especially when it comes to
embedded web of things servers, and device drivers. We will need a way to describe the
communications patterns used by particular device, e.g. how to communicate with devices
that spend most of their time asleep, and the way in which data is buffered or multiplexed
(e.g. when aggregating data from multiple sensors).
There are also plenty of areas for people to could contribute that don’t involve
programming, for example, gathering use cases and requirements, the details of the
bindings to protocols, and the architectural considerations. Security and privacy are
areas where we need to better understand what’s practical. Real-time control e.g. of
manufacturing robots is one of the potential application domains where the architectural
considerations are especially challenging. When it comes to programming, you would have an
opportunity to take on the role of an IoT application developer who writes the application
scripts. We will be looking of people who can try things out and share the experiences
with others as a way of building interest in the wider community.
The Web grew strong on the back of open source and a community of enthusiasts. Now,
improvements in electronics are fuelling the Internet of Things, and we have a limited
window of opportunity to create and establish strong open standards on a world wide scale
for the IoT.
Right now, the IoT suffers from fragmentation and data silos. Without strong open
standards, we’re likely to see competing proprietary solutions that increase the costs for
developers and limit the potential. To avoid this, W3C’s wants to extend the Web from a
Web of pages to a Web of Things. The aim is unlock data silos by bridging IoT platforms
through the Web at a range of device scales from microcontrollers to cloud-based server
farms.
By “things” we mean virtual objects that act as proxies for physical and abstract
entities, e.g. a sensor, an actuator or a service. Each “thing” has a model that describes
its metadata, events, properties and actions. This core semantics allows servers to
automatically generate the corresponding objects for scripts to interact with, and avoids
the need for script developers to deal with the underlying protocols. This makes it easier
to build highly scalable servers which are free to use the protocols that are best suited
to the requirements, as no one protocol will satisfy all needs. We will define bindings to
a variety of protocols, e.g. HTTP, WebSockets, MQTT and XMPP. The bindings define how REST
based messages are conveyed by each protocol to notify events and property updates, and
to invoke actions and pass back their results. For more details, see [2]
We would like to achieve this through open source projects for Web of Things servers for a
number of different device types, and a start has been made with an implementation based
on NodeJS[3]. This is still at a very early stage, but it nonetheless suggests the
potential.
Dave's initial code uses HTTP to access the descriptions of “things” represented in
JSON-LD, i.e. the semantics are founded on W3C’s work on Linked Data, but expressed with
the simplicity of JSON. The messaging is built on top of WebSockets. The idea is to extend
this to support a wider range of protocols, including MQTT and XMPP as well as pure HTTP
solutions. The roadmap calls for work on supporting richer metadata for security, privacy
and communication patterns. We also are looking for help with work on device drivers, both
for direct access, e.g. through GPIO ports on the device hosting the server, or through
IoT technologies such as Bluetooth and ZigBee.
So if you are willing to help with software development for the Web of Things servers,
that would be greatly appreciated. In addition, to the NodeJS server, we anticipate work
on servers for microcontrollers, e.g. building upon existing open source projects for CoAP
and MQTT. Potential target devices include the Arduino and the more powerful ESP8266. Like
the Web of pages, we expect that developers will want to choose which programming
languages they use, e.g. JavaScript on NodeJS, Lua on NodeMCU, Python on MicroPython, and
C/C++ on the Arduino IDE. We’re also looking for people interested in open source
development of highly scalable cloud based servers, building on the firm foundation of
existing projects.
To complement work on the software, we will need help with collecting and describing use
cases, with design and documentation, and with test frameworks and associated test suites.
We’re also looking for people to apply the web of things to practical IoT projects and to
share their experiences with the wider community, including helping with hackathons. There
is a lot of fun to be had by hobbyists thanks to the low cost of microcontrollers, sensor,
actuators and associated electronic components. There are also opportunities for
businesses to exploit open standards as they emerge, and to avoid being locked into a
particular vendor’s platform. A strong open source community will stimulate innovation and
lower costs through shared building blocks and expertise that allows businesses to focus
on the added value they offer to customers.
We welcome contributions to the open source projects whether extensions to existing server
projects or to new ones like the NodeJS server cited above. If you find a bug in the
source code or a mistake in the documentation, you can help us by submitting an issue to
the GitHub repository, and likewise if you have suggestions for new features. Even better
you can submit a Pull Request with a fix.
We encourage you to join the W3C Web of Things Community Group where contribution and
discussions will happen. Anyone can join and there are no fees. The Community Group hosts
a publicly archived mailing list, blog and wiki. We can also collaborate on documents,
e.g. on GitHub. So if you have ideas you want present or questions to ask please feel
encouraged to do so. Together we can build a better Web!
n.b. the Community Group has been quiet to date with most of the activity occurring in the
associated W3C Interest Group, but I hope to change that as we kick start the effort on
open source and applications. If you work for a W3C Member Organisation, you are also
welcome to join the Interest Group.
If you have any questions, please don’t hesitate to contact me or Dave Raggett
(dsr(a)w3.org) directly.
[1] WoT Community Group
https://www.w3.org/community/wot/
[2] WoT Framework
http://www.w3.org/2015/05/wot-framework.pdf
[3] NodeJS server on github
https://github.com/w3c/web-of-things-framework
Thanks for your time;
Joachim