Cloud computing is the backbone that is currently powering all forms of mobile, web, and social computing systems. The emerging cyber-physical applications such as smart cities and autonomous vehicles are bringing new requirements that are making cloud computing less than optimal as the computing mainstay. Mobile IoT, edge/fog computing, cloud computing, fast wireless and wired networks are some of the key building blocks of future cyber-physical systems such as smart cities, smart transportation systems, and smart energy. While the

Edge computing (used interchangeably with fog computing in this site) and mobile IoT are poised to play pivotal roles along with cloud computing in future cyber-physical computing applications such as smart cities, autonomous vehicles, and smart energy. While edge computing brings enormous potential to improve the overall performance of such systems, it also complicates application development and deployment. In particular, applications need to leverage both the fog for short-term needs and clouds for long-term needs such as long-term data storage. Another important problem is disconnection and fault tolerance. Cloud computing concentrates the resources at the datacenters whereas fog computing disperses the resources throughout the network. Therefore, new fog specific approaches are needed for disconnection and fault tolerance. The diagram below illustrates an example cloud-fog-device deployment.

JAMScript is a systems programming language and middleware designed for a three-tiered system of clouds, fogs, and devices. It is a polyglot language that combines C and JavaScript. A proof-of-concept compiler and runtime for different *nix operating systems are provided in this repository. As part of ongoing research, we are carrying out many different experiments and prototyping interesting applications (e.g, distributed shells, parking spot managers) using JAMScript. An emulator using Docker containers has been developed to quickly launch and test various distributed system configurations with JAMScript code loaded in them. It is highly suitable for running various prototyping experiments involving clouds, fogs, and devices.

This is an open source project. If you are interested in contributing towards this project, we would be delighted to hear from you. Please contact maheswar@cs.mcgill.ca for more information on how you could contribute to this project.