Aral Balkan

Mastodon icon RSS feed icon

NLnet Grant Application for Domain

This is my application to get NLnet funding to work on Domain as part of the User-Operated Internet Fund1

I feel it’s important that such grant applications are made public so everyone has visibility into the process. This will allow us to collectively learn from the experience and perhaps even to improve the process itself.

As such, I’ll be making my end of the process as public as possible by not only sharing my original grant application but any subsequent communication I receive during the process. And I urge you to do the same on your own site when applying for similar grants.

Public money, public process, public code.

Timeline

Call topic

Contact information

General project information

Abstract: Can you explain the whole project and its expected outcome(s). (1200 characters)

Domain creating an Owncast server in under a minute (live stream demo).

Domain aims to democratise the ownership of web sites and commoditise the gatekeepers.

“The best thing about the internet is that … [f]rom the edges inwards, users themselves can collectively own, operate and rewrite every aspect of the technology and infrastructure they depend on.” – User-Operated Internet Fund

Yes, we can. But it is technically difficult to do so.

This is the problem Domain aims to solve.

Think about what you have to do today to have your own web site (or self-hosted web application) running on your own server:

  1. Buy a domain name from a commercial domain name registrar.

  2. Sign up with a commercial web host (e.g., DigitalOcean, Hetzner, etc.)

  3. Provision a server (e.g., virtual private server) with your web host.

  4. Configure your Domain Name System (DNS) records to point to your server.

  5. Install or configure a web server, the site (or app) you want to host, as well as any other required software (database, etc.).

  6. Ensure your server is sufficiently secure.

  7. Maintain your server by installing updates to your operating system and other related software on a regular basis.

While none of this is terribly difficult for seasoned developers or system administrators to tackle, it is not a process you would expect someone without technical skills to undertake without a considerable investment of time and effort.

And we want everyone to have their own place on the Web, not just those of us who have the relevant technical knowledge.

Furthermore, it can easily take at least half an hour even for technically-savvy folks to go through all those steps to set up a simple site or app (and longer still if you have to configure databases, message queues, etc.) I once watched an experienced software engineer struggle to set up his own Mastodon instance for an afternoon before giving up. ’Nuff said.

The goal of Domain is to reduce this process to under a minute.

(So we’re talking about an order of magnitude difference or more.)

Here’s a video of Domain creating and running a new Owncast server in under a minute.

How does it work?

Domain is being built for use by two different audiences:

  1. Hosts: Organisations/technically-savvy individuals who run domain as a service for their communities.

  2. Everyday people: Who use the Domain instances set up by hosts to commission, own, and control their own web sites and apps.

For hosts

Domain enables organisations and individuals to provide web hosting services for small (personal) web sites and apps to the general public.

As a prerequisite, hosts need to sign up for the following constituent services:

Screenshot of the Domain administration panel showing the Public Suffix List (PSL) tab active. The domain small-web.org is on the PSL.

The Domain Administration Panel.

Once a host has acquired the required accounts and their domain is on the Public Suffix List, they will use the simple online administration interface provided by Domain to enter the relevant API keys for each of these services.

Screenshot of the Domain administration panel showing the VPS Host Settings screen with API Token and SSH Key Name input boxes.

The VPS Host Settings screen.

Domain combines these fundamental services into a simple and seamless flow to enable everyday people to sign up for their own sites and apps at their own domain.

Screenshot of Domain administration panel showing the App Settings screen. Available choices are “Site.js”, “Owncast”… Owncast is selected.

The App Settings screen.

Hosts can decide which apps and sites people can install. These apps are defined in the online interface by their installation and configuration instructions in a standard format known as cloud-init. It is currently possible in the Domain prototype to install Owncast, for example, as well as a generic Site.js web site.

Screenshot of Domain administration panel showing lower part of App Settings screen with the Owncast cloud-init configuration

App Settings: Owncast cloud-init configuration.

Domain will democratise the process of being a web host and enable small organisations and even individuals to host sites and apps for their local communities.

The Small Web design of Domain sets natural limits on how large a host can grow. Our goal is to encourage a community of lots of small, independent, and ideally not-for-profit hosts around the world. Each of which, of course, can customise Domain for their own needs and culture, given that it is released under AGPL version 3. This license also means that any improvements to Domain must be shared back into the commons, thereby strengthening it for everyone. (And it prevents, for example, a venture-capital-funded startup in the future from taking the software, spending a few million dollars to improve it, and then keeping those improvements to themselves to create fragmentation and lock-in.)

Domain is being built with an integrated web server and web development platform called Kitten (previously known as NodeKit).

