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