Skip to content

An open framework for context-aware live apps

About devices and context

The post-PC era has come, marked by the emergence of a diversity of digital devices – e-readers, smartphones, tablets, TVs, home weather stations, watches, snowboard goggles, tennis rackets, running shoes, boilers, supply meters, and so on – each of them  adapted to specific applications or and contexts.

More than screens, such devices now ship with an ever growing list of sensors – accelerometers, gyrometers, compass, microphones, cameras, GPS – that permanently observe their immediate proximity, thus enriching the global context data – time, social network posts, open data updates – with local live measures.

Taking advantage of this new digital space involves new requirements regarding the way we build apps:

  • Ubiquity: applications need to be deployed whatever the device, operating system or platform.
  • Awareness: context’s data needs to be collected - come from local sensors, social networks, open data APIs or any other API providing live context data – and distributed to any applications that could need it.
  • Immediacy: evolution in the context needs to be streamed and processed as fast as possible.
  • Memory: data needs to be stored in order to be further queried, processed or even replayed.

The Hubiquitus answer

Hubiquitus aims to provide a simple way to develop apps that fulfill with these requirements. It is basically an ubiquitous programming model for building context-aware distributed live apps.

  • Actor-based apps: applications developed using Hubiquitus are basically made of actors, a lightweight form of concurrent computational entities that sequentially process messages from an event-driven receive loop called a Reactor. Each actor makes its own decisions regarding what to do with incoming messages.
  • Full-blown JavaScript stack: the dynamic scripting language of the web may not be the perfect language we all dream about, but it is undoubtedly the most ubiquitous one.
  • Native bindings: since even JavaScript can’t run on every platforms, Hubiquitus provides native bindings for major OS such as iOS, Android and Windows 8.
  • Asynchronous message-passing: like humans, Hubiquitus actors are autonomous entities which state is not share nor synchronized with other actors state. This “share nothing” strategy is enforced by using an asynchronous message-driven communication between actors.
  • Distributed P2P topology: Hubiquitus adopts a broker-less P2P distribution model in which actors discover and connect each other dynamically at runtime, thus allowing to implement easily resilient and elastic architectures. Direct peering also provides more direct connections which contribute to decrease communication latency.
  • Lightweight socket-based transport: actors connect to one another using various forms of sockets used to transport messages using a very small footprint transport protocol  ; the combination of PGM, TCP and HTML5 Web sockets allows covering most network topologies.
  • Messaging patterns: Hubiquitus actors can send messages to other actors using either a point-to-point, a publish-subscribe, a master-worker strategies or a combination of these patterns.
  • Big data strategy: the whole message history can be persisted into a NoSQL database.

 

It’s free and open source

Hubiquitus is an open source software licensed under the terms of the MIT license.  This document itself, as the whole documentation provided with the project, is licensed under the terms of the Creative Commons Attribution Unported 3.0 (CC BY 3.0).

Hubiquitus is thus provided absolutely free of charge so you should feel free to use it as you like without restrictions.

Project’s code and documentation repos are available at https://github.com/hubiquitus/. You can also find some addons at http://github.com/hubiquitus-addons. Samples are available at http://github.com/hubiquitus-samples.

#Enjoy :D

Do U want to know more ?

Follow

Get every new post delivered to your Inbox.