-
Notifications
You must be signed in to change notification settings - Fork 52
Overview
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.
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).
Secure sandboxes, modular code Link to other developers Dynamically Composable applications Dynamic linking with sandboxes
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
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
A FreeDOM Application can be modeled as three major components. The FreeDOM web worker, the application web worker, and the main UI.
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>
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.
This is where all your front end code goes.
- 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.
- Write your [manifest file] (/UWNetworksLab/freedom/wiki/Manifest-Files)
- Write your Main UI
- Include FreeDOM as mentioned above.
- 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)