Upspin and a future of the Internet

Video thumbnail (Frame 0) Video thumbnail (Frame 1790) Video thumbnail (Frame 3657) Video thumbnail (Frame 4752) Video thumbnail (Frame 6899) Video thumbnail (Frame 10642) Video thumbnail (Frame 19927) Video thumbnail (Frame 20482) Video thumbnail (Frame 25324) Video thumbnail (Frame 27591) Video thumbnail (Frame 30145) Video thumbnail (Frame 31250) Video thumbnail (Frame 32373) Video thumbnail (Frame 33589) Video thumbnail (Frame 34316) Video thumbnail (Frame 35712) Video thumbnail (Frame 37344) Video thumbnail (Frame 38803) Video thumbnail (Frame 42943)
Video in TIB AV-Portal: Upspin and a future of the Internet

Formal Metadata

Upspin and a future of the Internet
My vision of Rob Pike's Upspin as a basis for a decentralized Internet
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
by At: FOSDEM 2018 Room: H.1308 (Rolin) Scheduled start: 2018-02-03 12:30:00+01
Word Internetworking Projective plane Website Area
Mobile app Game controller Information Software developer Server (computing) Projective plane File format Data storage device Client (computing) Database Database Data storage device Web 2.0 Blog Internet service provider System programming Information security Computer architecture Asynchronous Transfer Mode
Mobile app Implementation Server (computing) Functional (mathematics) Game controller Identifiability Computer file Software developer 1 (number) Data storage device Client (computing) Computer programming Zugriffskontrolle Googol File system Endliche Modelltheorie Physical system Point cloud Intelligent Network Mobile app Email Axiom of choice Server (computing) Software developer Data storage device Core dump Client (computing) Total S.A. Cartesian coordinate system Proof theory Digital photography Googol Internet service provider Interface (computing) Website File viewer Optical disc drive Reading (process) Local ring
Email Code Multiplication sign Mereology Neuroinformatik Sign (mathematics) CNN Pattern language Damping Information Process (computing) Physical system Family Email Public key certificate Fatou-Menge Domain name Data storage device Electronic mailing list Bit Public-key cryptography Type theory Digital photography Internetworking Hash function Interface (computing) Website Right angle Encryption Server (computing) Functional (mathematics) Mobile app Game controller Implementation Computer file Denial-of-service attack Maxima and minima Directory service Metadata Sequence Zugriffskontrolle Local Group Revision control Internetworking Operator (mathematics) Energy level Spacetime Communications protocol Address space Installation art Execution unit Key (cryptography) Information Server (computing) Interface (computing) Computer network Directory service Group action Leak Error message Event horizon String (computer science) Communications protocol
Point (geometry) Asynchronous Transfer Mode Server (computing) Mobile app Installation art Computer file Multiplication sign Curve Virtual machine Directory service Client (computing) Login Web 2.0 Sign (mathematics) Googol Process (computing) Configuration space Information Maize Library (computing) Point cloud Curve Email Key (cryptography) Server (computing) Data storage device Computer network Bit Cloud computing Directory service Inclusion map Plane (geometry) Word Web service Internet service provider Configuration space Website Optical disc drive Library (computing) Asynchronous Transfer Mode
Mobile app Functional (mathematics) Computer file Web browser Client (computing) Mereology Web 2.0 Intrusion detection system Pattern language Data conversion Beta function Key (cryptography) Interface (computing) Software developer Computer file Electronic mailing list Shared memory Digital photography Error message String (computer science) Graphics software Interface (computing) Synchronization Self-organization Musical ensemble Library (computing)
Personal identification number Classical physics Mobile app Computer file Information Code Electronic mailing list Client (computing) Audio file format Client (computing) Cartesian coordinate system Mereology Binary file Uniform resource locator Error message String (computer science) Configuration space Error message
Axiom of choice Server (computing) Mobile app Game controller Implementation Link (knot theory) Source code Data storage device Web service Energy level Sanitary sewer Point cloud Installation art Concurrency (computer science) Web page Data storage device Directory service Error message Content (media) Software repository Web service String (computer science) Interface (computing) Energy level Communications protocol Reference data
Sensitivity analysis Complex (psychology) Game controller Mobile app Computer file Digitizing Projective plane Information privacy Neuroinformatik Number Web service Operator (mathematics) File system Video game
Point (geometry) Collaborationism Digital photography Mobile app Web service Projective plane Point cloud File viewer Cartesian coordinate system Descriptive statistics
Mobile app Server (computing) Group action Interface (computing) Collaborationism Electronic mailing list Ultraviolet photoelectron spectroscopy Combinational logic Data storage device Directory service Web 2.0 Facebook Digital photography Web service Web service Internet service provider Universe (mathematics) Information security Reading (process) Physical system
hi thank you I'm very pleased to talk today so in such a great room there is so many people waiting outside it's really honor thank you for to Francis for making this possible today I will talk about a project I really like and I think that can change the way we use the Internet before that just a quick word of introduction about myself so my name is ville de cheveux I'm working in in Paris for for a big French website Hong Kong well we are doing good there but we're not this talk is really not about about what I'm doing there so yeah just a quick overview of what we will talk about so the the project I'll talk to you about is up spin first of all why talking about spin why does spin
exist right now then we'll have an overview of how it's working and and then we'll do we'll see what we can do in practice with it just as a regular user or as a good developer and and then we will have a quick own conclusion so why up spin so up spin is the new project from Rudd pike I guess most of you know who robbed my kids but maybe not all of you is the is the husband of a French the the creator of the gofer so so last year there was two passed about about ABS pin the first one was on published on the Google security blog last February introducing the concept and and then in last October there was the original manifesto that Rob Pike wrote eight years ago and that where I heard about it and that's where I I found in love with that with that project so the reason behind
up-spin really is the the information side of architecture that we've fallen into slowly the the promise of of the modern world of the mode of the modern web was remix ability and creativity but actually we have been we have been moved into you into databases that we cannot access and that we cannot control we have become dependent on the app and the apps of the storage providers that that we use and we are really dependent on what these people are willing to to offer us I think we have we have lost
quite a lot along the way just to quote a few a few ones I think we should be able to to use our data with any apps that that we want especially the one that we developed for example and I think it should be very simple to share any kind of data with with anybody we want it's it's it's funny for me to think that it's not easy like to just create a public website just from a note that you have on Evernote or anywhere and from a couple of Google photos or something like that I think it should be it should be trivial another another program is that is the the the actual apps developing developing something like google photo is really is very something complicated and and yet every new storage provider is trying to to read you the the same photo viewer the ins kind of thing and I expect them to fail because they don't have the the years of development of Google photo for example storage and application should be two different businesses and we should keep them separated so the model that up-spin
is is pushing is a model with data at its core and and the apps are just coming next the apps are just like regular user playing with with data reading and writing to it it's by no means a new approach it's exactly what local file system is but it's something that we've never truly had in remote systems and it's something that we are being there is being taken away for example on the mobile devices so the two basics that app spin is offering is a universal naming and an access right so every file as a global as a global identifier that you don't need to to worry about sharing with with other people so it starts with you with the the mail of the of the person that owns that file and then then it's just a regular unix-like path and and the the access control about it is really something is is another thing that comes with with I've spin and that you should consider salt and stop wandering the mouth so let's let's have an overview of how it's actually what works the most important thing about app spin is actually the the protocol and as you would expect coming from Rob Pike it's very simple so it's just three interfaces for for a total of eleven methods and that's really all you need to to know for building any system that works with the rest of the of the up spin world you know there isn't still that yeah there is a need for a for a for a proof of concept for a reference implementation and that's exactly what the up-spin team has been has been doing doing for the past for the past years so there is a reference implementation for all the clients and servers and also there is a collection of tools that that adds some sand functionalities some of the basic functionalities to up spin so
up spin is built is really built around go and the best reference is actually the go code and for the for the definition of the protocols it's basically the the interfaces from the app spin protocol so so very quickly so the key server is just it's just looking up and I'm dating a user information and the store server is basically the same thing but with with data the the dear directory server is a bit more complicated that I won't go through all them but it's basically that's where the that's where the solving of the name is of the global name is is done and and then you have some yeah other other other function but so for example yeah if you need to if you need to develop well basically for the for the global use you don't really need to really know how it's happening behind what is it happening behind but for example you if you if you are making a server from scratch then you will really need to know how how it works behind but so let's let's quickly see how how we can get a file for example so the first step is is with the the key server so you do a leak look up folder for the user and what you get in exchange is the user public key and the directory server address then so that folder for the user part then the next part will be the lookup of the file so then at that point either previous the previous key server is just one one key server for the whole up-spin so that's unknown known address key that up spin that IO but then here here you are contacting the directory server of the user the the one the information that you had just previously looking at looking up a file would give you back his name is metadata and references and stores server addresses that's actually where the first access control is is checked the directory server at least in the reference implementation will check that you have rights to ask for the photo store references and then you can just get the reference so most of the time in just it's just a hash or hash and and and then the store will just give you back bytes most of the time this bytes will be encrypted so you need to so on you need to have the the key and you'll have the key only if you can access this file Yuja another example for example listing a directory this is an operation that you do only with the directory server and thought and then it will return the list of names and metadata and reference to store just just as before what you need to know is how to control the - the sharing so I've spin defines an Access file when you place this file in in a directory then this access rights will apply to all the fighters of that directory and also of those files in the sub directory if knows our access file is uncontrolled this this access value store in the directory server and is heavily used by the directory server to to weasel the information if the user that is requesting the file don't have the right and and then the the access control father at the at the store level is done through keys basically you create you create a version of the secret key / user that is there is supposed to to access the file so just a note it's not it's not a network protocol some misunderstanding about I've spent some time is that it provides a special way to share your data from your from your computer or this kind of thing like ipfs would do for example but this is just this is just a protocol it doesn't define how your server should be accessible so you need to have a you need to have a public server and HTTPS is mandate mandatory yes so let's see how how you can use it as a user so so there are two steps in the setup first first one is is signing up the user so it's basically creating your key pair and verifying your email all of it is just putting a new user into the key server and then you need to deploy your server so it's installing the directory install servers on your hosts and make them accessible to you to the Internet and the best way to do to do is to use app spinner UI so you can download it from the official website or just install it with go get if you have a special system so the first time you open it you will you will
have the the sign up without it so it's very nice you can just type in your email and stuff well then it creates
your key your keys and in send you just one email that's the only time they will use the email for for just verifying that you own the email at that point the
second step is a bit more complicated but there are some there is some some nice without - to do it so in the future well Epstein is very early stage so right now this is this is quite it's not very simple especially for wide audience but in the future its most its most likely there will be some some server providers and there is already one that is building it's called a jungle it should be it should be live soon and today you can you can just deploy your server into one of your servers or you can also use the Google cloud platform it's really everything is done from up spin UI and it's all deployed automatically also you can just use up spin as a read-only mode so at the end of the setup this is what what happens to your PC so you have you have this configuration file that is created so it just it's just the configuration of what user you're using and what are your dear install servers and and also in your in your data SSH folder you will have the the elective curves keys that are created so all these files will be used by by your apps pin clients running locally you have just a word about the the keys the tantras kissa kissa ever the logs are public so here are what you can see on the on the on the website so this is the first sign up you can notice the new directories and store servers and this is the second logs with with the actual with the actual server that I created so now just some of the tool that you can use straight away the most common is the apps pin FS so it just you can just install it as as the all the other tools and it just amounts a folder on your machine so from this you can you can access your own your own files but you can also access anybody's file for example road bikes says is easy months is light from an iTunes library with up spin FS and the goal is to mount your old whole home server directory well then these two other tools are useful the you can install them the same app spin UI is the you web file explorer and app spin is just the general command-line interface with a lot of commands some some unofficial tools for
now there is really not a lot so when I expect more coming in the future so for example you have a browser and this is a music player I I've done entire that I'm using actually dating
so how does it play as a as a developer so let's let's build a client app so a client app is is an app that access data through web spin it uses the client interface that the the official that the official library is using it gives you a lot of helper functions basically can do everything about reading listing and writing data so it so it reads the the conf and key file that that we've created before and any you can it's it's a the part of your app that will access app spin so for example here are some IDs for for clients may be something that synchronizes the photos that you have on your on your phone this one will be right on the into your apps pin data maybe you photo galleries you to to see your files a sharing organizer and conversing and maybe your photo editor to do some little tweaks on your photos so you know the the different steps that
you need for for creating it it's actually very simple so for example if you want to make an application that just reads into apps pin and just serve it into through HTTP then you just need to to initialize your configuration then create your clients and then in your handle thank you we'll just we just open the file and copy it straight away so it's it's yeah it's it's very simple so the best the best way for initializing the configuration is to is to load it forward from a file so just the same file as the one I showed you before and then the client just takes the configuration file that was actually the the the hardest part of the of the code the rest is very simple so this is just a classic HTTP handler and the only thing is that you can you can see the client that open and then the rest is just known yeah of course there should be probably some some more some better error handling to know if the because here it's just not found better maybe that information is withheld or maybe maybe it's a network error so yeah listen and serve answer
so just with that part of code it compiles everything and everything and then you can just try out some of the files that are accessible and yeah straight away it will work with any of the of the apps bin files that that you can access so it's a very easy way to to make application that that can play with data and and yeah from from now on you can you can already there is a lot of other thing that you can do with it like list all audio files maybe filter some of the files runs code on the fly and this kind of thing the other thing that
you can build our the server and storage so a server app is something that implements the directory install service of the up spin protocol and that's all the rest is the rest is you are just free to do whatever whatever back end you want so you can check the the access control if you like and and then any data source of your of your choice it can be just a link to another app spin server or maybe it can be the github API for serving Geeta Geeta issues all these kind of thing the
storage is also something that is that is very well the the store the the server is how to implement actually but a storage is something quite easy to you to do it just the low level implementation of how to store reference data so there is already a lot of implementation with s3 Google Drive GCP and scanner same if you want some example of this kind of implementation the best is to go to the official repos so for example in the experimental repos you have an issue server now you can see the Dropbox storage for example so as a conclusion never before we heard so much
of our life on digital support and I think there are more and more projects that want to use sensitive data for example medical data I think we really need to get back the the control on who access our data and we should stop trading privacy for for usage another
thing you know I wouldn't I wanted to say is that the yet the computer world has assumed that the wide audience is just getting number and file system have been hidden from from the mobile devices and connecting and and the data and services are just hidden behind limited apps that are really focused on consumption I think we should give back complexity to the to the wide audience because sharing while accessing files and sharing data and this kind of thing are not complex complex operation and I believe everybody should be able to to deploy their own way right for example and and yeah I want to
I wanted to give great UX to everybody and and I think the key point here is collaboration doing always doing this during the the service together and I think I've spin can be a centralized way to to have all our all our applications using the same the same storage and we'll just be compatible between each other so if I think for example a photo viewer of your application can be can be really general and we don't care about how the data is thought behind it just need to use app spin and then we can walk together I believe so yeah that's all for for me share some questions
[Applause] no I didn't hear about about Hinault said the the project I realized before that was cozy cloud which also had like data as a center oh sorry so the question was there are some other there are some other projects too that wants to do the same thing such as and hosted right well that's a big description in the in the spin community there are there are some issues on get about this the DF spinner team is always
answering that the the combination of universal security and shareable aspects of a spin are kind of UNIX where I what I like is the is the ambition of app spin and also the simplicity of the interface yeah I think the the the most important thing is to to have some storage provider while some some ups pin provider that can create you service for people that knows about IT or even people none none none IT people too and yeah I don't know how to have some some some nice apps and so I think I think an easy maybe a transition would be to to to create some some up-spin servers that can just plug on on through already existing systems such as Facebook or Google photos of this kind of thing and yeah if it can be transparent and if you can just access your Google photos or your Facebook feeds through web spin without having to deploy your own server than this kind of thing then it maybe it can be like the killer feature that would that would spark the widespread adoption or something like that but uh already I'm I'm just using it for myself right now and it's already quite nice yeah having every everybody here will be even better on fashion yes now giving permission is only for the for the owner of the directory and then you can choose what kind of permission you want to give just like read list all right but you cannot you cannot only the owner of the directory can modify the access yeah exactly yeah thank you [Applause]