Kitten is being developed alongside Domain, with Domain’s requirements determining its features.

Kitten will also be used to create and serve small web sites that can be installed with Domain and will be a useful tool itself in lowering the barrier of entry to developing and hosting your own web site or app. While Kitten is not the focus of this grant application, it is important to understand that it is impossible to separate the two as they are being developed in parallel and any support for our development work will benefit both of these intertwined projects.

For everyday people

For everyday people, Domain presents a very simple interface:

Choose a domain and select an app to install. Optionally, provide payment information and, within a minute, you’re up and running with your own site at your own domain.

Screenshot of Domain’s public-facing page. Interface reads “I want my own (editable field) Place at (editable field) domain .small-web.org for €10/month. A green button reads “Get Started.”

The Domain interface for everyday people.

As far as I’m aware, there is currently nothing that approaches this in terms of ease of use.

The speed and ease with which everyday people can set up their own sites and apps at their own servers is at least an order of magnitude faster than what’s available today. We believe that this will have a substantial impact in democratising the Web by enabling more people to own and control their own place on it.

Have you been involved with projects or organisations relevant to this project before? And if so, can you tell us a bit about your contributions?

“Technology should be a commons for everyone to enjoy and contribute to, without gatekeepers or persistent threats.” – User-Operated Internet Fund

We formed Ind.ie in 2013 and have been working towards this very ideal ever since. In the intervening years, as our understanding of the problem grew, we honed our focus and limited resources on effecting change were we feel it will be most impactful and least likely to be threatened by proprietary systems and corporate control: the open web.

Screenshot of magazine: “…relying so heavily on the “free” data-slurping tech giants. But some people are trying to change the dynamic. Aral Balkan is an activist and co-founder of Indie, which develops privacy-minded tools and services. He is working with the Belgian city of Ghent to provide an alternative to social media sites. Citizens will be able to. sign up for their own .gent website, which will be able to follow and update other .gent sites. The sites will also connect to other like-minded services such as Mastodon, a privacy-respecting alternative to Twitter (see “Ditch and switch”, right). The idea is that it will work much like a Facebook profile, but each person will own their own site there is no central authority hoovering up your data. On the face of it, that sounds a lot like the old web, where people created simple pages hosted on computers they controlled. The crucial difference is that it used to be difficult to put things online without technical know-how —which is partly why easy-to-use services like Facebook are popular. Balkan wants the .gent project to be simple to use, with plans for the webhosting and domain registration to happen in the background. “We solve that problem, and that’s where we change the game,” he says. The project is being funded by the city of Ghent, which Balkan says is a model for the way forward. “We need to start funding these ethical alternatives from the commons, for the common good,” he says. He's not calling for social media to be run by the government or for Facebook to be nationalised, he says - the potential for surveillance is too high. The Chinese government plans to use personal data to rate individual citizens, for example. Instead, the taxpayer could fund online services, which are kept at arm's length from the state.”

The Indienet project as covered in New Scientist

In 2017-2018 we worked with the City of Ghent, in Belgium, on prototyping the Indienet project. The goal was to demonstrate how citizens could have their own web sites (at a .gent domain) and own and control their own data when interacting among themselves and with the municipality. Sadly, a conservative local government was elected and our funding for the project was cut.

The Indienet project was the spiritual predecessor to Domain.

The Indienet project taught me several things: first, not to rely on public funding which might be taken away at any moment when the winds of politics change and, secondly, that we must build our own tools and frameworks at all levels of the stack to radically simplify the development and deployment of personal web sites and apps.

As part of our research and development efforts, I’ve been iterating on a personal web server and web development platform since 2019, when I first launched HTTPS Server which became Indie Web Server, and finally Site.js. The latter currently powers all our sites, including https://small-tech.org, my blog at https://ar.al, and, of course, https://sitejs.org itself.

Kitten, the server/framework I am building in parallel to Domain, is the next iteration of these efforts. It makes modern web development about as simple as it can get by eschewing a complicated build process and heavyweight JavaScript frameworks and enabling people to create web sites using plain HTML, CSS, and JavaScript and, optionally, enhancing them with HTML-over-the-wire via htmx and simple interactivity using hyperscript.

Domain is being written in and will be powered by Kitten.

Kitten (and thereby Domain) benefits from components that I created for Site.js, including the auto-encrypt library for simplifying secure sites with automatic Let’s Encrypt certificates and JavaScript Database (JSDB), a simple in-memory, streaming write-on-update JavaScript database for Small Web use that persists to a JavaScript transaction log.

