forked from cory/tildefriends
Remove the docs app. Will figure out how to do this all via the wiki app.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4779 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
7d029d3d7a
commit
4867bacb72
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "tildefriends-app",
|
|
||||||
"emoji": "📚"
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -1,16 +0,0 @@
|
|||||||
# Tilde Friends Developer's Guide
|
|
||||||
[Back to index](#index)
|
|
||||||
|
|
||||||
A Tilde Friends application runs on the server. To make an interesting
|
|
||||||
application that interacts with the client, it's necessary to understand
|
|
||||||
how the parts work together.
|
|
||||||
|
|
||||||
## Hello, world!
|
|
||||||
|
|
||||||
A simple starting point. Presents `Hello, world!` in the browser when
|
|
||||||
visited.
|
|
||||||
|
|
||||||
**app.js**:
|
|
||||||
```
|
|
||||||
app.setDocument('<h1>Hello, world!</h1>');
|
|
||||||
```
|
|
@ -1,12 +0,0 @@
|
|||||||
# Tilde Friends Documentation
|
|
||||||
|
|
||||||
Tilde Friends is a participating member of a greater social
|
|
||||||
network, [Secure Scuttlebutt](https://scuttlebutt.nz/),
|
|
||||||
adding a way to safely and securely write, share,
|
|
||||||
and run code in the form of server-side web applications.
|
|
||||||
|
|
||||||
- [Tilde Friends Vision](#vision)
|
|
||||||
- [Secure Scuttlebutt from Scratch](#ssb)
|
|
||||||
- [Structure](#structure)
|
|
||||||
- [Guide](#guide)
|
|
||||||
- [TODO](#todo)
|
|
@ -1,41 +0,0 @@
|
|||||||
# Secure Scuttlebutt from Scratch
|
|
||||||
[Back to index](#index)
|
|
||||||
|
|
||||||
This aims to be the missing reference for those who wish to create a Secure
|
|
||||||
Scuttlebutt client from scratch.
|
|
||||||
|
|
||||||
## Discovery
|
|
||||||
A good way to get started is to participate in local network discovery with a known working
|
|
||||||
client on the same network. The
|
|
||||||
[Scuttlebutt Programming Guide](https://ssbc.github.io/scuttlebutt-protocol-guide/#local-network)
|
|
||||||
is a good start, here, with a few things to note:
|
|
||||||
|
|
||||||
1. Some clients advertise multiple addresses separated by semicolons (`;`).
|
|
||||||
2. Some clients advertise alternative protocols than `shs` and use hostnames instead of
|
|
||||||
IPv4 addresses.
|
|
||||||
|
|
||||||
So be prepared to accept variations.
|
|
||||||
|
|
||||||
There also an undocumented "new" style of discovery message.
|
|
||||||
|
|
||||||
## Secret Handshake, Box Stream, and RPC Protocol
|
|
||||||
Now that two clients are aware of eachother, they need to complete a secret handshake.
|
|
||||||
The [programming guide](https://ssbc.github.io/scuttlebutt-protocol-guide/#handshake)
|
|
||||||
is once again a good reference.
|
|
||||||
|
|
||||||
The box stream and RPC protocol can both be implemented from the
|
|
||||||
[same documentation](https://ssbc.github.io/scuttlebutt-protocol-guide/#box-stream)
|
|
||||||
without surprises.
|
|
||||||
|
|
||||||
## Synchronizing Data
|
|
||||||
|
|
||||||
... `ebt.replicate` or `createHistoryStream` ...
|
|
||||||
|
|
||||||
## Rooms
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|
||||||
## References
|
|
||||||
* [https://ssbc.github.io/scuttlebutt-protocol-guide/](https://ssbc.github.io/scuttlebutt-protocol-guide/)
|
|
||||||
* [https://dev.planetary.social/](https://dev.planetary.social/)
|
|
||||||
* [https://dev.scuttlebutt.nz/#/golang/?id=muxrpc-endpoints](https://dev.scuttlebutt.nz/#/golang/?id=muxrpc-endpoints)
|
|
@ -1,65 +0,0 @@
|
|||||||
# Tilde Friends Structure
|
|
||||||
[Back to index](#index)
|
|
||||||
|
|
||||||
Tilde Friends is a mostly-self-contained executable written in C.
|
|
||||||
|
|
||||||
In combines the following key components:
|
|
||||||
- A Secure Scuttlebutt (SSB) client/server. This talks with other SSB
|
|
||||||
instances, storing messages and blobs for anyone visible to local
|
|
||||||
users as they are encountered and sharing anything published locally
|
|
||||||
as appropriate.
|
|
||||||
- An sqlite database. This is where the SSB instance stores its data.
|
|
||||||
The general schema involves a `messages` table, storing mostly JSON,
|
|
||||||
a `blobs` table storing arbitrary blob data, and a `properties` table,
|
|
||||||
storing arbitrary state gleaned from `messages` and `blobs`, generally
|
|
||||||
updated on demand and incrementally.
|
|
||||||
- A QuickJS runtime. The core process runs stock scripts and has access
|
|
||||||
and permission to use all resources. All other processes, which
|
|
||||||
includes everything which runs untrusted code created by Tilde Friends
|
|
||||||
users, are strictly sandboxed in ways similar to how web browsers run
|
|
||||||
untrusted code. All attempts to access potentially sensitive resources
|
|
||||||
are mediated through the core process.
|
|
||||||
|
|
||||||
When run with no arguments, it starts a web server on
|
|
||||||
[http://localhost:12345/](http://localhost:12345/) and an SSB node.
|
|
||||||
|
|
||||||
## Web Interface
|
|
||||||
The Tilde Friends web server provides access to Tilde Friends applications,
|
|
||||||
which are arbitrary user-defined web applications.
|
|
||||||
|
|
||||||
At the top left, in addition to some basic navigation links, is an `edit`
|
|
||||||
link. Anyone can view, modify, and run in-place the code to any Tilde
|
|
||||||
Friends application by using the in-browser editor.
|
|
||||||
|
|
||||||
At the top right, one can `login` (to save work in their own space)
|
|
||||||
or `logout` (proceeding as a guest).
|
|
||||||
|
|
||||||
The rest of the page is an iframe belonging to the application.
|
|
||||||
|
|
||||||
## Special Paths
|
|
||||||
|
|
||||||
- `/~user/app/` - Tilde Friends application paths take the form `/~user/app/`, where `user`
|
|
||||||
is a username of a Tilde Friends account, and `app` is an arbitrary name
|
|
||||||
of an application saved by the given user.
|
|
||||||
- `/~user/app/file` - A raw file in an app.
|
|
||||||
- `/&blobid.ed25519` - A raw blob. Content-Type is inferred for at least
|
|
||||||
a few common image types.
|
|
||||||
|
|
||||||
## Communication Channels
|
|
||||||
Web Browser <-> Core <-> Sandbox
|
|
||||||
|
|
||||||
Visiting an application path delivers stock HTML and JavaScript which
|
|
||||||
establishes a WebSocket connection back to the server.
|
|
||||||
|
|
||||||
At this point, a new sandbox process is started in Tilde Friends, much
|
|
||||||
as a new sandboxed process might be started for a new tab in a web
|
|
||||||
browser. This process has a custom RPC connection to the core process
|
|
||||||
which holds the WebSocket connection to the browser.
|
|
||||||
|
|
||||||
The custom RPC communication between the sandbox process and the core
|
|
||||||
process facilitates passing and calling functions remotely. Calling a
|
|
||||||
function in another process returns a `Promise`.
|
|
||||||
|
|
||||||
An application will typically call `app.setDocument()` at startup to
|
|
||||||
populate the app's iframe in the web browser with its own client web
|
|
||||||
application resources.
|
|
@ -1,63 +0,0 @@
|
|||||||
# Tilde Friends TODO
|
|
||||||
[Back to index](#index)
|
|
||||||
|
|
||||||
## MVP3
|
|
||||||
- Sync status (problem feeds, messages/seconds stats, ...)
|
|
||||||
- app: wiki
|
|
||||||
- app: public blog
|
|
||||||
- Content-Disposition: download
|
|
||||||
- remove SSB credentials
|
|
||||||
- export SSB credentials
|
|
||||||
- initial: better empty news screen
|
|
||||||
- initial: remembered wrong user across login/logout
|
|
||||||
- initial: bad experience when following nobody
|
|
||||||
- make a cool independent app
|
|
||||||
- indicate when workspace differs from installed
|
|
||||||
- / => Something good.
|
|
||||||
- update docs
|
|
||||||
- audit + document API exposed to apps
|
|
||||||
- fix weird HTTP warnings
|
|
||||||
- channels
|
|
||||||
- placeholder/missing images
|
|
||||||
- no denial of service
|
|
||||||
- package standalone executable
|
|
||||||
- editor without app iframe
|
|
||||||
- sequence_before_author -> flags
|
|
||||||
- linkify ssb: links
|
|
||||||
- perfect rooms support
|
|
||||||
- connections 2.0
|
|
||||||
- make a better connections API
|
|
||||||
|
|
||||||
## Maybe Done
|
|
||||||
- blob_wants 2.0
|
|
||||||
- image downsample
|
|
||||||
- app: todo
|
|
||||||
- app: build archive
|
|
||||||
- update README
|
|
||||||
- administrators config
|
|
||||||
- apps name characters
|
|
||||||
- initial: can't switch to account when there is only one
|
|
||||||
- get tarball under 5MB
|
|
||||||
- rooms
|
|
||||||
- initial: doesn't refresh when create identity
|
|
||||||
- tf account timeout why
|
|
||||||
- ssb don't overflow boxes
|
|
||||||
- jwt for session tokens
|
|
||||||
- linkify https://...
|
|
||||||
- emoji reaction picker
|
|
||||||
- expose loads of stats
|
|
||||||
- confirm posting all new messages
|
|
||||||
- multiple identities per user, in database
|
|
||||||
- auto-populate data on initial launch
|
|
||||||
- make the docker image good / test it / use it
|
|
||||||
- leaking imports / exports
|
|
||||||
- file upload widget
|
|
||||||
- keep working on good error feedback
|
|
||||||
- build for windows
|
|
||||||
- installable apps (bring back an app message?)
|
|
||||||
- sqlStream => sqlExec or something
|
|
||||||
- !ssb from child process?
|
|
||||||
|
|
||||||
## Done
|
|
||||||
- update LICENSE
|
|
||||||
- logging to browser
|
|
@ -1,62 +0,0 @@
|
|||||||
# Tilde Friends Vision
|
|
||||||
[Back to index](#index)
|
|
||||||
|
|
||||||
Tilde Friends is a tool for making and sharing.
|
|
||||||
|
|
||||||
It is both a peer-to-peer social network client, participating in Secure
|
|
||||||
Scuttlebutt, and an environment for creating and running web applications.
|
|
||||||
|
|
||||||
## Why
|
|
||||||
|
|
||||||
This is a thing that I wanted to exist and wanted to work on. No other reason.
|
|
||||||
There is not a business model. I believe it is interesting and unique.
|
|
||||||
|
|
||||||
## Goals
|
|
||||||
1. Make it **easy and fun** to run all sorts of web applications.
|
|
||||||
|
|
||||||
2. Provide **security** that is easy to understand and protects your data.
|
|
||||||
|
|
||||||
3. Make **creating and sharing** web applications accessible to anyone with a
|
|
||||||
browser.
|
|
||||||
|
|
||||||
## Ways to Use Tilde Friends
|
|
||||||
1. **Social Network User**: This is a social network first. You are just here,
|
|
||||||
because your friends are. Or you like how we limit your message length or
|
|
||||||
short videos or whatever the trend is. If you are ambitious, you click links
|
|
||||||
and see interactive experiences (apps) that you wouldn't see elsewhere.
|
|
||||||
|
|
||||||
2. **Web Visitor**: You get links from a friend to meeting invites, polls, games,
|
|
||||||
lists, wiki pages, ..., and you interact with them as though they were
|
|
||||||
cloud-hosted by a megacorporation. They just work, and you don't think twice.
|
|
||||||
|
|
||||||
3. **Group leader**: You host or use a small public instance, installing apps for
|
|
||||||
a group of friends to use as web visitors.
|
|
||||||
|
|
||||||
4. **Developer**: You like to write code and make or improve apps for fun or to
|
|
||||||
solve problems. When you encounter a Tilde Friends app on a strange server,
|
|
||||||
you know you can trivially modify it or download it to your own instance.
|
|
||||||
|
|
||||||
## Future Goals / Endgame
|
|
||||||
1. Mobile apps. This can run on your old phone. Maybe you won't be hosting
|
|
||||||
the web interface publicly, but you can sync, install and edit apps, and
|
|
||||||
otherwise get the full experience from a tiny touch screen.
|
|
||||||
|
|
||||||
2. The universal application runtime. The web browser is the universal
|
|
||||||
platform, but even for the simplest application that you might want to host
|
|
||||||
for your friends, cloud hosting, containers, and complicated dependencies might
|
|
||||||
all enter the mix. Tilde Friends, though it is yet another thing to host,
|
|
||||||
includes everything you need out of the box to run a vast variety of interesting
|
|
||||||
apps.
|
|
||||||
|
|
||||||
Tilde Friends will be built out, gradually providing safe access to host
|
|
||||||
resources and client resources the same way web browsers extended access to
|
|
||||||
resources like GPU, persistent storage, cameras, ... over the years.
|
|
||||||
|
|
||||||
Not much effort has been put forward yet to having a robust, long-lasting API,
|
|
||||||
but since the client side longevity is already handled by web browsers, it
|
|
||||||
seems possible that the server-side API can be managed in a similar way.
|
|
||||||
|
|
||||||
3. An awesome development environment. Right now it runs JavaScript from the
|
|
||||||
first embeddable text editor I could poorly configure enough to edit code,
|
|
||||||
but it could incorporate a debugger, source control integration a la ssb-git,
|
|
||||||
merge tools, and transpiling from all sorts of different languages.
|
|
Loading…
Reference in New Issue
Block a user