 Hopefully everyone can see the screen. It's not letting me do the screen that it's supposed to, but of course that always happens five seconds before you give a presentation. So my name is Jacob Cook, and I'm the director of the Citizen Web Project, and we're a collective of a few different developers from around the world that are working on some projects to help decentralize the internet, bring it back to the roots a bit, away from the centralized points of power here and there. Now that we're on that subject, I'll try not to say, say mean things about the people that are hosting us tonight, but yeah, that's the essence of the project is about decentralizing the internet. And ArcOS is our core project that we're working on right now. It's an operating system that's based on Linux, based on Arch, but the core of the operation, it happens through a Python level above the operating system, which I will go over a bit later. So what is ArcOS? Like I said, it's an operating system that's primarily geared towards embedded machines. So if you know what the Raspberry Pi is, it's a $35 microcomputer about the size of a credit card, and you can do a whole lot of things with it, but you can also run a server on it. And we're not just targeting the Raspberry Pi either. There's lots of other ARM platforms that we're working with. Some people like to use the Beagle board, some people like to use the QB board. So there's a whole ecosystem there that we're targeting first and foremost. Eventually it'll be supported on full-sized x86 machines as well, but we're starting with ARM. And the reason for that is because like I mentioned before, the Raspberry Pi is only $35. So it's a pretty cheap thing to start out with, and that makes it very accessible. Like Frédéric mentioned before, Firefox OS, they're trying to target cheaper phones, cheaper devices in order to get them in the hands of more people, especially in developing regions. And that's one of the things that we want to do while working on ARM and the Raspberry Pi in particular. So when you use a server nowadays, you should be used to seeing something kind of like this. This is a screen grab from the Matrix, and I don't know if you can see, they're actually using Nmap in there, which is one example of directors actually using something that really exists in their terminal outputs for movies. But most of the things that you see, that you do on a server, it's gonna be on the command line. And this is because, I mean, there are some visual server managers out there. There's Webbin, among other things. Hi. No, no, go ahead. There's some people just having trouble hearing it. Oh, sorry, I can. Is that better? Is this better? Yes, okay, I'll stand close to the mic, sorry. Where was I? Oh, yes, so managing a server is primarily done by the command line. And there are visual server managers that you can use to make this experience a bit prettier at least, like Webbin, Agente, which is what our project was based on when it first got started. But if you'll notice, if you use these things on a day to day basis, it doesn't make the process easier. It puts a visual interface on the terminal just like any other operating system would do with Linux, but it doesn't manage things in an intuitive way for people. It doesn't say, okay, here's an application, here's how you install it. They don't know what app get means. They don't know what any of this other stuff means. So what we're trying to do is really focus development on a self-hosting platform, server platform, but geared towards people who are not necessarily systems administrators. They don't have the time or the money or the education or any of the things required to do this, but we believe that they still should have the ability to self-host their services in certain ways if that's what they want to do. In our opinion, it's kind of the last frontier of personal computing. You have the personal computer that was developed in the 80s, 90s and in the past few decades that really brought computers into the homes of every single person. And what we wanna do is bring servers into the homes of individual people in sort of the same way. And if we can't get the servers into the people's homes then at least provide them the way to rent space, but still have the ability to use the decentralized infrastructure that our system is promoting and wants to take advantage of. So like I said, it's the terminal which is the de facto right now if you wanna use a server but we wanna make it something a bit more app storey. And the project is in a very early stage right now and this is just an example of the first run wizard that you might see when you start to use it. And it's a bit rough around the edges. It looks a little bootstrappy if you notice but this is just an example of the kind of experience that we want to do. We want to translate from the command line to something that gives a visual front end that's easy for people to see, easy for people to understand that they can click and install the different applications that they want to use just like an app store just like the Google Play Store or whatever store you're used to using on your phone or on your computer. So here, I don't know if you can see it very clearly but it's just, I have selected here you want to install a database type or I want to install a chat server, I click that and that's where we go from there. None of that is necessarily very new. There are things that do things like installation of applications by interfacing with the OS's package management system as a backend like Ansible or Juju or other things like that but what we're doing is pairing the power of that kind of automated configuration with the visual front end that people will be able to see and understand and is easily accessible. So these are all the things that you can do with it right now. You can have a file share whether you're using it for Windows machines like Ensemble or you want to host them for having a kind of an alternative drop box. You can host your own email server, alternative to Gmail, calendar, contacts and so on. Chat server, you can host your XMPP chat server which will interface with the GChat I think still at the moment but as a replacement for things like Facebook chat and so on. RSS Reader, you can host your websites, your blogs there's lots of different types of web apps that we are working on and there's quite a few that we have now such as WordPress and soon we'll have interfaces for hosting even more kinds of content, photos which could potentially replace Flickr for you, different types of decentralized social networks. You can host your Git projects on the server itself and have a visual interface by using GitWeb or GitLab or something like that. So yeah, this is just an overview of the kind of things that you can do with it now and it should hopefully reinforce the fact that it's not just web applications and it's not just server applications either, chat, email and so on. The idea is to create a platform and a framework that allows you to run any kind of server application that you want, website or otherwise and have it in a uniform, easy to use visual interface. So you might be asking yourself why in the world would I self host even if it's supposed to be so easy? This is a great question. Self hosting is, as I referred to before, in my opinion is kind of the final frontier of the current phase of proliferating data among all of the different parts of the population. Everyone's using Facebook more, everyone's using Flickr more, people are sharing more and more information but we have less and less control over how that information is seen, less and less control over how that information is secured, how it's presented to people, how it works with other kinds of servers that should be sharing the data between the different types of services. So self hosting can be a way to change that kind of current stasis that I feel like we're in in a lot of different ways. And this is a diagram that I believe comes from the original DARPA infrastructure that they were studying when they were looking at making the internet originally. And on the left you have a centralized network, in the middle you have a decentralized and on the right you have a distributed. And one of the reasons why we prefer a decentralized or a distributed model, at least decentralized, is that because with the centralized you see everything connects there in the central point and you might say okay well what is that central point? Well that central point can be a data center for Facebook or a data center for Bing or Microsoft or Yahoo or one of those other web companies. But the point is that you have all of these different kinds of clients that are connecting to servers that are all located in one central location. And this allows for the individuals to control it. And that's awesome because when we see companies like Microsoft and Yahoo and so on, when they control that they are able to make an experience that works for people because they can set things up on their own terms. And that's great and that's really what has brought more and more people to be sharing their information online and connecting with people from far away, which is very important. However, there are problems with this model. There are problems with the centralized model, lots of them. And there's the security aspect like we saw with the NSA revelations that have come out revealed by Mr. Snowden. All of these different organizations could potentially have access to your data if there's a centralized system. And yes, you always have to employ the proper security protocols, you have to employ encryption and so on, but there are ways around these things through the cracks that appear in the surface. And this is one of the weaknesses of a centralized model. Now of course it's obviously a weakness of any kind of model, centralized or otherwise, but the thing is when you have data for millions and millions and millions of people in only a few concentrated locations that creates very, very easy targets. It makes it easy for any nefarious organization, whether it's a group trying to do mass surveillance without warrants or if it's just a marketing agency that's looking to accumulate as much data as it wants to on the clients of its clients. Those are all things that are facilitated with a solely centralized model. And there are ways around such things, like for example with encryption. Encryption should obviously be used in any kind of service. If you're hosting a website, you want it to be available on HTTPS of course and so on. But as we saw with the Heartbleed vulnerabilities or as the CBC likes to call it, the Heartbleed virus that was exposed earlier this year, there are always ways around certain even encryption protocols that vulnerabilities might be found. So the goal is to not simply rely on one thing, simply rely on one model of connecting to other people, simply rely on one technology of connecting to other people. The point is to be able to explore different things that can enhance security in layered ways so that we're not, everyone's not saying, oh no, I have to upgrade my open SSL binaries because something happened and now everyone can get all of my information on all of my hundreds of thousands of users that my application works with. So those are the kinds of things that ArcOS in pursuing a more decentralized or in some cases distributed model is seeking to solve or to improve. So I mentioned before one of the ways that you can still work within a centralized model and ensure that your data is still private, it's still secure is encryption, but you also have the trust factor and that's where this lovely slide comes in. Whenever you're using a service that you're connecting to in a centralized manner or even in a decentralized manner, you have to trust the people who are operating it. You have to trust that they have your best interests at heart, you have to trust that they're only doing with your information or your metadata or whatever, the things that you're giving them express permission to do. And in the vast majority of cases, this probably isn't really a problem, but there are lots of organizations out there that don't have your best interests at heart that are either trying to, we're talking about either phishing attacks or just add agencies, add groups that are trying to get as much data as they can. So you always want to do your best to make sure that you're trusting the people that you're giving your data to and with the centralized infrastructure, this is even more important. But when you have hardware that's in your house or you have hardware that you're renting space on, that's only used as a node for your specific services, this becomes a lot better. Sure, you have to trust yourself to make sure that you can install the application correctly, but that's the challenge that we're taking on ourselves to make sure that that part of it goes smoothly so that we can maybe improve upon the current model as it is where you have to trust every individual company, every individual ad seller behind them that they're doing the things that they're supposed to be doing. So the goal isn't necessarily to completely get rid of any kind of centralized services that exist now. I mean, that would be impractical, but we need an alternative and we don't really have a viable alternative that lets people self-host their software, their data in any stretch of the terms, by themselves unless they're a systems administrator, a Linux geek and all these other things. There's no real reason why regular people, even people who have a tech background but aren't necessarily that into Linux, we should all be able to have access to these things. It shouldn't just be reserved for an elite few because if that's the way that it's going to go, then you're gonna have separate groups of people who some people who are spied upon and some people who aren't spied upon and if that's one of the things that you care passionately about, then that becomes a big problem for you. So with my project, ArcOS, we're focused on three different pillars, three different focus areas when we develop our application in our operating system. So like I mentioned before, we're working on easy setup and use. It has to be easy for your grandma, ideally, but starting small and then getting there, getting to an easier and easier interface. It has to be set up secure by default so that takes some liberties away from how things are installed on the end users machine but these decisions that are made are ones that are done with the highest levels of security set up by default as possible and also the ability to keep your communications private only choosing the individuals with whom you want to be able to see. So both on a network level and also on a user level. So if you have information that you just want to host at home, for example, but you don't know how to use a firewall, you don't know how to use IP tables on Linux or something like that, then you will automatically be able to choose the zone that you can share with. You can say, okay, only share inside my house which only shares inside your wireless network, for example. So it's this kind of things that gives the tools to people to handle these advanced kinds of settings that they might not have had access to before. So ArcOS loves Python because lots of ArcOS's tools are written in Python both on an infrastructure level for our projects, our projects sites, the infrastructure that we're looking at establishing in the future like dynamic DNS systems for people to use and so on. But also Genesis, which is the main framework tool and I'll get it into the specifics about that now. So Genesis is the management interface where everything comes together in ArcOS. You have the operating system layer which is just basically a Linux distribution, bare bones, nothing more. But Genesis is a Python application that runs on the device itself and it has a whiskey server with G event on it that you connect to with a browser that's connected to the network that the device is also running on. So when I showed the first run screen that was from Firefox, you get a jump start on developing your interface because it's that easy. You don't have to worry about QTE, you don't have to worry about any of those other things. It's just all done in the browser, very quick, very simple. And within Genesis, the management interface, there are several different frameworks. There's one for web apps, for example, databases and then one for general plugins. So if you wanna build a web app that works with ArcOS or make a web application that already exists into a plugin for ArcOS, all you have to do is you create a Python script in maybe one or 200 lines and then a small XML file to go into its templating engine and that's it. Genesis already handles the unified menu for the interface. It already handles how do you log into this? How do you manage it? What kind of widgets do you use? All of this is handled by the backend. So it's really helpful for getting started quickly on developing an application for a server and having it managed in a web browser type interface and not wanting to get started with the horror that can be starting a web app development from scratch for something that's pretty involved. But for the web apps framework specifically, this is geared towards applications that already run in your browser and don't necessarily need to be managed elsewhere. So we're talking like WordPress, own cloud, forum software, PHP, BB, anything like that. That can be done in just 100, 200 lines of Python Max and then a small XML file and that's it. So databases, it also acts in a modular way. You put in a small script that allows it to work with MariaDB or any of, there's thousands of them by now, database systems out there. And then there's the general plugin framework which is a bit more involved, maybe a few hundred more lines of Python, but still pretty minimal. And that'll allow you to run things that are more involved such as a chat server and email server to plugins that we already have right now. And it allows you to put it into the management interface and run it, manage it with no problems and the application itself will run on the OS level. So that's it, I guess. There's so many things that I could say about this project because there's so many different directions that we're going in. It's not just the operating system itself and it's not just the management that goes on top of it. If you're running services at your house and you don't have a static IP address, then you need a dynamic DNS address, for example. And that's one of the things that we're working on that will allow people to easily register for their own domain and address within the Genesis interface itself. In the first run wizard, you go to step six or whatever and you say, okay, type in the domain you want and it will automatically order it, register it, apply it to your home IP address for the necessary ports and all of that is going to be done without the user having to connect with any outside service because the more outside services you involve in that kind of transaction, the more unintuitive it becomes. So we're really trying to focus on UX, not just for the design of the main application, but also all of the other kinds of small services that we can launch and make the whole experience easier for people. So like I said, there's tons of things I can go into but I will leave that for questions if anyone has questions.