(An earlier iteration of Kitten was called NodeKit and used Svelte instead of htmx. The current prototype of Domain in written in NodeKit and is being ported over to Kitten. The current prototype is able to deploy sites using Site.js. In fact, it’s how we set up our streaming server for Small Technology Foundation at https://owncast.small-web.org.)

Requested support

Requested amount: €50,000

Explain what the requested budget will be used for. Does the project have other funding sources, both past and present? (If you want, you can in addition attach a budget at the bottom of the form):

The requested budget will be used, after taxes, to pay me, a software developer with over two decades of professional development experience, to work on the project for the next 12 months (at a rate that’s less than half of what I was earning working in the mainstream two decades ago).

Our funding sources for Small Technology Foundation are and have been:

Compare your own project with existing or historical efforts.

The closest existing tools and projects to Domain are:

These suffer from the complexity problem mentioned above and are profit-oriented corporate initiatives that do not have any sort of social mission to democratise the Web or technology.

These systems provide web site/app installation functionality but they must themselves be hosted (which requires all the steps that Domain automates and streamlines). To illustrate, you could use Domain to create a server running Yunohost.

What are significant technical challenges you expect to solve during the project, if any?)

In terms of feasibility, I don’t believe there are any major questions left unexplored (as I have been working on the underlying infrastructure and design for several years now and I already have a functional prototype of Domain).

In the coming days, I will be porting Domain from NodeKit to Kitten and evolving Kitten to handle any unmet requirements this process might uncover in it. I feel very good about this as the replacement of Svelte with htmx has removed a large chunk of complexity from (the already lightweight) framework and developing with it feels excellent so far.

Now that the architectural decisions have been locked down, I expect a rather straightforward and sustained development effort with ongoing releases of both Kitten and Domain in the coming year.

Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes?

Initially, my goal is to launch our own Domain instance at https://small-web.org to demonstrate how it works and so it can start bringing in income for Small Technology Foundation. (Our goal is to become sustainable so we can keep working on the Small Web.) I envision that the initial people who play with it to set up their own sites and apps will be people who hear about it because they follow me on the fediverse.

I hope that once other developers see that it works, they might want to start becoming hosts themselves (either individually or with their organisations). My goal is to eventually see a healthy ecosystem of independent (and ideally not-for-profit hosts) around the world using Domain to empower their communities to own and control their own places on the World Wide Web.

I would love to see community groups, cooperatives, municipalities, and other organisations experimenting with alternative means of sustaining such efforts. The token ‘payment’ system in Domain, for example, could be used by a city to mail out codes to all its citizens that they can then use in lieu of payment to set up their own web sites and apps. (This is the model we were exploring with the City of Ghent.)

Finally, although Kitten is not the focus of this grant proposal, since it is being developed in parallel with Domain (and given that Domain is being written in it and will be powered by it), I believe that Kitten will also open up web development to a wider group of people by removing the complexities inherent in current corporate stacks. I foresee it being used to teach web development (at the very least, I foresee myself using it to teach web development).

Attachments

None.

(Please see links in the body of the proposal.)

How may we handle your information

(If you haven’t, please check our privacy policy).

When your project gets selected, we will legally need to retain your information for compliance purposes for at least seven years. Also, in case you are submitting to one of the NGI related funds, at that point we will need to share some information with our (not-for-profit) partner organisations in order so they may assist you with mentoring as well as complementary services e.g. accessibility, documentation, localisation, packaging, etc. By submitting a proposal you grant us permission to handle the data in the proposal in the manner described.

What should we do in the other case, e.g. when your project is not immediately selected?


  1. I do wish they had called it the Person-Operated or Human-Operated Internet Fund (or even just the Personal Internal Fund) instead of using the Silicon Valley word ‘user’, which is inherently colonial/ethnographic in nature. This is why we refer to people as ‘people’ in small technology. ↩︎

  2. While initially only a single web host, DNS provider, and payment provider will be supported, our hope is to add other providers so that, eventually, Domain can commoditise these services. The greatest challenge there is that commercial providers usually have custom Application Programming Interfaces (APIs) as part of their business model of locking people into their own services. So our goal will be to work towards better interoperability between service providers as well as abstracting away the differences on our end. ↩︎

  3. Domain makes use of the Public Suffix List in order to bypass the commercial domain name system and enable fully-functional sites to be set up at their own domains in under a minute.

    A domain like small-web.org – where Small Technology Foundation will be running our own instance of Domain – which is on the Public Suffix List is, for all intents and purposes, equivalent to a top-level domain and can provide all the privacy and security guarantees that any other top-level domain can (e.g., .com, .org, etc.) ↩︎