new deploy: 2022-04-17T21:15:51+00:00
parent
e7fa6802e0
commit
a70ef6dfd1
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
|
||||||
|
<title> - Posts</title>
|
||||||
|
<link href="https://hostea.org/blog/atom.xml" rel="self" type="application/atom+xml"/>
|
||||||
|
<link href="https://hostea.org/blog/"/>
|
||||||
|
<generator uri="https://www.getzola.org/">Zola</generator>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<id>https://hostea.org/blog/atom.xml</id>
|
||||||
|
<entry xml:lang="en">
|
||||||
|
<title>Project plans for a hosted Gitea online service</title>
|
||||||
|
<published>2022-04-18T00:00:00+00:00</published>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<link href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" type="text/html"/>
|
||||||
|
<id>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</id>
|
||||||
|
<content type="html"><p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
|
@ -0,0 +1,293 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>Posts | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="Posts" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Posts | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="Posts" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="Posts | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
<h1 class="blog__title">Posts</h1>
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="blog__post-item">
|
||||||
|
<a href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" class="blog__post-link">
|
||||||
|
<h2 class="blog__post-title">Project plans for a hosted Gitea online service</h2>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://dachary.org" class="post__author">Loïc Dachary</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
· 18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="blog__post-description">When an organization asks me about Gitea, I would like to direct them to a provider where they can rent an instance and just use it </p>
|
||||||
|
</a>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://hostea.org/rss.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,508 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>Project plans for a hosted Gitea online service | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="Project plans for a hosted Gitea online service" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Project plans for a hosted Gitea online service | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="Project plans for a hosted Gitea online service" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="Project plans for a hosted Gitea online service | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="page__container">
|
||||||
|
<h1 class="page__group-title">Project plans for a hosted Gitea online service</h1>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://dachary.org" class="post__author">Loïc Dachary</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
· 18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__content">
|
||||||
|
<p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -221,11 +221,11 @@ and static pages with upgrades, backups and 24/7 monitoring" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="home__vision-text-line">
|
<span class="home__vision-text-line">
|
||||||
...where freedom doens't come at the cost of comfort and reliability.<br />
|
...where freedom doesn't come at the cost of comfort and reliability.<br />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="home__vision-text-line">
|
<span class="home__vision-text-line">
|
||||||
...where Free Software is not only comparable to properiatary software in
|
...where Free Software is not only comparable to proprietary software in
|
||||||
features but leads the charge in the ecosystem.<br />
|
features but leads the charge in the ecosystem.<br />
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
@ -274,7 +274,7 @@ and static pages with upgrades, backups and 24/7 monitoring" />
|
||||||
alt="Temporary card icon"
|
alt="Temporary card icon"
|
||||||
class="home-card__icon"
|
class="home-card__icon"
|
||||||
/>
|
/>
|
||||||
<h4 class="home-card__title">Todards Forge Federation 🚀</h4>
|
<h4 class="home-card__title">Towards Forge Federation 🚀</h4>
|
||||||
<p class="home-card__text">Hostea developers are also leading the charge in implementing ecosystem-wide federation, we really care about software development :)</p>
|
<p class="home-card__text">Hostea developers are also leading the charge in implementing ecosystem-wide federation, we really care about software development :)</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -287,7 +287,7 @@ and static pages with upgrades, backups and 24/7 monitoring" />
|
||||||
alt="Temporary card icon"
|
alt="Temporary card icon"
|
||||||
class="home-card__icon"
|
class="home-card__icon"
|
||||||
/>
|
/>
|
||||||
<h4 class="home-card__title">Observable and Reliabile</h4>
|
<h4 class="home-card__title">Observable and Reliable</h4>
|
||||||
<p class="home-card__text">All Hostea software come with monitoring and backups configured for high, observable reliability</p>
|
<p class="home-card__text">All Hostea software come with monitoring and backups configured for high, observable reliability</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
.home-card__group{flex-direction:column}.home-card__conatiner{margin:10px auto;width:80%}.home-card__group{margin:auto}.home__container{max-height:100vh;height:100vh}.home__name{font-size:2rem}.index-banner{margin:auto}.index-banner__title{font-size:2.5rem;margin:auto}.nav__container{flex-direction:column}.nav__header{display:flex;flex-direction:row;min-width:100%;justify-content:space-between}.nav__link-group{position:sticky;flex-direction:column;margin:auto;align-items:center;width:100%}.nav__link-container{border-bottom:1px dashed rgba(55,55,55,0.4);width:70%}.nav__link-container:last-child{border-bottom:none}.nav__link{margin:auto}.nav__hamburger-menu{display:inline-block;width:50px;height:50px}.nav__spacer{display:none}.nav__toggle:not(:checked)~.nav__link-group{max-height:0;transition:max-height 0.4s ease-out;overflow:hidden}.nav__toggle:checked~.nav__link-group{max-height:500px;transition:max-height 0.4s ease-out}.nav__toggle:checked~.nav__header .nav__hamburger-inner::after{width:24px;bottom:1.3px;transform:rotate(-90deg);transition:bottom 0.1s ease-out,transform 0.22s cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s,width 0.1s ease-out}.nav__toggle:checked~.nav__header .nav__hamburger-inner::before{top:0;opacity:0;transition:top 0.1s ease-out, opacity 0.1s ease-out 0.12s}.nav__toggle:checked~.nav__header .nav__hamburger-inner{transform:rotate(225deg);transition-delay:0.12s;transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}.nav__hamburger-inner::after{bottom:-7px;transition:bottom 0.1s ease-in 0.25s,transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19),width 0.1s ease-in 0.25s}.nav__hamburger-inner::after,.nav__hamburger-inner::before{content:"";display:block}.nav__hamburger-inner::before{top:-7px;transition:top 0.1s ease-in 0.25s, opacity 0.1s ease-in}.nav__hamburger-inner{top:50%;margin:auto;transition-duration:0.22s;transition-timing-function:cubic-bezier(0.55, 0.055, 0.675, 0.19)}.nav__hamburger-inner,.nav__hamburger-inner::after,.nav__hamburger-inner::before{width:24px;height:1.3px;position:relative;background:#000}.nav__hamburger-menu,.nav__hamburger-inner{display:block}footer{font-size:.44rem}.footer__container{display:grid;grid-template-rows:repeat(3, 100%);align-items:center;margin:auto;justify-content:center}.footer__link{font-size:0.5rem}.license__conatiner,.license__link{text-align:center}.footer__column:first-child{grid-row-start:3;flex-direction:row}.footer__column:last-child{grid-row-start:2}.footer__column{margin:0 auto;display:flex;padding:0;align-self:flex-end}.footer__column--center{margin:0 auto;display:flex;padding:0;align-self:flex-start}.footer__column-divider--mobile-only{margin:0 3px;font-size:9.9px}.page__container{width:85%}.page__group-content table{overflow-x:scroll}.page__group-content table td{padding:5px}.page__group-content pre{white-space:pre-wrap;word-wrap:break-word}.page__group-content li{margin-left:25px}.page__group-content p,.page__group-content h1,.page__group-content h2,.page__group-content h3{margin:20px 0px}.page__banner{height:auto}.page__group-title{margin:auto;margin-top:0px;margin-bottom:10px}.blog__container{max-width:95%}.blog__content table{overflow-x:scroll}.blog__content table td{padding:5px}.blog__content pre{white-space:pre-wrap;word-wrap:break-word}.blog__content li{margin-left:25px}.blog__content p,.blog__content h1,.blog__content h2,.blog__content h3{margin:20px 0px}header{height:auto}
|
.home-card__group{flex-direction:column}.home-card__conatiner{margin:10px auto;width:80%}.home-card__group{margin:auto}.home__container{max-height:100vh;height:100vh}.home__name{font-size:2rem}.index-banner{margin:auto}.index-banner__title{font-size:2.5rem;margin:auto}.nav__container{flex-direction:column}.nav__header{display:flex;flex-direction:row;min-width:100%;justify-content:space-between}.nav__link-group{position:sticky;flex-direction:column;margin:auto;align-items:center;width:100%}.nav__link-container{border-bottom:1px dashed rgba(55,55,55,0.4);width:70%}.nav__link-container:last-child{border-bottom:none}.nav__link{margin:auto}.nav__hamburger-menu{display:inline-block;width:50px;height:50px}.nav__spacer{display:none}.nav__toggle:not(:checked)~.nav__link-group{max-height:0;transition:max-height 0.4s ease-out;overflow:hidden}.nav__toggle:checked~.nav__link-group{max-height:500px;transition:max-height 0.4s ease-out}.nav__toggle:checked~.nav__header .nav__hamburger-inner::after{width:24px;bottom:1.3px;transform:rotate(-90deg);transition:bottom 0.1s ease-out,transform 0.22s cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s,width 0.1s ease-out}.nav__toggle:checked~.nav__header .nav__hamburger-inner::before{top:0;opacity:0;transition:top 0.1s ease-out, opacity 0.1s ease-out 0.12s}.nav__toggle:checked~.nav__header .nav__hamburger-inner{transform:rotate(225deg);transition-delay:0.12s;transition-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}.nav__hamburger-inner::after{bottom:-7px;transition:bottom 0.1s ease-in 0.25s,transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19),width 0.1s ease-in 0.25s}.nav__hamburger-inner::after,.nav__hamburger-inner::before{content:"";display:block}.nav__hamburger-inner::before{top:-7px;transition:top 0.1s ease-in 0.25s, opacity 0.1s ease-in}.nav__hamburger-inner{top:50%;margin:auto;transition-duration:0.22s;transition-timing-function:cubic-bezier(0.55, 0.055, 0.675, 0.19)}.nav__hamburger-inner,.nav__hamburger-inner::after,.nav__hamburger-inner::before{width:24px;height:1.3px;position:relative;background:#000}.nav__hamburger-menu,.nav__hamburger-inner{display:block}footer{font-size:.44rem}.footer__container{display:grid;grid-template-rows:repeat(3, 100%);align-items:center;margin:auto;justify-content:center}.footer__link{font-size:0.5rem}.license__conatiner,.license__link{text-align:center}.footer__column:first-child{grid-row-start:3;flex-direction:row}.footer__column:last-child{grid-row-start:2}.footer__column{margin:0 auto;display:flex;padding:0;align-self:flex-end}.footer__column--center{margin:0 auto;display:flex;padding:0;align-self:flex-start}.footer__column-divider--mobile-only{margin:0 3px;font-size:9.9px}.page__container{width:85%}.page__group-content table{overflow-x:scroll}.page__group-content table td{padding:5px}.page__group-content pre{white-space:pre-wrap;word-wrap:break-word}.page__group-content li{margin-left:25px}.page__group-content p,.page__group-content h1,.page__group-content h2,.page__group-content h3{margin:20px 0px}.page__banner{height:auto}.page__group-title{margin:auto;margin-top:0px;margin-bottom:10px}.blog__container{max-width:95%}.blog__content table{overflow-x:scroll}.blog__content table td{padding:5px}.blog__content pre{white-space:pre-wrap;word-wrap:break-word}.blog__content li{margin-left:25px}.blog__content p,.blog__content h1,.blog__content h2,.blog__content h3{margin:20px 0px}.tag__title-container{flex-direction:column}.tag__rss-link--icon{margin:auto 0px}header{height:auto}
|
||||||
|
|
File diff suppressed because one or more lines are too long
22
sitemap.xml
22
sitemap.xml
|
@ -6,6 +6,13 @@
|
||||||
<url>
|
<url>
|
||||||
<loc>https://hostea.org/about/</loc>
|
<loc>https://hostea.org/about/</loc>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/blog/</loc>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</loc>
|
||||||
|
<lastmod>2022-04-18</lastmod>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://hostea.org/contact/</loc>
|
<loc>https://hostea.org/contact/</loc>
|
||||||
</url>
|
</url>
|
||||||
|
@ -18,6 +25,21 @@
|
||||||
<url>
|
<url>
|
||||||
<loc>https://hostea.org/service-wip/</loc>
|
<loc>https://hostea.org/service-wip/</loc>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/tags/</loc>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/tags/free-software-sustainability/</loc>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/tags/free-software/</loc>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/tags/gitea/</loc>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://hostea.org/tags/hostea/</loc>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://hostea.org/tos/</loc>
|
<loc>https://hostea.org/tos/</loc>
|
||||||
</url>
|
</url>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
.tag__item-link,.tag__item-link:visited{text-decoration:none}.tag__item-link{display:flex;align-items:center}.tag__item{border-bottom:1px dashed #333;margin:10px;padding:10px}.tag__item-title{font-size:1.4rem;font-weight:550;flex:2}
|
.tag__item-link,.tag__item-link:visited{text-decoration:none}.tag__item-link{display:flex;align-items:start;flex-direction:column;flex:2}.tag__item{border-bottom:1px dashed #333;margin:10px;display:flex;justify-content:space-between;padding:5px}.tag__item-title{font-size:1.4rem}.tag__meta{font-size:0.7rem}.tag__rss-link{margin:auto 20px}.tag__title{display:inline;flex:2}.tag__title-container{margin:35px 0;display:flex}.tag__rss-link--single{margin:auto}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
.tag__title-container{flex-direction:column}.tag__rss-link--icon{margin:auto 0px}
|
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
|
||||||
|
<title> - free-software-sustainability</title>
|
||||||
|
<link href="https://hostea.org/tags/free-software-sustainability/atom.xml" rel="self" type="application/atom+xml"/>
|
||||||
|
<link href="https://hostea.org"/>
|
||||||
|
<generator uri="https://www.getzola.org/">Zola</generator>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<id>https://hostea.org/tags/free-software-sustainability/atom.xml</id>
|
||||||
|
<entry xml:lang="en">
|
||||||
|
<title>Project plans for a hosted Gitea online service</title>
|
||||||
|
<published>2022-04-18T00:00:00+00:00</published>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<link href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" type="text/html"/>
|
||||||
|
<id>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</id>
|
||||||
|
<content type="html"><p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
|
@ -0,0 +1,293 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>free-software-sustainability | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="free-software-sustainability" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="free-software-sustainability | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="free-software-sustainability" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="free-software-sustainability | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
|
||||||
|
<div class="tag__title-container">
|
||||||
|
<h1 class="tag__title">#free-software-sustainability</h1>
|
||||||
|
<a class="tag__rss-link--single" href="https://hostea.org/tags/free-software-sustainability/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon--single"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a></div>
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="blog__post-item">
|
||||||
|
<a href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" class="blog__post-link">
|
||||||
|
<h2 class="blog__post-title">Project plans for a hosted Gitea online service</h2>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="blog__post-description">When an organization asks me about Gitea, I would like to direct them to a provider where they can rent an instance and just use it </p>
|
||||||
|
</a>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://hostea.org/rss.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
|
||||||
|
<title> - free-software</title>
|
||||||
|
<link href="https://hostea.org/tags/free-software/atom.xml" rel="self" type="application/atom+xml"/>
|
||||||
|
<link href="https://hostea.org"/>
|
||||||
|
<generator uri="https://www.getzola.org/">Zola</generator>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<id>https://hostea.org/tags/free-software/atom.xml</id>
|
||||||
|
<entry xml:lang="en">
|
||||||
|
<title>Project plans for a hosted Gitea online service</title>
|
||||||
|
<published>2022-04-18T00:00:00+00:00</published>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<link href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" type="text/html"/>
|
||||||
|
<id>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</id>
|
||||||
|
<content type="html"><p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
|
@ -0,0 +1,293 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>free-software | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="free-software" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="free-software | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="free-software" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="free-software | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
|
||||||
|
<div class="tag__title-container">
|
||||||
|
<h1 class="tag__title">#free-software</h1>
|
||||||
|
<a class="tag__rss-link--single" href="https://hostea.org/tags/free-software/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon--single"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a></div>
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="blog__post-item">
|
||||||
|
<a href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" class="blog__post-link">
|
||||||
|
<h2 class="blog__post-title">Project plans for a hosted Gitea online service</h2>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="blog__post-description">When an organization asks me about Gitea, I would like to direct them to a provider where they can rent an instance and just use it </p>
|
||||||
|
</a>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://hostea.org/rss.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
|
||||||
|
<title> - gitea</title>
|
||||||
|
<link href="https://hostea.org/tags/gitea/atom.xml" rel="self" type="application/atom+xml"/>
|
||||||
|
<link href="https://hostea.org"/>
|
||||||
|
<generator uri="https://www.getzola.org/">Zola</generator>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<id>https://hostea.org/tags/gitea/atom.xml</id>
|
||||||
|
<entry xml:lang="en">
|
||||||
|
<title>Project plans for a hosted Gitea online service</title>
|
||||||
|
<published>2022-04-18T00:00:00+00:00</published>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<link href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" type="text/html"/>
|
||||||
|
<id>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</id>
|
||||||
|
<content type="html"><p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
|
@ -0,0 +1,293 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>gitea | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="gitea" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="gitea | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="gitea" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="gitea | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
|
||||||
|
<div class="tag__title-container">
|
||||||
|
<h1 class="tag__title">#gitea</h1>
|
||||||
|
<a class="tag__rss-link--single" href="https://hostea.org/tags/gitea/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon--single"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a></div>
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="blog__post-item">
|
||||||
|
<a href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" class="blog__post-link">
|
||||||
|
<h2 class="blog__post-title">Project plans for a hosted Gitea online service</h2>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="blog__post-description">When an organization asks me about Gitea, I would like to direct them to a provider where they can rent an instance and just use it </p>
|
||||||
|
</a>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://hostea.org/rss.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,238 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
|
||||||
|
<title> - hostea</title>
|
||||||
|
<link href="https://hostea.org/tags/hostea/atom.xml" rel="self" type="application/atom+xml"/>
|
||||||
|
<link href="https://hostea.org"/>
|
||||||
|
<generator uri="https://www.getzola.org/">Zola</generator>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<id>https://hostea.org/tags/hostea/atom.xml</id>
|
||||||
|
<entry xml:lang="en">
|
||||||
|
<title>Project plans for a hosted Gitea online service</title>
|
||||||
|
<published>2022-04-18T00:00:00+00:00</published>
|
||||||
|
<updated>2022-04-18T00:00:00+00:00</updated>
|
||||||
|
<link href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" type="text/html"/>
|
||||||
|
<id>https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/</id>
|
||||||
|
<content type="html"><p><em>This post was originally published on <a href="https://blog.dachary.org/2022/02/16/project-plans-for-a-hosted-gitea-online-service/">Loïc Dachary's
|
||||||
|
blog</a>.</em></p>
|
||||||
|
<hr />
|
||||||
|
<p>When an organization asks me about Gitea, I would like to direct them to
|
||||||
|
a provider where they can rent an instance and just use it, in the same
|
||||||
|
way they can go to https://discourse.org for a forum, or
|
||||||
|
https://nextcloud.com for storage. Instead of waiting for that to
|
||||||
|
happen, <a href="https://batsense.net/about/">Aravinth</a> and
|
||||||
|
<a href="https://dachary.org/">myself</a> decided to do something about it, in a
|
||||||
|
way that is in line with our shared values: transparency and Free
|
||||||
|
Software.</p>
|
||||||
|
<p>After doing some research we found counter examples that showed the
|
||||||
|
pitfalls to avoid. GitLab because its business model heavily relies on
|
||||||
|
selling proprietary licenses. CiviCRM because setting it up is complex
|
||||||
|
and requires training: users can't figure it out on their own. Gitea
|
||||||
|
images provided by Digital Ocean because they do not include security
|
||||||
|
upgrades. MySQL configured and run by AWS because of the vendor lock-in
|
||||||
|
that makes it impossible to self-host.</p>
|
||||||
|
<p>We concluded that an online service such as Gitea can be hosted in a
|
||||||
|
sustainable way as long as:</p>
|
||||||
|
<ul>
|
||||||
|
<li>It is well maintained and upgrades itself</li>
|
||||||
|
<li>It can be self-hosted</li>
|
||||||
|
<li>The service can automatically be restored from backups when the
|
||||||
|
underlying resources fail</li>
|
||||||
|
</ul>
|
||||||
|
<p>GitHub and GitLab make it look like there is a market around software
|
||||||
|
forges. It is however impossible to figure out if this market exists
|
||||||
|
only because it is based on proprietary software. How many of these
|
||||||
|
customers would pay for a Free Software hosted Gitea instance?</p>
|
||||||
|
<p>Even if these customers do exist, a new service provider would have to
|
||||||
|
figure out how to convince them to subscribe. The technical development
|
||||||
|
of the service can be done within weeks but building a sustainable
|
||||||
|
business takes much longer. Again, there were examples of what can go
|
||||||
|
wrong, for instance ElasticSearch. After years of work developing a
|
||||||
|
successful online service and a customer base, AWS entered the
|
||||||
|
competition and started to take it away from them.</p>
|
||||||
|
<p>The sustainability of the Free Software ecosystem is a new and very
|
||||||
|
difficult problem to solve. It is discussed more than it ever was in the
|
||||||
|
wake of security breaches originating from widely used and yet abandoned
|
||||||
|
library or disillusioned Free Software authors self-sabotaging their
|
||||||
|
next release, and everyone has diverging opinions. It falls on each Free
|
||||||
|
Software author to spend time to think about their own projects because
|
||||||
|
there are no handbook or good examples to follow. That is what Aravinth
|
||||||
|
and myself did to find a semblance of clarity and decide how to go about
|
||||||
|
this hosted Gitea service idea.</p>
|
||||||
|
<h1 id="sustaining-free-software-online-services">Sustaining Free Software online services<a class="zola-anchor" href="#sustaining-free-software-online-services" aria-label="Anchor link for: sustaining-free-software-online-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<h2 id="more-mature-online-services-mean-less-opportunities-to-sell-services">More mature online services mean less opportunities to sell services<a class="zola-anchor" href="#more-mature-online-services-mean-less-opportunities-to-sell-services" aria-label="Anchor link for: more-mature-online-services-mean-less-opportunities-to-sell-services"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>Ideally the software running an online service is rock solid and bugs
|
||||||
|
are so rare that it can run unattended. This is true of
|
||||||
|
https://wordpress.org and it is not uncommon for an instance to run for
|
||||||
|
years while upgrading themselves to get security patches. The cost of
|
||||||
|
maintaining such a service is negligible and hosting companies can offer
|
||||||
|
it for free to their customers. They make their profit by renting the
|
||||||
|
machines on which the service runs.</p>
|
||||||
|
<p>When the software is not as mature, it is more expensive to run. Bugs
|
||||||
|
need fixing, upgrades require manual intervention, users must be trained
|
||||||
|
to overcome the complexity of the user experience, etc. Well known
|
||||||
|
examples are Discourse or CiviCRM for which companies sell services to
|
||||||
|
overcome these issues.</p>
|
||||||
|
<p>But when an organization is both the author of the software and the
|
||||||
|
provider of paid services to compensate for its lack of maturity, it
|
||||||
|
creates a conflict of interest. Should they focus their effort on making
|
||||||
|
the software more mature, they would harm a business model that is based
|
||||||
|
on this very lack of maturity. For instance, if the author of a software
|
||||||
|
also sells training courses, they are not motivated to solve user
|
||||||
|
experience issues. If they did, it would lower the need for training
|
||||||
|
courses and reduce their income.</p>
|
||||||
|
<h2 id="free-software-online-services-in-the-wake-of-the-sustainability">Free Software online services in the wake of the sustainability<a class="zola-anchor" href="#free-software-online-services-in-the-wake-of-the-sustainability" aria-label="Anchor link for: free-software-online-services-in-the-wake-of-the-sustainability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h2>
|
||||||
|
<p>crisis</p>
|
||||||
|
<p>Nowadays all Free Software authors struggle to get enough resources to
|
||||||
|
produce a steady stream of releases, even when the project is very
|
||||||
|
popular. This sustainability problem is getting more and more attention
|
||||||
|
as the number of Free Software projects in use world wide keeps growing.
|
||||||
|
Even the simplest online service relies on thousands of Free Software
|
||||||
|
projects, each of which needs work to keep going. Accidents caused by
|
||||||
|
poorly maintained Free Software projects become more frequent.</p>
|
||||||
|
<p>This Free Software sustainability crisis is barely emerging and very
|
||||||
|
much resembles ecological problems such as climate change. In both cases
|
||||||
|
it is very difficult to figure out how to properly care for the
|
||||||
|
resources that are consumed. After decades of advocacy, it is generally
|
||||||
|
accepted that fossil energy won't last forever but there still is a long
|
||||||
|
way to go. It will also take a long time for the Free Software community
|
||||||
|
to answer this simple question: how to sustain an ever growing library
|
||||||
|
of Free Software?</p>
|
||||||
|
<p>Luckily, it is relatively simpler to solve that problem for an online
|
||||||
|
service because it has users. They can be reminded that their assistance
|
||||||
|
is needed to keep the project afloat, for instance by a donation. A
|
||||||
|
proposition that would be much more difficult to make for the author of
|
||||||
|
a cryptographic library. Convincing users to pay for an online service
|
||||||
|
has the best chance of success when the author of the software is also
|
||||||
|
the service provider. This is the business model of Discourse and
|
||||||
|
Weblate, but it is relatively fragile because nothing stands in the way
|
||||||
|
of the competition.</p>
|
||||||
|
<p>A few years ago ElasticSearch successfully developed an online service
|
||||||
|
offering. But when AWS entered the competition and was better at
|
||||||
|
marketing it, ElasticSearch quickly realized they would likely go out of
|
||||||
|
business. They tried to fight back by <a href="https://www.elastic.co/blog/licensing-change">changing their
|
||||||
|
license</a>, which was the
|
||||||
|
wrong answer to a real problem. Discourse or Weblate are also likely to
|
||||||
|
face competition from hosting companies in the future and they may not
|
||||||
|
survive it.</p>
|
||||||
|
<p>In the end, the durable source of income for a Free Software online
|
||||||
|
service is to rent the resources (CPU/RAM/network/disk) it needs to run.
|
||||||
|
In other words only hosting companies can make a profit when running
|
||||||
|
such an online service. And for that reason they also need to share part
|
||||||
|
of the profits to ensure the sustainability of the Free Software service
|
||||||
|
their customers need.</p>
|
||||||
|
<h1 id="online-services-vendor-lock-in-is-cured-by-free-software">Online services vendor lock-in is cured by Free Software<a class="zola-anchor" href="#online-services-vendor-lock-in-is-cured-by-free-software" aria-label="Anchor link for: online-services-vendor-lock-in-is-cured-by-free-software"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>When hosting companies offer online services they also provide upgrades
|
||||||
|
and transparent recovery when the hardware fails. But none of them allow
|
||||||
|
the service to be self-hosted. When their price policy change, or when
|
||||||
|
the term of services ban users from a given country, migrating the
|
||||||
|
service elsewhere it costly and difficult. For instance when AWS runs
|
||||||
|
MySQL for their customers, they allow to download the data but not the
|
||||||
|
software that runs the proprietary AWS interface used to configure and
|
||||||
|
control the server. Another example is GitHub where the content of the
|
||||||
|
git repository can be downloaded but the code that runs GitHub itself is
|
||||||
|
not Free Software.</p>
|
||||||
|
<p>If a customer cannot run the same software as their service provider,
|
||||||
|
they are locked-in, even if they can download their data. It is a common
|
||||||
|
misconception to think that there is no vendor lock-in as long as it is
|
||||||
|
possible to download the data in an standard format. Migrating the data
|
||||||
|
from one software to another is, more often than not, time consuming and
|
||||||
|
costly to a point that it is effectively a blocker. A GitHub salesperson
|
||||||
|
would argue that it is possible for people to run GitHub Enterprise on
|
||||||
|
their own hardware. But the vendor lock-in is still present via the
|
||||||
|
proprietary license contract. The user experience, maintenance and
|
||||||
|
upgrades are still exclusively controlled by GitHub.</p>
|
||||||
|
<p>To guarantee their independence, the customers of an online service need
|
||||||
|
to be able to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download their data</li>
|
||||||
|
<li>Run the exact same Free Software as their service provider</li>
|
||||||
|
<li>Run the exact same Free Software infrastructure as code as their
|
||||||
|
service provider</li>
|
||||||
|
</ul>
|
||||||
|
<p>The requirement regarding Free Software infrastructure as code refers
|
||||||
|
to, for instance, the AWS control panel and all that is behind it when
|
||||||
|
creating a new MySQL service. It includes whatever a competitor would
|
||||||
|
need to run the same online service. An example would be
|
||||||
|
https://enough.community, an infrastructure as code dedicated to
|
||||||
|
creating the services needed by whistleblowers and human rights
|
||||||
|
defenders. It consumes resources rented by hosting providers, assembles
|
||||||
|
disks and machines, setup monitoring and intrusion detection, installs
|
||||||
|
various online services and upgrades them.</p>
|
||||||
|
<p>The availability of the software that creates the infrastructure is not
|
||||||
|
only useful to the competitors of a service provider. It also benefits a
|
||||||
|
non-profit that wants to provide (for instance) Wordpress instances to
|
||||||
|
its members. Without it they would need to create something from scratch
|
||||||
|
using building blocks such as CiviCRM. Even though such building blocks
|
||||||
|
exist, this is a significant undertaking and effectively a blocker.</p>
|
||||||
|
<h1 id="federated-online-services-and-durability">Federated online services and durability<a class="zola-anchor" href="#federated-online-services-and-durability" aria-label="Anchor link for: federated-online-services-and-durability"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>All self-hosted services are in danger of loosing the data they contain.
|
||||||
|
When a Wordpress service is hosted in a home and the machine dies, it
|
||||||
|
must be restored from backups... when there are backups. Hosting
|
||||||
|
companies ensure the durability of the data with their own backup
|
||||||
|
system. It creates a dilemma for people who are looking into self
|
||||||
|
hosting: independence is desirable, but is it worth taking the risk of
|
||||||
|
data loss?</p>
|
||||||
|
<p>Federated online services do not suffer from this problem, because they
|
||||||
|
can mirror each other. A Gitea instance that is federated with another
|
||||||
|
will mirror copies of software projects found on its peers. Should one
|
||||||
|
instance be destroyed, mirrored projects can be resurrected from the
|
||||||
|
federated instance. Not only is it a practical way to ensure the (rare)
|
||||||
|
failure of an entire datacenter, it also helps with the (more frequent)
|
||||||
|
destruction of self-hosted machines. Contrary to backups that require
|
||||||
|
special attention, the replication involved in federated online service
|
||||||
|
is built in and works continuously. There is no need for an extra backup
|
||||||
|
service that is very rarely used and therefore likely to fail when
|
||||||
|
needed.</p>
|
||||||
|
<p>Federated services are not yet mainstream and Gitea is one of the rare
|
||||||
|
services that started to implement the concept. In the interim,
|
||||||
|
customers of an online hosting service will need to worry about backups
|
||||||
|
to ensure the durability of their data. But the ultimate solution for
|
||||||
|
them won't be the emergence of an ideal backup infrastructure, it will
|
||||||
|
be replication (via federated services) that will continuously ensure
|
||||||
|
the durability of their data.</p>
|
||||||
|
<h1 id="paths-forward">Paths forward<a class="zola-anchor" href="#paths-forward" aria-label="Anchor link for: paths-forward"
|
||||||
|
><span class="anchor-icon">#</span></a
|
||||||
|
>
|
||||||
|
</h1>
|
||||||
|
<p>The Gitea project itself, following the footsteps of Discourse or
|
||||||
|
Weblate, could provide a hosting service. Part of its current user base
|
||||||
|
may become customers and there does not seem to be any blocker to make
|
||||||
|
that happen. As with most successful Free Software project, people
|
||||||
|
working on Gitea daily are already very busy and cannot engage in such a
|
||||||
|
long term project. But Aravinth and myself can, if they will have us.</p>
|
||||||
|
<p>Another path forward would be to wrap Gitea into a bundle that existing
|
||||||
|
hosting companies could easily use to provide such a service to their
|
||||||
|
customers. The biggest hosting companies are unlikely to be interested:
|
||||||
|
if Digital Ocean was to provide upgrades on top of their existing Gitea
|
||||||
|
image, they are more likely to rely on their internal staff to implement
|
||||||
|
that from scratch, as proprietary software integrated into their
|
||||||
|
existing infrastructure. But smaller hosting companies such as
|
||||||
|
https://Octopuce.fr or https://Easter-Eggs.com, who already deploy Gitea
|
||||||
|
instances for their customers, would use it if, for instance, it helped
|
||||||
|
with the upgrades. They would then kindly be reminded to give back a
|
||||||
|
share of their profits in order to sustain the development of the
|
||||||
|
service they deploy.</p>
|
||||||
|
<p>Finally it would also be possible to follow the example of GitLab in the
|
||||||
|
early days (before it turned to proprietary software) or Codeberg and
|
||||||
|
offer a free shared forge hosting service to build a user base. After a
|
||||||
|
few years, a percentage of the user base would convert to being paid
|
||||||
|
customers or donors to sustain the activity and part of the income would
|
||||||
|
be used to sustain the development of the service.</p>
|
||||||
|
</content>
|
||||||
|
</entry>
|
||||||
|
</feed>
|
|
@ -0,0 +1,293 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>hostea | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="hostea" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="hostea | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="hostea" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="hostea | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
|
||||||
|
<div class="tag__title-container">
|
||||||
|
<h1 class="tag__title">#hostea</h1>
|
||||||
|
<a class="tag__rss-link--single" href="https://hostea.org/tags/hostea/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon--single"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a></div>
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="blog__post-item">
|
||||||
|
<a href="https://hostea.org/blog/project-plans-for-hosted-gitea-online-service/" class="blog__post-link">
|
||||||
|
<h2 class="blog__post-title">Project plans for a hosted Gitea online service</h2>
|
||||||
|
<p class="blog__post-meta">
|
||||||
|
18
|
||||||
|
April
|
||||||
|
|
||||||
|
,
|
||||||
|
2022 · <b>11 min read</b>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="blog__post-description">When an organization asks me about Gitea, I would like to direct them to a provider where they can rent an instance and just use it </p>
|
||||||
|
</a>
|
||||||
|
<div class="blog__post-tag-container">
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/hostea">#hostea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/gitea">#gitea</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software">#free-software</a>
|
||||||
|
|
||||||
|
<a class="blog__post-tag" href="/tags/free-software-sustainability">#free-software-sustainability</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://hostea.org/rss.xml">
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,338 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||||
|
<link rel="manifest" href="/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://hostea.org/main.css" />
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
media="screen and (max-width: 1300px)"
|
||||||
|
href="https://hostea.org/mobile.css"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<title>tags | Hostea: Managed Gitea Hosting </title>
|
||||||
|
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
|
||||||
|
<meta name="description" content="tags" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="tags | Hostea: Managed Gitea Hosting " />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="og:url" content="https://hostea.org" />
|
||||||
|
|
||||||
|
<meta property="og:description" content="tags" />
|
||||||
|
<meta
|
||||||
|
property="og:site_name"
|
||||||
|
content="tags | Hostea: Managed Gitea Hosting "
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="57x57"
|
||||||
|
href="https://hostea.org/apple-icon-57x57.png?h=c21de14cfdf862a6472ae977557fa048a7c36d39337e61d3274705e9bd8e857f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="60x60"
|
||||||
|
href="https://hostea.org/apple-icon-60x60.png?h=67089d9025a52d0d1ddce450078c7acefe2c150a2427dec9f5e13c6314f74281"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="72x72"
|
||||||
|
href="https://hostea.org/apple-icon-72x72.png?h=70725943de8884804f9da28202ced0ad6fed483ae9cf8f6d874aa133e30cb693"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="76x76"
|
||||||
|
href="https://hostea.org/apple-icon-76x76.png?h=1e6e8072df3b21bdcea254a42aac6e993611e845f91ddd79f6f35a6c441710a5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="114x114"
|
||||||
|
href="https://hostea.org/apple-icon-114x114.png?h=c20099f8190ed3962fab5726c5594857a871cdb3ee98439343c622cd3727fed6"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="120x120"
|
||||||
|
href="https://hostea.org/apple-icon-120x120.png?h=4df78e402e60b58c6d44764678bdd737b5b6a836aeb85fb75fa49f706f7e8c81"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="144x144"
|
||||||
|
href="https://hostea.org/apple-icon-144x144.png?h=0c44e6655d714f89ee95cc151032d1f0dc3204bd24d1ca2ee9d94692d4ede84d"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="152x152"
|
||||||
|
href="https://hostea.org/apple-icon-152x152.png?h=157918f883ff95d4eeb6452d0ebb61ca5e21ea0dcac1aefe825f3e2f3999052f"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="apple-touch-icon"
|
||||||
|
sizes="180x180"
|
||||||
|
href="https://hostea.org/apple-icon-180x180.png?h=7d5c16d379b7db6d8ea5aae64921d7162b84f543763acd8fc7c107f80a600213"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="192x192"
|
||||||
|
href="https://hostea.org/android-icon-192x192.png?h=095e3835b082dba07f606c33fa6f71bcd671a71e987b0ab2e46dcddceef52b9c"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="https://hostea.org/favicon-32x32.png?h=d7cd5d6390d58e729cd1f3564add60e9d8b63f54482a7f4cb5a66bb4780dfb05"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="96x96"
|
||||||
|
href="https://hostea.org/favicon-96x96.png?h=5e01ce966b1d7ed88e0b01226d74ad8aaa65cea839073eb1ec6e115e76f3b2db"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="https://hostea.org/favicon-16x16.png?h=442e55b5177a8b501f75401b6b61bddace8d1ef8d91dab611fb1993293682ba5"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="manifest"
|
||||||
|
href="https://hostea.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
|
||||||
|
/>
|
||||||
|
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||||
|
<meta
|
||||||
|
name="msapplication-TileImage"
|
||||||
|
content="https://hostea.org/ms-icon-144x144.png?h=8170ab51b871b84b8f98bd03cf441afdffb2998b7dfffb04abb7ebf5deeb1f94"
|
||||||
|
/>
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="base">
|
||||||
|
<header>
|
||||||
|
<nav class="nav__container">
|
||||||
|
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
|
||||||
|
|
||||||
|
<div class="nav__header">
|
||||||
|
<a class="nav__logo-container" href="/">
|
||||||
|
|
||||||
|
<img src="https://hostea.org/android-icon-48x48.png?h=5115cfa26ec433a1f436236b2842c138d9d17f0c5a6376e3102c14e949dae1cb"
|
||||||
|
alt="Hostea temporary logo"/>
|
||||||
|
<p class="nav__home-btn">
|
||||||
|
ostea
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<label class="nav__hamburger-menu" for="nav__toggle">
|
||||||
|
<span class="nav__hamburger-inner"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="nav__spacer"></div>
|
||||||
|
|
||||||
|
<div class="nav__link-group">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/about/">About</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/blog/">Blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="nav__link-container">
|
||||||
|
<a class="nav__link" rel="noreferrer" href="/contact/">Contact</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
<!-- See ../sass/main.scss. Required for pushing footer to the very
|
||||||
|
bottom of the page -->
|
||||||
|
<div class="main__content-container">
|
||||||
|
<main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="blog__container">
|
||||||
|
<ul class="blog__list">
|
||||||
|
|
||||||
|
<li class="tag__item">
|
||||||
|
<a href="https://hostea.org/tags/free-software/" class="tag__item-link">
|
||||||
|
<h2 class="tag__item-title">#free-software</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="tag__meta">1 entry</span>
|
||||||
|
</a>
|
||||||
|
<a class="tag__rss-link" href="https://hostea.org/tags/free-software/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<li class="tag__item">
|
||||||
|
<a href="https://hostea.org/tags/free-software-sustainability/" class="tag__item-link">
|
||||||
|
<h2 class="tag__item-title">#free-software-sustainability</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="tag__meta">1 entry</span>
|
||||||
|
</a>
|
||||||
|
<a class="tag__rss-link" href="https://hostea.org/tags/free-software-sustainability/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<li class="tag__item">
|
||||||
|
<a href="https://hostea.org/tags/gitea/" class="tag__item-link">
|
||||||
|
<h2 class="tag__item-title">#gitea</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="tag__meta">1 entry</span>
|
||||||
|
</a>
|
||||||
|
<a class="tag__rss-link" href="https://hostea.org/tags/gitea/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<li class="tag__item">
|
||||||
|
<a href="https://hostea.org/tags/hostea/" class="tag__item-link">
|
||||||
|
<h2 class="tag__item-title">#hostea</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="tag__meta">1 entry</span>
|
||||||
|
</a>
|
||||||
|
<a class="tag__rss-link" href="https://hostea.org/tags/hostea/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="tag__rss-icon"
|
||||||
|
alt="RSS icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="footer__container">
|
||||||
|
<!-- <div class="footer__column"> --->
|
||||||
|
<p class="footer__column license__conatiner">
|
||||||
|
All text <a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/"
|
||||||
|
target="_blank"
|
||||||
|
> CC-BY-SA </a
|
||||||
|
>
|
||||||
|
& code
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
|
||||||
|
target="_blank"
|
||||||
|
> AGPL </a
|
||||||
|
>
|
||||||
|
|
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
> No AMP </a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<!-- </div> -->
|
||||||
|
<div class="footer__column--center">
|
||||||
|
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
|
||||||
|
<img
|
||||||
|
src="https://hostea.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
|
||||||
|
class="footer__icon"
|
||||||
|
alt="Email icon"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a href="/about" title="Privacy Policy">About</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a href="/legalese" title="Legalese">Legalese</a>
|
||||||
|
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
|
||||||
|
<span class="footer__column-divider--mobile-only">|</span>
|
||||||
|
<a
|
||||||
|
href="https://stats.uptimerobot.com/EQ7VJHWylx"
|
||||||
|
rel="noreferrer"
|
||||||
|
target="_blank"
|
||||||
|
title="Status"
|
||||||
|
>Status</a
|
||||||
|
>
|
||||||
|
<a href="/tos" title="Terms of Service">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue