The hidden beauty of @protocol namespaces

Interview by Tyler McNierney

Heading with title

Introduction

Tyler M: Let’s start from a big-picture perspective. What was your vision for apps that are developed on the @protocol?

Colin: Since the beginning, what we wanted to do was allow people to own their data in a simple fashion, with a data model that was a little bit more human-like. If you ask a computer a question, you’ll get the correct answer every time, but if you ask a human a question, depending on who’s asking it, you’ll get a different answer. Before the @protocol, there was no way of doing that in computer science at the protocol level. By moving this interaction down the stack (from the application layer), the Internet can effectively log into you and ask the same questions. You can then identify who’s asking you questions and give different answers. Once the @protocol was developed, we alone couldn’t imagine what could come out of it. The reason why we’re participating in hackathons, appathons, and speaking to as many people who will listen to us is because it sparks new neurons, opens new pathways, and causes new apps to just emerge. Kevin and I find that incredibly exciting — the fact that we can create a new technology, know it’s important, and not know what amazing things somebody’s going to do with it.

Tyler M: So, what exactly is a namespace, and how is it used in software development?

Tyler M: How exactly do namespaces work with @protocol applications?

Colin: The @protocol namespace is a little bit like an iceberg. You may only see “phone@colin” in the namespace, but there are a whole bunch of things in that namespace (e.g. specifying to whom you’re giving permission for your phone number). We tried to make it as simple as possible for the developer, but behind the scenes there are a lot more complications, so a lot of engineering happened to make sure that the namespace is accurate and the right people get the right data at the right time.

A complete example of an @protocol namespace
A complete example of an @protocol namespace
Caption: A complete example of an @protocol namespace. The key length can be up to 255 characters, leaving 31 spare characters based on its current composition. If you’ve seen any of our demo apps, the “namespace” variable you may find in our configuration file is actually the “App NameSpace.” This string combined with the “Key” string has a 110 UTF-7 character limit, while the “Shared With” @sign and “Data Owner” @sign both have a 55 UTF-7 character limit. Reading this namespace into English — “@alice is using the Buzz app, and she’s shared her profile picture with @bob.”

Tyler M: That brings me to my final question concerning the security of @protocol namespaces. What precautions and safety features were considered in its design?

Kevin: From a namespace perspective, “phone@colin” is something that you can look up. As Colin said, there are additional things under the cover (like “phone@colin” for who) that make these namespaces polymorphic because there are different values for different combinations of “phone@colin” (e.g. “phone@colin:@tyler” or “phone@colin:@kevin”).

Tyler McNierney is a consultant at The @ Company as well as a UC Berkeley student studying electrical engineering and computer science. He is a firm believer in The @ Company’s mission statement and decided to remain with the company after the end of his summer internship. In his free time, Tyler M. loves to play piano, write music, and play Super Smash Bros. Ultimate on his Nintendo Switch.

Learn more about The @ Company from our GitHub repo.

Now for some Internet Optimism