Skip to content
Raymond Cheng edited this page Nov 12, 2013 · 19 revisions

freedom.js is a runtime for distributed web applications. The Web is shaping up to be a powerful environment for novel applications that are highly interactive and global in nature. While existing server-client frameworks have enabled new ways to communicate, we think the Web can be much more than software-as-a-service. freedom.js is a completely different way to think about web apps. Think of it as a playground for building new forms of network topologies into web apps. People keep saying the Web is the new operating system. Let's figure out what that can mean.

It's just JavaScript software

Let's stop thinking in terms of server-side and client-side code. We should just write applications. freedom.js apps are 100% JavaScript and shipped with the page when you visit. You deploy a freedom.js app by shipping static JavaScript files. Host on GitHub pages, distribute with a CDN (there's a bunch of free ones).

The browser tab is a process

Secure sandboxes, modular code Link to other developers Dynamically Composable applications Dynamic linking with sandboxes

Give your app superpowers

Each freedom.js module has access to 3 sets of APIs (Storage, Social, and Transport), with more forthcoming. APIs for multi-user P2P Libraries Code reuse Plug and play implementations

Now let's make it distributed

Migration Distributed but auto hook up Resource location

User privacy - gov surveillance, advertising

Write powerful web applications without having to worry about We don't get in the way of your app, but let you build complex web services without worrying about where data or code will reside. Instead, FreeDOM takes care of the distributed systems work to reduce your costs, keep your users in control of their data, and make your app as available and convenient as a cloud-based approach. Developer security

IFC, encryption, radiatus infrasrtructure integrity, proprietary code, private data

Developer cost

Toast petite

Components

A FreeDOM Application can be modeled as three major components. The FreeDOM web worker, the application web worker, and the main UI.

FreeDOM Web Worker

This is the main process required for FreeDOM to run. This is started by including the compiled freedom.js file in your HTML code. When loading your code, you need to specify a [manifest file] (/UWNetworksLab/freedom/wiki/Manifest-Files) indicating the location and information about your application code. In the example code below, our manifest file is specified in manifest.json.

<script type="text/javascript" src="freedom.js" data-manifest="manifest.json"></script>

Application Web Worker

Once FreeDOM loads your application from the manifest file, it will be run in a separate browser process that waits and responds to requests from the Main UI.

Main UI

This is where all your front end code goes.

FreeDOM Apps in 5 Steps

  1. Create a application script that will be loaded into the web worker. This is just a normal Javascript file that you write. Read about the [freedom.emit] (/UWNetworksLab/freedom/wiki/FreeDOM-Code-Reference#freedomemit) and [freedom.on] (/UWNetworksLab/freedom/wiki/FreeDOM-Code-Reference#freedomon) functions to learn how to communicate to and from your Main UI.
  2. Write your [manifest file] (/UWNetworksLab/freedom/wiki/Manifest-Files)
  3. Write your Main UI
  4. Include FreeDOM as mentioned above.
  5. Congratulations, you now have a FreeDOM Web App! For a more detailed introduction to FreeDOM, see [My First App (Tutorial)] (/UWNetworksLab/freedom/wiki/0.-Getting-Started)
Clone this wiki locally