I have published the first version of my new project Firestr (pronounced Fire Star)
It is a simple platform for distributed communication and computation. Imagine a P2P chat program where instead of sending messages of text, sound, or video, you send software, that runs immediately and automatically connected.
In a session with others, you pick an app from your collection and it appears on their machines. The application starts running immediately and all instances are connected to each other automatically.
If your friend or loved one like the program, they can add it to their collection and be able to send it to others.
The apps are currently written in the Lua programming language, but support for others is in the cards. There is a built in code editor, that also works in a distributed way. You can work on a program with a buddy.
As a fellow nerd, I want my son to at least try programming when he gets old enough. When I started, it was actually very easy because we had languages like BASIC where I can draw and play with quickly.
This is the goal of Firestr. Make it so easy that children can start programming immediately and share their creation with their friends. The programs they write can be stand alone, or interconnected. They don’t have to understand network programming to make programs that work across the network. A child understands the idea of passing a note to another, and this is how Firestr works.
Many ask “How is this different than web apps?”. There are several key differences between this and the web.
1. It is a push model, not a pull model. Software is not downloaded from someone, but uploaded to someone.
2. It is decentralized. The web is built around a server/client model. Web servers are centralized modes of communication and have to be on the public internet to function across the internet. Firestr is based on a P2P model, and communication happens between peers instead of through a central server. WebRTC tech is pushing browsers into a hybrid server/client and P2P model. I am excited about that.
4. Eventually, all communication between Firestr instances will be encrypted. I am working towards encrypted only communication.
5. Built on a trust network. You have to be deliberate to connect to people you do not know. This means you can trust others to send you non malicious software. And because all apps can be cloned and edited, you always know what is going on.
6. You can share your software with others effortlessly. Even open source and free software web applications require understanding how to setup http servers, databases, etc. You cannot simply give someone software for them to copy and modify. With firestr, the software is zero config and copying it to your machine is one button press.
The last bit is that the UI is deliberately modelled after a chat application instead of a windowed operating system. I want to make the interactivity explicit and convey time in a natural and expected way. I am hoping that through this restriction, there will be some creativity.
This is only the first version. There are lots of bugs and lots of missing features. You cannot remove people from your contacts, or apps from your collection. There are bugs in the networking and bugs in error handling. But I wanted to get something out that works as quickly as possible for people to try.
You can see the code on github.com
If you are interested in helping me make this great, email me at email@example.com
The software is GPLv3
The software is in development. There is NO security and therefore use this AT YOUR OWN RISK.
If you are a security expert, please contribute.