What is Frames?
Frames is a video sharing app for the SafeNET. You can find its home on github here: GitHub - Frames-Proj/frames. It is implemented as an electron app and is built on the Frames Protocol. Both the app and the protocol are designed to encourage connectivity between videos so that users can easily traverse a web of videos. The main way that Frames does this is by structuring videos in a reply tree. Users are encouraged to reply to existing videos and engage in a conversation.
Can I see Frames in Action Right Now?
Sort of. We’ve been testing frames against a pinned version of the mock launcher (which you can get here: GitHub - Frames-Proj/mock-safe-launcher: A pinned version of the Safe Launcher for use testing Frames). In the early days we were able to test against the live network a bit, but we have not been able to test the full-scale app against a live network. I’ve made a short demo video showcasing the capabilities of frames, which you can find here: Frames Demonstration - YouTube. Everything you see in the video is done using the NFS, DNS, structured data, appendable data, and data-id APIs.
If you just want to muck about with Frames yourself, you can clone the mock-safe-launcher repo listed above and use the provided scripts to build yourself a launcher. Then the following steps should get you to the point of playing around with frames
In one terminal, run the run.bash
script from the mock-safe-launcher repo. Wait for the launcher to pop up (it may take a while).
In another terminal do:
git clone https://github.com/Frames-Proj/frames
cd frames/app && make setup && make
npm start
Now play around.
What Still Needs to be Done?
Lots of stuff! The most obvious is migrating the backend over to the new authenticator API, which we plan on doing over the summer. Beyond that, the user-profile stuff needs more polish and thought, and we need to think harder about attack scenarios. We would really love to see contributors from the community pitch in to get this done. I can see Frames being a strong early app for the SafeNET, and I want to see it get done.
How close to ready is Frames?
If it were not for the need to migrate to the authenticator, I would say that Frames is feature complete. There are still a few bugs that would need to be worked out before a release, and we would need to do a beta cycle or two where we ask folks to break the protocol. Obviously, Frames can’t be released until the network is released and Frames itself gets migrated to the authenticator workflow.
How can I start hacking on Frames?
The app code lives in the app
directory. Our hand-rolled SAFE client lives in db/low-level
, but you probably won’t have to touch that. The app itself is built with React and written in typescript, both of which are pretty easy to pick up if you have programming experience. The Makefile in the app directory contains several useful commands for building the app. I usually run make watch
while I’m editing code so that any file changes trigger a recompile automatically. All of the app code lives in app/client
. The protocol code as well as general utility code lives in app/client/ts
while the UI code all lives in app/client/components
.
It can be a little hard to find your way around the git repo, so I’m happy to hop on a video call to help anyone who is interested in getting set up for frames development.
Why Video Sharing?
Video sharing seems like a fairly simple thing that people have been shown to want.
Will Other Apps be able to use the Frames Protocol?
It will be a little tricky to do this right off the bat. The code that implements the Frames Protocol is fairly baked into the app itself, but our long term plan is to release a separate {type,java}script library that others can use to interact with Frames data directly. I’m not sure how much this has been discussed on the forum, but it seems obvious to me that one of the strongest aspects of the SafeNET is the fact that all apps share the same data store so easy interaction is both easy and inevitable. This is a huge feature of the SafeNET from an app perspective, and we definitely plan to support it.
Do you have any ideas about the app development experience?
Thanks for asking! I plan on making a different thread to talk about my wishlist as an app developer, and trying to start working towards a list of best practices for creating SAFE apps.
How Much Time Can You Spend on Frames?
I have been working on Frames on the train to work for the last couple of days, but I have not have much time to spend on the forums. I plan on continuing to work through the summer, but I may be fairly show in looking at the forum and responding to questions. I will try to find the time to run through and answer a bunch of questions all at once. My sponsors know a lot about my vision for the project, and I’m sure they can speak to most of the questions anyone could have.
Thanks and Apologies
I would like to thank the project sponsors @Nigel and @BIGbtc for lending their support through the project so far. I would also like to thank @whiteoutmashups for hoping on a few video calls to talk about the app with me. I would also like to apologies to the same folks for making this post so late (to make up for it there are new features as you can see in the linked video when I play around with the ‘me’ and ‘history’ pages).