a *net that syncs~ https://xj-ix.luxe/wiki/bbnet/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xj9 b2fd4baa77 Merge branch 'nyu.tokyo' 6 months ago
scripts let's all love lain 6 months ago
src Merge branch 'nyu.tokyo' 6 months ago
.couchappignore working couchapp! 1 year ago
.couchapprc working couchapp! 1 year ago
.gitignore basic app frame, redo script 6 months ago
HACKING.gmi add hacking 6 months ago
LICENSE revamp with new ideas 11 months ago
README.gmi fix typo 6 months ago
UNLICENSE add support note, license 1 year ago
app.do add favicon and shit 6 months ago
bbnet.ndtl use ndtl config, fix parser bug 10 months ago
elm.json add useful elm libs 6 months ago
mkfile basic app frame, redo script 6 months ago


# bbnet (ᴎoT THɘ wiᴙɘb)

=> gemini://xj-ix.luxe/posts/2020-11-17-nyu-tokyo-roadmap.gmi roadmap
=> gemini://xj-ix.luxe/posts/2019-programming-for-the-next-billion.gmi programming for the next billion

every (chat) app sucks because engineers think they need to build your interface for you! bbnet takes a different approach: here you can create and share virtual spaces that work however you need them to, over whatever protocol.

> some chat networks have terms of service which prohibit third party clients, so these won't be possible to support (*cough* discord).

if you're thinking, "this sounds kind of like google wave" i wouldn't correct you. that's not the focal point of the project though. messaging is an interesting and useful *application* for experimenting with practical end user programming.

=> gemini://xj-ix.luxe/wiki/socialfs/
=> https://git.sr.ht/~raingloom/socialfs

## avi chat

avi chat will only be supported by some networks because your client needs to exchange background messages with other clients so that avatars can interact. bbnet wants to be a good citizen of the network it communicates with. within the scripting environment, each channel is annotated with a type that indicates what features it supports. while there is no way to explicitly prevent a component from being impolite and lying about its capabilities, the typed interfaces at least allow end users to confidently assemble well-behaved interfaces.

* typed interfaces
* typed widgets
* typed high-level functional components

the runtime environment is highly constrained to allow easy composition.

## trad chat

a stream of text and a list of members, what else? (inc uwu emoji obv)

## pad

> gemtext

## media viewer

> accidental cytube

## lain scripting

=> https://wiki.xxiivv.com/site/lain.html lain

(add (sub 5 3) 2) ; Basic Math
(λ (a b c) (concat a b c)) ; Lambda
(def obj:foo "bar") ; Creating object
(obj:foo) ; Reading object parameters
(def _sidebar (dom:create "sidebar")) ; Creating DOM elements

## mirrors

=> https://git.intrfc.com/xj9/bbnet

## see also

=> gemini://gemini.circumlunar.space/docs/specification.gmi gemini spec
=> https://donate.sunshinegardens.org/?project=8 Donate with fosspay