NLnet - December 1st, 2022 #1

Closed
opened 2022-11-14 08:19:33 +00:00 by dachary · 96 comments
Member

Documents are at https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet


There is a first grant application opportunity for Codename with the December 1st NLnet deadline. I have some experience applying for grants, for instance to further forge federation which will start in a few weeks.

The amount requested would be 50,000€.

The goal of the grant would be to help Codename move forward in the direction we've been discussing here and in the chatroom for the past two weeks.

Documents are at https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet --- There is a first grant application opportunity for Codename with the [December 1st](https://nlnet.nl/news/2022/20221001-call.html) NLnet deadline. I have some experience [applying for grants](https://forum.forgefriends.org/c/funding/5), for instance to further [forge federation](https://forum.forgefriends.org/t/nlnet-grant-application-for-federation-in-gitea-deadline-august-1st-2022/823) which will start in a few weeks. The amount requested would be 50,000€. The goal of the grant would be to help Codename move forward in the direction we've been [discussing here](https://codeberg.org/codename/meta/issues/24) and in the chatroom for the past two weeks.
dachary added a new dependency 2022-11-14 08:20:57 +00:00
dachary added the due date 2022-12-01 2022-11-14 08:21:12 +00:00
Author
Member

@circlebuilder I came up with this first draft (limited to 1200 characters) and I would really like your opinion, if you can spare the time.

  • The goal must be realistic, measurable and time bound.
  • Part 1: what is Smithy,
  • Part 2: what is the goal in the context of this grant,
  • Part 3: what problem does it solve.

P.S. I went with "smithy" although the name is not decided yet because it helped me more to focus: codename is rather uninspiring 😄


Smithy is a software forge project created late 2022 and used by Codeberg.org to host over 30,000 projects. Similar to services like framagit.org and hundred of other self-hosted forges, it welcomes software projects that need to break free from centralized software forges such as GitHub or GitLab. A situation that very much resembles what mastodon offers to people who move out of twitter.

The goal of this project is to provide stable Smithy software forge packages, with federated features enabled, allowing them to communicate with each other. It makes it easier to install, run and upgrade software forges that communicate with each other via ActivityPub using the Forgefed extension, git to share repositories and the Friendly Forge Format to durably store and exchange software projects artefacts.

Forge federation has made progress in the past years (https://forgefriends.org/blog/2022/06/30/2022-06-state-forge-federation/) but is not yet conveniently usable or installable because there is no software forges with a focus on federation. Smithy changes that status quo and brings together all the people and projects in a coordinated effort. Together they aim to create a mold in which federated forges can be forged, breaking down centralized forges into a constellation of federated forges.

@circlebuilder I came up with this first draft (limited to 1200 characters) and I would really like your opinion, if you can spare the time. * The goal must be realistic, measurable and time bound. * Part 1: what is Smithy, * Part 2: what is the goal in the context of this grant, * Part 3: what problem does it solve. P.S. I went with "smithy" although the name is not decided yet because it helped me more to focus: codename is rather uninspiring 😄 --- Smithy is a software forge project created late 2022 and used by Codeberg.org to host over 30,000 projects. Similar to services like framagit.org and hundred of other self-hosted forges, it welcomes software projects that need to break free from centralized software forges such as GitHub or GitLab. A situation that very much resembles what mastodon offers to people who move out of twitter. The **goal of this project is to provide stable Smithy software forge packages, with federated features enabled**, allowing them to communicate with each other. It makes it easier to install, run and upgrade software forges that communicate with each other via ActivityPub using the Forgefed extension, git to share repositories and the Friendly Forge Format to durably store and exchange software projects artefacts. Forge federation has made progress in the past years (https://forgefriends.org/blog/2022/06/30/2022-06-state-forge-federation/) but is not yet conveniently usable or installable because there is no software forges with a focus on federation. Smithy changes that status quo and brings together all the people and projects in a coordinated effort. Together they aim to create a mold in which federated forges can be forged, breaking down centralized forges into a constellation of federated forges.
Author
Member

Re-drafted completely based on Codeberg e.V. being the primary beneficiary. I'll rework it again tomorrow: it does nore read well at all but the main elements are in place.


Codeberg.org is a fast growing (8%+ per month) software forge hosting 30,000+ projects and 50,000+ contributors. Supported by the democratic non-profit Codeberg e.V., it is exclusively dedicated to Free Software.

Codeberg runs on a modified version of the Gitea software forge because it is the largest Gitea instance and frequently runs into limits that prevents it from scaling up. As it keeps growing solving these problems require more an more development. It will need a large team of full time developers to be able to manage millions of projects and users.

Forgejo is a new software forge designed to scale through federation. It will combine ActivityPub based federated features developped for Gitea and optimizations to scale to hundred of thousands of users and projects.

Codeberg.org will use Forgejo and actively encourage the creation of other federated Forgejo instances to scale horizontally. Forgejo is to GitHub what Mastodon is to Twitter.

Re-drafted completely based on Codeberg e.V. being the primary beneficiary. I'll rework it again tomorrow: it does nore read well at all but the main elements are in place. --- **Codeberg.org is a fast growing (8%+ per month) software forge hosting 30,000+ projects and 50,000+ contributors**. Supported by the democratic non-profit Codeberg e.V., it is exclusively dedicated to Free Software. **Codeberg runs on a modified version of the Gitea software forge because it is the largest Gitea instance and frequently runs into limits** that prevents it from scaling up. As it keeps growing solving these problems require more an more development. It will need a large team of full time developers to be able to manage millions of projects and users. **Forgejo is a new software forge designed to scale through federation.** It will combine ActivityPub based federated features developped for Gitea and optimizations to scale to hundred of thousands of users and projects. **Codeberg.org will use Forgejo and actively encourage the creation of other federated Forgejo instances to scale horizontally.** Forgejo is to GitHub what Mastodon is to Twitter.

Prepare for further enquiries if you compare it with Mastodon. It's visible now how Mastodon reacts to massive load (delayed message delivery etc).

Regarding ActivityPub: Wasn't @fr3looking into Cap'n Proto?

Prepare for further enquiries if you compare it with Mastodon. It's visible now how Mastodon reacts to massive load (delayed message delivery etc). Regarding ActivityPub: Wasn't @fr3looking into [Cap'n Proto](https://capnproto.org/)?
Author
Member

Agreed. And it's indeed a challenge that will need a lot of work. But I think it's both unavoidable and interesting (from an engineering point of view at least).

Agreed. And it's indeed a challenge that will need a lot of work. But I think it's both unavoidable and interesting (from an engineering point of view at least).

Just figured to highlight it here so that you can think of answers in case NLNet comes back with clarifying questions.

Of course, a roadmap can change over the course of a year in the event of further understanding.

Just figured to highlight it here so that you can think of answers in case NLNet comes back with clarifying questions. Of course, a roadmap can change over the course of a year in the event of further understanding.
Author
Member

Re-drafted the project presentation again (see the full draft application that contains it), I think it is ready for review. The limit is 1200 characters, there are 45 characters left.

The focus of the grant is that Forgejo solves a scaling problem via federation. It matters to Codeberg e.V. (reason why it is best able to work on it) and the general public (reason why NLnet might be willing to fund it). It is only a subset of what Forgejo is about but it is, IMHO, SMART.


Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developped for Gitea and optimizations developped for Codeberg to scale up to tenths of thousands of users and projects.

Codeberg is a fast growing (8%+ per month) software forge hosting 30,000+ Free Software projects and 50,000+ contributors. Supported by a democratic non-profit it runs on a modified version of the Gitea software forge. It is the largest Gitea instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users.

Such a large scale centralization would however create problems that can be observed on existing proprietary software forges such as GitHub or GitLab that ban entire countries from participating. Instead, Codeberg chose to create Forgejo and make it as easy as possible for other communities to emerge and become part of an ever growing federation of software forges communicating with each other via standards such as ActivityPub.

Re-drafted the project presentation again (see the [full draft application](https://pad.gusted.xyz/P3oySzXeSr-uFy_Kow0qaA?view) that contains it), I think it is ready for review. The limit is 1200 characters, there are 45 characters left. The focus of the grant is that Forgejo solves a scaling problem via federation. It matters to Codeberg e.V. (reason why it is best able to work on it) and the general public (reason why NLnet might be willing to fund it). It is only a subset of what Forgejo is about but it is, IMHO, [SMART](https://en.wikipedia.org/wiki/SMART_criteria). --- Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developped for Gitea and optimizations developped for Codeberg to scale up to tenths of thousands of users and projects. Codeberg is a fast growing (8%+ per month) software forge hosting 30,000+ Free Software projects and 50,000+ contributors. Supported by a democratic non-profit it runs on a modified version of the Gitea software forge. It is the largest Gitea instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users. Such a large scale centralization would however create problems that can be observed on existing proprietary software forges such as GitHub or GitLab that ban entire countries from participating. Instead, Codeberg chose to create Forgejo and make it as easy as possible for other communities to emerge and become part of an ever growing federation of software forges communicating with each other via standards such as ActivityPub.

In follow-up to some feedback on chat..


Forgejo is a new software forge and community-driven free software project. Based on the Gitea project and benefiting from early work on forge federation, as well as incorporating scalability features and optimizations built by Codeberg, who are custodians of the project, Forgejo will explore "federated free software development" to its full extent.

Codeberg is a fast-growing (8%+ per month) software forge hosting provider, hosting 30,000+ Free Software projects and 50,000+ contributors. Previously based on a fork of Gitea, in a new collaboration Codeberg and Forgejo will dedicate to finding solutions to decentralize services in sustainable ways.

For the NLnet program we will investigate [this solution] to [this challenge] and [develop this concrete thing] ..

In follow-up to [some feedback](https://matrix.to/#/!qjPHwFPdxhpLkXMkyP:matrix.org/$yRGBwSXsrrJYalWh35AUWsX8c6fduS-K6CrmdWA1GUM?via=matrix.org&via=exozy.me&via=tchncs.de) on chat.. --- Forgejo is a new software forge and community-driven free software project. Based on the Gitea project and benefiting from early work on forge federation, as well as incorporating scalability features and optimizations built by Codeberg, who are custodians of the project, Forgejo will explore "federated free software development" to its full extent. Codeberg is a fast-growing (8%+ per month) software forge hosting provider, hosting 30,000+ Free Software projects and 50,000+ contributors. Previously based on a fork of Gitea, in a new collaboration Codeberg and Forgejo will dedicate to finding solutions to decentralize services in sustainable ways. For the NLnet program we will investigate [this solution] to [this challenge] and [develop this concrete thing] ..
Author
Member

Forgejo is a new software forge and community-driven free software project. Based on the Gitea project and benefiting from early work on forge federation, as well as incorporating scalability features and optimizations built by Codeberg, who are custodians of the project, Forgejo will explore "federated free software development" to its full extent.

I would not know how to explain what "exploring federated free software development to its full extent" means. When writing a grant application I tend to stick to facts, problem statements, solutions and implementation. So that the reviewer does not need to learn new concepts (which would have to be defined) such as "federated free software development".

> Forgejo is a new software forge and community-driven free software project. Based on the Gitea project and benefiting from early work on forge federation, as well as incorporating scalability features and optimizations built by Codeberg, who are custodians of the project, Forgejo will explore "federated free software development" to its full extent. I would not know how to explain what "exploring federated free software development to its full extent" means. When writing a grant application I tend to stick to facts, problem statements, solutions and implementation. So that the reviewer does not need to learn new concepts (which would have to be defined) such as "federated free software development".

I would not know how to explain what "exploring federated free software development to its full extent" means.

What you do on daily basis.. all activities of the FSDL.. all potentially federated.

As I mentioned in chat:

"federated free software development" is a new concept that would need to be defined before it can be used.

You might do that in the body, need not be part of the summary. It is a vision, nothing more, but one that provides clear direction.
It goes beyond looking at apps and tools to what developers are actually doing

Compare as analogy:

  • "We will federate word processors"
  • "We will allow collaborative authoring & editing"

A code forge is a rather random thing.. who knows what it contains in terms of tools, and what it will contain in the future. The term "code forge" furthermore is mostly only known in FOSS circles.

> I would not know how to explain what "exploring federated free software development to its full extent" means. What you do on daily basis.. all activities of the FSDL.. all potentially federated. As I [mentioned](https://matrix.to/#/!qjPHwFPdxhpLkXMkyP:matrix.org/$aJoPK9LOReWEEGlCHkFABKSGCuyvtyde_G39935bap4?via=matrix.org&via=exozy.me&via=tchncs.de) in chat: >> "federated free software development" is a new concept that would need to be defined before it can be used. > >You might do that in the body, need not be part of the summary. It is a vision, nothing more, but one that provides clear direction. >It goes beyond looking at apps and tools to what developers are actually doing > >Compare as analogy: > >- "We will federate word processors" >- "We will allow collaborative authoring & editing" A code forge is a rather random thing.. who knows what it contains in terms of tools, and what it will contain in the future. The term "code forge" furthermore is mostly only known in FOSS circles.
Author
Member

I would not know how to explain what "exploring federated free software development to its full extent" means.

What you do on daily basis.. all activities of the FSDL.. all potentially federated.

To clarify: I understand what it means. What I would have trouble with is explaining what it means to other people.

A code forge is a rather random thing.. who knows what it contains in terms of tools, and what it will contain in the future. The term "code forge" furthermore is mostly only known in FOSS circles.

True. All NLnet reviewers are in the FOSS circles and assuming "code forges" is something they are familiar with is, IMHO, reasonable.

> > I would not know how to explain what "exploring federated free software development to its full extent" means. > > What you do on daily basis.. all activities of the FSDL.. all potentially federated. To clarify: I understand what it means. What I would have trouble with is explaining what it means to other people. > A code forge is a rather random thing.. who knows what it contains in terms of tools, and what it will contain in the future. The term "code forge" furthermore is mostly only known in FOSS circles. True. All NLnet reviewers are in the FOSS circles and assuming "code forges" is something they are familiar with is, IMHO, reasonable.
Author
Member

@oliverpool @Ryuno-Ki could you please post a short bio for inclusion in the grant application? Here are the bios included in the Gitea forge federation grant for inspiration:

Anthony Wang has been the most active developer in Gitea for the implementation of the ActivityPub protocol. He established a relationship with the author of the go-ap package to figure out the best way to implement support for the forgefed extension. He maintains a detailed list of the tasks required to fully implement ActivityPub and actively reaches out to motivate fellow developers to join the effort.

Loïc Dachary contributed dozens of patches to the Gitea codebase, including an early implementation of the ActivityPub protocol and is engaged in a large undertaking to improve the Gitea import/export features. He played an instrumental role in reviving the forgefed project and contributed new vocabulary to the specifications. He is a skilled Go developer and has been working to further forge federation since early 2021.

6543 is one of the top five most active developers of the Gitea project. He has actively participated in the current implementation of the ActivityPub protocol in Gitea and keeps a curated list of tasks related to federation in the Gitea issue tracker. He is also a part time employee of the Codeberg non profit for which he helps maintain a long standing fork of Gitea. In June 2022 he declared his intention to enable federation in Codeberg as soon as it is available in the Gitea codebase. A primary concern in this context is the implementation of moderation features which are more challenging in a federated context than in isolated instances.

Gusted joined the Gitea project in 2021 and quickly became one of the most active contributors. In 2022 he participated in most of the discussions related to how ActivityPub could be implemented in Gitea. His knowledge of the architecture and the codebase are essential to find the best way to approach non-trivial problems such as the representation of federated users or the translation of internal references to issues, pull requests, etc.

@oliverpool @Ryuno-Ki could you please post a short bio for inclusion in the grant application? Here are the bios included in the [Gitea forge federation grant](https://forum.forgefriends.org/t/nlnet-grant-application-for-federation-in-gitea-deadline-august-1st-2022/823/4) for inspiration: > Anthony Wang has been the most active developer in Gitea for the implementation of the ActivityPub protocol. He established a relationship with the author of the go-ap package to figure out the best way to implement support for the forgefed extension. He maintains a [detailed list of the tasks](https://gitea.com/Ta180m/gitea/issues/3) required to fully implement ActivityPub and actively reaches out to motivate fellow developers to join the effort. > > Loïc Dachary contributed dozens of patches to the Gitea codebase, including an early implementation of the ActivityPub protocol and is engaged in a large undertaking to [improve the Gitea import/export features](https://lab.forgefriends.org/forgefriends/forgefriends/-/merge_requests/55). He played an instrumental role in [reviving the forgefed project](https://forum.forgefriends.org/c/development/forgefed/18) and contributed [new vocabulary](https://codeberg.org/ForgeFed/ForgeFed/commit/aa418f352ff4b1337dbc201543ed19eb6e594d34) to the specifications. He is a skilled Go developer and has been working to further forge federation [since early 2021](https://forgefriends.org//tags/report/page/2/). > > 6543 is one of the [top five most active developers of the Gitea project](https://github.com/go-gitea/gitea/graphs/contributors). He has actively participated in the current implementation of the ActivityPub protocol in Gitea and keeps a [curated list of tasks related to federation in the Gitea issue tracker](https://github.com/go-gitea/gitea/issues/18240). He is also a part time [employee of the Codeberg non profit](https://blog.codeberg.org/letter-from-codeberg-we-are-now-an-employer.html) for which he helps maintain a long standing fork of Gitea. In June 2022 [he declared his intention to enable federation in Codeberg](https://forgefriends.org/blog/2022/06/30/2022-06-state-forge-federation/) as soon as it is available in the Gitea codebase. A primary concern in this context is the implementation of moderation features which are more challenging in a federated context than in isolated instances. > > Gusted joined the Gitea project in 2021 and [quickly became one of the most active contributors](https://github.com/go-gitea/gitea/graphs/contributors). In 2022 he participated in most of the discussions related to how ActivityPub could be implemented in Gitea. His knowledge of the architecture and the codebase are essential to find the best way to approach non-trivial problems such as the representation of federated users or the translation of internal references to issues, pull requests, etc.
Author
Member

Final version of the introduction, based on chat discussions and comments in this issue. (see the full draft application that contains it). The limit is 1200 characters, there are 15 characters left.

The focus of the grant is that Forgejo solves a scaling problem via federation. It matters to Codeberg e.V. (reason why it is best able to work on it) and the general public (reason why NLnet might be willing to fund it). It is only a subset of what Forgejo is about but it is, IMHO, SMART.

  • Specific: targets a specific area for improvement: scaling
  • Measurable: quantify or at least suggest an indicator of progress: each forgejo release made available to the general public is a measure of success
  • Assignable: specify who will do it: Codeberg e.V. @Ryuno-Ki @oliverpool @dachary
  • Realistic: state what results can realistically be achieved, given available resources: a forgejo release that combines (i) Codeberg scaling improvements (ii) federation features
  • Time-related: specify when the result(s) can be achieved. 12 months

Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developped for Gitea and optimizations developped for Codeberg to scale up to tenths of thousands of users and projects.

Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users.

Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of federated forge hosting organizations. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates.

Forgejo is to GitHub what Mastodon is to Twitter.

Final version of the introduction, based on chat discussions and comments in this issue. (see the [full draft application](https://pad.gusted.xyz/P3oySzXeSr-uFy_Kow0qaA?view) that contains it). The limit is 1200 characters, there are 15 characters left. The focus of the grant is that Forgejo solves a scaling problem via federation. It matters to Codeberg e.V. (reason why it is best able to work on it) and the general public (reason why NLnet might be willing to fund it). It is only a subset of what Forgejo is about but it is, IMHO, [SMART](https://en.wikipedia.org/wiki/SMART_criteria). * Specific: targets a specific area for improvement: **scaling** * Measurable: quantify or at least suggest an indicator of progress: **each forgejo release made available to the general public is a measure of success** * Assignable: specify who will do it: **Codeberg e.V. @Ryuno-Ki @oliverpool @dachary** * Realistic: state what results can realistically be achieved, given available resources: **a forgejo release that combines (i) Codeberg scaling improvements (ii) federation features** * Time-related: specify when the result(s) can be achieved. **12 months** --- Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developped for Gitea and optimizations developped for Codeberg to scale up to tenths of thousands of users and projects. Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users. Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of federated forge hosting organizations. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates. Forgejo is to GitHub what Mastodon is to Twitter.

@dachary Is there a character limit regarding the bio? Or „a few lines”?

I'm quite down for today, but will have some slack time tomorrow as I am expecting to stand in a queue.

@dachary Is there a character limit regarding the bio? Or „a few lines”? I'm quite down for today, but will have some slack time tomorrow as I am expecting to stand in a queue.
Author
Member

@Ryuno-Ki no character limit.

@Ryuno-Ki no character limit.
Owner

@dachary here is a first take, unfortunately not very long... Should I mention other go open-source projets I am working on? (see https://codeberg.org/pfad.fr)

Olivier Charvin is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to improve the webhook system.

@dachary here is a first take, unfortunately not very long... Should I mention other go open-source projets I am working on? (see https://codeberg.org/pfad.fr) > Olivier Charvin is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to [improve the webhook system](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+author%3Aoliverpool).
Author
Member

@dachary here is a first take, unfortunately not very long... Should I mention other go open-source projets I am working on? (see https://codeberg.org/pfad.fr)

Olivier Charvin is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to improve the webhook system.

This is good enough. Short but has the essential informations that make you a good candidate IMHO.

> @dachary here is a first take, unfortunately not very long... Should I mention other go open-source projets I am working on? (see https://codeberg.org/pfad.fr) > > > Olivier Charvin is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to [improve the webhook system](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+author%3Aoliverpool). > > This is good enough. Short but has the essential informations that make you a good candidate IMHO.
Author
Member

@fnetX @oliverpool @Ryuno-Ki here is the final version of the grant application (a few minor changes / rewording after reading all of it again today). Unless there is an objection it will be sent as soon as @Ryuno-Ki bio is available.


Deadline December 1st, 2022

https://nlnet.nl/entrust/
https://nlnet.nl/propose/

Thematic call: https://nlnet.nl/entrust/
Your name: The Forgejo project
Email address: entrust2022@forgejo.org
Phone numbers: [redacted]
Organisation (if any): Codeberg e.V.
Country: Germany

Project name: Forgejo, a federated software forge that scales out
Website / wiki: https://codeberg.org/forgejo
Abstract: Can you explain the whole project and its expected outcome(s).

Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developed for Gitea and optimizations developed for Codeberg to scale up to tenths of thousands of users and projects.

Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit, it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users.

Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of other forges and communicating with them to create a federation. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates.

Forgejo is to GitHub what Mastodon is to Twitter.

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

Codeberg e.V. is a non-profit organization created in 2019, based in Berlin, Germany. It is dedicated to supporting Codeberg, a collaboration platform and Git hosting for Free Software, content and projects where a community of like-minded developers and content creators work together. Over the years Codeberg members developed numerous improvements to the Gitea codebase, for customization and, as it grew to become the largest Gitea instance, for scaling up. These changes are currently available in a modified version of Gitea dedicated to Codeberg and unsuitable for self-hosting or packaging in another context. Forgejo is a natural evolution along this path. In 2022 Codeberg e.V. hired their first employee, one of the most active Gitea developers. Codeberg e.V. is in the best possible position to recruit and hire skilled people to advance Forgejo and provide them with a productive environment.

Olivier Charvin is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to improve the webhook system.

André Jaenisch is a senior web developer with a focus on front-end and a passion for accessibility. His broad knowledge allows him to consider a challenge from different angles to come up with the best solution. His contributions to Gitea were well accepted by the team. Now he's eager to take it to the next level.

Requested Amount: 50,000€

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

The budget will be used exclusively to pay for the time of the people working on implementing Forgejo at a 60€ per hour rate.

Forgejo was created November 2022 and has no other funding source.

Forgejo is based on independent projects which received funding in the past years.

  • ForgeFed received funding in 2019 (https://nlnet.nl/project/ForgeFed/) and completed the grant in September 2022.

  • The discussions regarding the support of ActivityPub in Gitea started late 2020 (https://github.com/go-gitea/gitea/issues/14186) but the developers involved in Gitea did not have the resources to make progress. In January 2022 a grant was awarded to two Gitea developers to advance federation but they have not been able to advance the workplan. Progress was made independently in 2022, for the most part by Anthony Wang, Loïc Dachary, Gusted and 6543 who received funding from NLnet in 2022 to continue their work (Code: 2022-08-067).

Compare your own project with existing or historical efforts.

Forgejo is the only software forge with a focus on federation. It builds upon the Codeberg.org modified Gitea version to scale up and leverages federated features developed on top of Gitea to scale out.

Pagure: a forgefed plugin was developed for the pagure forge in 2021. It is not actively maintained and not distributed by default. Scaling was never discussed in this context.

GitLab: there are discussions related to federation in GitLab but there is no ongoing development. The GitLab codebase itself is designed to scale up to tenths of millions of users and project to support the GitLab.com centralized instance. The idea of scaling out through federation was never discussed. On the contrary there is a strong focus on centralized instances.

Vervis: the vervis forge initiated by the authors of ForgeFed is designed as a reference implementation for the specification. It is not yet production ready. Although it could, eventually, follow the footsteps of Forgejo, it will likely be a few years before it is considered a possibility.

Gitea: all developers involved in implementing federated features in Gitea in 2022 are also involved in Forgejo. Their work will be part of Forgejo and efforts will be made to contribute it back to Gitea. Since Gitea does not focus on federation, it is possible that some of the features will not be accepted.

The larger landscape of forge federation is described in the State of the Forge Federation: 2021 to 2023 that was published in June 2022. It was authored by Loïc Dachary and reviewed by all active participants.

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

Federated features in Forgejo are in an experimental state as of November 2022. Releasing a stable distribution including them and that can be relied on in production is a core challenge.

Each feature will need to be carefully tested before being activated in the release. Early adopters running Forgejo in production will need to be carefully monitored and bug fixes released in a timely manner to keep them operating within the expected range of security and efficiency.

Content and user moderation in a federated environment is more difficult than for centralized forges because there are more communication channels, different threat models and permissions. The moderation tools are still in their infancy and will need to mature so that a Forgejo instance administrator is not overwhelmed by moderation tasks.

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

Codeberg.org will use Forgejo: it will show to its ~40,000 users that it is to be trusted to work reliably in a production environment at scale. The "relevant actors" are:

  • System administrators who want to self-host a software forge
  • System administrators who want to experiment with forge federation
  • People who want to improve Forgejo

These actors will be reached by word of mouth via Codeberg.org users.

Forgejo is not an isolated undertaking, representatives of most projects who independently worked on forge federation in the past came together and take an active part: ForgeFed, Codeberg, Gitea, ForgeFriends, ForgeFlux and Vervis.

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

X I want NLnet Foundation to erase all information should my project proposal not be granted

@fnetX @oliverpool @Ryuno-Ki here is the final version of the grant application (a few minor changes / rewording after reading all of it again today). Unless there is an objection it will be sent as soon as @Ryuno-Ki bio is available. --- Deadline December 1st, 2022 https://nlnet.nl/entrust/ https://nlnet.nl/propose/ Thematic call: https://nlnet.nl/entrust/ Your name: The Forgejo project Email address: entrust2022@forgejo.org Phone numbers: [redacted] Organisation (if any): Codeberg e.V. Country: Germany > Project name: Forgejo, a federated software forge that scales out > Website / wiki: https://codeberg.org/forgejo > Abstract: Can you explain the whole project and its expected outcome(s). Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developed for Gitea and optimizations developed for Codeberg to scale up to tenths of thousands of users and projects. Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit, it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. As Codeberg keeps growing, solving these problems would require a large team of full time developers to scale to millions of projects and users. Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of other forges and communicating with them to create a federation. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates. Forgejo is to GitHub what Mastodon is to Twitter. > Have you been involved with projects or organisations relevant to this project before? And if so, can you tell us a bit about your contributions? **[Codeberg e.V.](https://docs.codeberg.org/getting-started/what-is-codeberg/#what-is-codeberg-e.v.%3F)** is a non-profit organization created in 2019, based in Berlin, Germany. It is dedicated to supporting [Codeberg](https://codeberg.org/about), a collaboration platform and Git hosting for Free Software, content and projects where a community of like-minded developers and content creators work together. Over the years Codeberg members developed numerous improvements to the Gitea codebase, for customization and, as it grew to become the largest Gitea instance, for scaling up. These changes are currently available in [a modified version of Gitea](https://codeberg.org/codeberg/gitea) dedicated to Codeberg and unsuitable for self-hosting or packaging in another context. Forgejo is a natural evolution along this path. In 2022 Codeberg e.V. hired their first employee, one of the most active Gitea developers. Codeberg e.V. is in the best possible position to recruit and hire skilled people to advance Forgejo and provide them with a productive environment. **Olivier Charvin** is a seasoned Go developer, eager to enable interoperability between platforms. He recently started contributing to Gitea, by refactoring and adding features to [improve the webhook system](https://github.com/go-gitea/gitea/pulls?q=is%3Apr+author%3Aoliverpool). **André Jaenisch** is a senior web developer with a focus on front-end and a passion for accessibility. His broad knowledge allows him to consider a challenge from different angles to come up with the best solution. His [contributions to Gitea](https://github.com/go-gitea/gitea/issues?q=commenter%3ARyuno-Ki) were well accepted by the team. Now he's eager to take it to the next level. > Requested Amount: 50,000€ > Explain what the requested budget will be used for? Does the project have other funding sources, both past and present? (If you want, you can in addition attach a budget at the bottom of the form) The budget will be used exclusively to pay for the time of the people working on implementing Forgejo at a 60€ per hour rate. Forgejo was created November 2022 and has no other funding source. Forgejo is based on independent projects which received funding in the past years. * **ForgeFed** received funding in 2019 (https://nlnet.nl/project/ForgeFed/) and completed the grant in September 2022. * The discussions regarding the support of ActivityPub in Gitea started late 2020 (https://github.com/go-gitea/gitea/issues/14186) but the developers involved in Gitea did not have the resources to make progress. In January 2022 a [grant was awarded](https://nlnet.nl/project/Gitea/) to two Gitea developers to advance federation but they have not been able to advance the workplan. Progress was made independently in 2022, for the most part by Anthony Wang, Loïc Dachary, Gusted and 6543 who received funding from NLnet in 2022 to continue their work (Code: 2022-08-067). > Compare your own project with existing or historical efforts. **Forgejo is the only software forge with a focus on federation**. It builds upon the Codeberg.org modified Gitea version to scale up and leverages federated features developed on top of Gitea to scale out. **Pagure:** a [forgefed plugin](https://pagure.io/pagure-forgefed) was developed for the [pagure](https://pagure.io) forge in 2021. It is not actively maintained and not distributed by default. Scaling was never discussed in this context. **GitLab:** there are discussions related to federation in GitLab but there is no ongoing development. The GitLab codebase itself is designed to scale up to tenths of millions of users and project to support the GitLab.com centralized instance. The idea of scaling out through federation was never discussed. On the contrary there is a strong focus on centralized instances. **Vervis:** the [vervis](https://vervis.peers.community/) forge initiated by the authors of ForgeFed is designed as a reference implementation for the specification. It is not yet production ready. Although it could, eventually, follow the footsteps of Forgejo, it will likely be a few years before it is considered a possibility. **Gitea:** all developers involved in implementing federated features in Gitea in 2022 are also involved in Forgejo. Their work will be part of Forgejo and efforts will be made to contribute it back to Gitea. Since Gitea does not focus on federation, it is possible that some of the features will not be accepted. The larger landscape of forge federation is described in the [State of the Forge Federation: 2021 to 2023](https://forgefriends.org/blog/2022/06/30/2022-06-state-forge-federation/) that was published in June 2022. It was authored by Loïc Dachary and reviewed by all active participants. > What are significant technical challenges you expect to solve during the project, if any? **Federated features in Forgejo are in an experimental state** as of November 2022. Releasing a stable distribution including them and that can be relied on in production is a core challenge. **Each feature will need to be carefully tested** before being activated in the release. Early adopters running Forgejo in production will need to be carefully monitored and bug fixes released in a timely manner to keep them operating within the expected range of security and efficiency. **Content and user moderation in a federated environment is more difficult** than for centralized forges because there are more communication channels, different threat models and permissions. The moderation tools are still in their infancy and will need to mature so that a Forgejo instance administrator is not overwhelmed by moderation tasks. > Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes? Codeberg.org will use Forgejo: it will show to its ~40,000 users that it is to be trusted to work reliably in a production environment at scale. The "relevant actors" are: * System administrators who want to self-host a software forge * System administrators who want to experiment with forge federation * People who want to improve Forgejo These actors will be reached by word of mouth via Codeberg.org users. Forgejo is not an isolated undertaking, representatives of most projects who independently worked on forge federation in the past came together and take an active part: ForgeFed, Codeberg, Gitea, ForgeFriends, ForgeFlux and Vervis. > What should we do in the other case, e.g. when your project is not immediately selected? X I want NLnet Foundation to erase all information should my project proposal not be granted
dachary removed a dependency 2022-11-24 14:56:16 +00:00

Okay, today I had less mental pressure, so I believe I can cook up a bio :)

André Jaenisch is a senior web developer with a focus on front-end and a passion for accessibility. His broad knowledge allows him to consider a challenge from different angles to come up with the best solution. His contributions to Gitea were well accepted by the team. Now he's eager to take it to the next level.

Okay, today I had less mental pressure, so I believe I can cook up a bio :) > André Jaenisch is a senior web developer with a focus on front-end and a passion for accessibility. His broad knowledge allows him to consider a challenge from different angles to come up with the best solution. His [contributions to Gitea](https://github.com/go-gitea/gitea/issues?q=commenter%3ARyuno-Ki) were well accepted by the team. Now he's eager to take it to the next level.

Loïc Dachary (TBD)

Nuff said? 😹

> Loïc Dachary (TBD) Nuff said? 😹

Forgejo is a new software forge designed to scale to millions of users and projects […] and optimizations developed for Codeberg to scale up to tenths of thousands of users and projects.

What's the order of magnitude here?

> Forgejo is a new software forge designed to scale to millions of users and projects […] and optimizations developed for Codeberg to scale up to tenths of thousands of users and projects. What's the order of magnitude here?

The budget will be used exclusively to pay for the time of the people working on implementing Forgejo at a 60€ per hour rate.

In case it will come up: I'm okay with that hourly rate. Happy to also testify so in the forgefriends forums in case you want to keep track of it there.

@oliverpool fine with you as well?

> The budget will be used exclusively to pay for the time of the people working on implementing Forgejo at a 60€ per hour rate. In case it will come up: I'm okay with that hourly rate. Happy to also testify so in the forgefriends forums in case you want to keep track of it there. @oliverpool fine with you as well?
Author
Member

Sent to @fnetX @Ryuno-Ki @oliverpool. No action required.

Hi,

entrust2022@forgejo.org is the mailbox[0] that was created to hold confidential information regarding the NLnet grant application. It will exclusively be used for the unredacted documents (Memorandum of Understanding and requests for payments). For each of those documents an anonymized version will be published in the repository[1].

User: entrust2022@forgejo.org
Password: [redacted]

Cheers

[0] https://docs.ovh.com/fr/emails/configuration-email-configuration-pour-thunderbird/
[1] https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet
Sent to @fnetX @Ryuno-Ki @oliverpool. No action required. ``` Hi, entrust2022@forgejo.org is the mailbox[0] that was created to hold confidential information regarding the NLnet grant application. It will exclusively be used for the unredacted documents (Memorandum of Understanding and requests for payments). For each of those documents an anonymized version will be published in the repository[1]. User: entrust2022@forgejo.org Password: [redacted] Cheers [0] https://docs.ovh.com/fr/emails/configuration-email-configuration-pour-thunderbird/ [1] https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet ```
Author
Member

The application was submitted and was assigned Code: 2022-12-034 and archived in the repository. I'll ping January 18th, 2022 unless there are news before.

The application was submitted and was assigned **Code: 2022-12-034** and [archived in the repository](https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet/application.txt). I'll ping January 18th, 2022 unless there are news before.
dachary modified the due date from 2022-12-01 to 2023-01-18 2022-11-24 21:03:41 +00:00
Owner

Thank you for all the hard work!

I finally had the time to read it through and it looks very good (disclaimer: I have no experience with such applications).

In the intro, it is written Codeberg, whereas the end mentions Codeberg.org. Maybe we should stick to one? (I think Codeberg.org is better, to differentiate with Codeberg e.V).

I have the following suggestions for the Abstract. Feel free to dismiss them, given my lack of experience in such matters...


Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developed for Gitea and optimizations developed for Codeberg.

(I would remove the end "to scale up to tenths of thousands of users and projects", since it seems redundant with the beginning and repeated in the paragraph below)

Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit, it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. To scale to millions of projects and users Codeberg would need to hire highly skilled developers, able to tackle such unique challenges (since no other instance will likely ever meet such issues).

(I propose to reword the end, to better show that supporting the original claim "scale to millions" would be very challenging for Codeberg alone. I find the "As Codeberg keeps growing" to sound "Codeberg wants to grow to millions").

Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of other forges and communicating with them to create a federation. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates.

(no change, keep as-is)

Forgejo aims to be to GitHub what Mastodon is to Twitter.

(I find that "Forgejo is to Github" sounds pretentious, given that we just got started. Hence the suggestion to use "aims to be to")


Regarding the hourly rate, it could be seen as low for a developer mission, but since it is an open-source developer mission, it is actually quite high! (Considering that most of my open-source work in not paid ^^).
Anyway I agree to the 60€ hourly rate.

Thank you for all the hard work! I finally had the time to read it through and it looks very good (disclaimer: I have no experience with such applications). In the intro, it is written `Codeberg`, whereas the end mentions `Codeberg.org`. Maybe we should stick to one? (I think `Codeberg.org` is better, to differentiate with `Codeberg e.V`). I have the following suggestions for the Abstract. Feel free to dismiss them, given my lack of experience in such matters... --- > Forgejo is a new software forge designed to scale to millions of users and projects by combining ActivityPub based federated features developed for Gitea and optimizations developed for Codeberg. (I would remove the end "to scale up to tenths of thousands of users and projects", since it seems redundant with the beginning and repeated in the paragraph below) > Codeberg is a fast growing (8%+ per month) software forge hosting ~50,000 Free Software projects and ~40,000 contributors. Supported by a democratic non-profit, it runs on a modified version of the Gitea software forge. It is the largest instance and frequently runs into limits that prevents it from scaling up. To scale to millions of projects and users Codeberg would need to hire highly skilled developers, able to tackle such unique challenges (since no other instance will likely ever meet such issues). (I propose to reword the end, to better show that supporting the original claim "scale to millions" would be very challenging for Codeberg alone. I find the "As Codeberg keeps growing" to sound "Codeberg wants to grow to millions"). >Such a large scale centralization would however create problems that can be observed on existing proprietary software forges that ban entire countries from participating. Instead, Codeberg chose to scale out by facilitating the emergence of other forges and communicating with them to create a federation. Forgejo aims at lowering the technical barrier, facilitate moderation in a federated environment and provide the expected security updates. (no change, keep as-is) > Forgejo aims to be to GitHub what Mastodon is to Twitter. (I find that "Forgejo is to Github" sounds pretentious, given that we just got started. Hence the suggestion to use "aims to be to") --- Regarding the hourly rate, it could be seen as low for a developer mission, but since it is an open-source developer mission, it is actually quite high! (Considering that most of my open-source work in not paid ^^). Anyway I agree to the 60€ hourly rate.
Author
Member

Woops, I'm sorry it was posted a minute ago. Your remarks are good as they would make the proposal less pretentious and clearer regarding the scaling ambition. Right now I'm out of fuel for this grant application but I'll schedule to look at it again on saturday and see if I can find the inspiration to rewrite the part you suggested.

Woops, I'm sorry it was posted a minute ago. Your remarks are good as they would make the proposal less pretentious and clearer regarding the scaling ambition. Right now I'm out of fuel for this grant application but I'll schedule to look at it again on saturday and see if I can find the inspiration to rewrite the part you suggested.
Owner

Oh sorry, your messages came in as I wrote mine.

Feel free to disregard my comment and take some well-deserved rest 😄

Oh sorry, your messages came in as I wrote mine. Feel free to disregard my comment and take some well-deserved rest :smile:
Owner

(In my message I already re-wrote the paragraphs)

(In my message I already re-wrote the paragraphs)
Author
Member

Oh, I thought you were suggesting a rewrite. In that case I'll re-submit tomorrow with your changes, great!

Oh, I thought you were suggesting a rewrite. In that case I'll re-submit tomorrow with your changes, great!

Let's rock this! 🚀

@dachary Can we close this issue once you submitted it?
I would suggest to open a new one if something comes back from NLNet (and reference this issue here if needed).

Let's rock this! 🚀 @dachary Can we close this issue once you submitted it? I would suggest to open a new one if something comes back from NLNet (and reference this issue here if needed).
Author
Member

I'd rather keep updating this one if I'm the one doing it.

I'd rather keep updating this one if I'm the one doing it.
Author
Member

@oliverpool your changes were applied here 0ac3153d79 with a few minor modifications to keep it under 1200 characters 44d0b03269

@oliverpool your changes were applied here https://codeberg.org/forgejo/funding/commit/0ac3153d79e5607ab8b97997ba8775e461f9fb1d with a few minor modifications to keep it under 1200 characters https://codeberg.org/forgejo/funding/commit/44d0b0326929b2bc71dcc5466b6f6403ff39968b
Author
Member

The application was submitted again and was assigned Code: 2022-12-035 and archived in the repository. I'll ping January 18th, 2022 unless there are news before.

The application was submitted again and was assigned **Code: 2022-12-035** and [archived in the repository](https://codeberg.org/forgejo/funding/src/branch/master/2022-12-01-nlnet/application.txt). I'll ping January 18th, 2022 unless there are news before.
Author
Member

Mail received today


Dear Forgejo team,

this mail serves to acknowledge receipt of your grant application "Forgejo, a federated software forge that scales out" (2022-12-035). The project will be carefully reviewed for eligibility in two rounds following the criteria set out here:

https://nlnet.nl/entrust/eligibility

We expect the first round to take about five weeks, but given natural variation in the amount of projects and their complexity it may take longer or shorter. When the first round of review is done, we will inform you whether or not your project will be selected to enter the second round of the December 2022 call. Meanwhile, keep up the good work - and why not check out some of the wonderful projects already funded by NLnet Foundation:

https://nlnet.nl/project/current.html

Or have a look at how you can help out with reducing the impact of software patents on the FOSS ecosystem:

https://nlnet.nl/help

Kind regards,
on behalf of NLnet foundation,

Mail received today --- > Dear Forgejo team, > > this mail serves to acknowledge receipt of your grant application "Forgejo, a federated software forge that scales out" (2022-12-035). The project will be carefully reviewed for eligibility in two rounds following the criteria set out here: > > https://nlnet.nl/entrust/eligibility > > We expect the first round to take about five weeks, but given natural variation in the amount of projects and their complexity it may take longer or shorter. When the first round of review is done, we will inform you whether or not your project will be selected to enter the second round of the December 2022 call. Meanwhile, keep up the good work - and why not check out some of the wonderful projects already funded by NLnet Foundation: > > https://nlnet.nl/project/current.html > > Or have a look at how you can help out with reducing the impact of software patents on the FOSS ecosystem: > > https://nlnet.nl/help > > Kind regards, > on behalf of NLnet foundation,
dachary modified the due date from 2023-01-18 to 2023-02-15 2023-02-01 13:26:44 +00:00
Author
Member

Received today from NLnet. This is the first step only, it is not an approval.


Subject: Your project Forgejo, a federated software forge that scales out has been selected for the second round

Dear ForgeJo folks,

it has taken us much longer than expected but it is my pleasure to inform you that your project "Forgejo, a federated software forge that scales out" (2022-12-035) has been selected to enter the second round of the December 2022 call. While the first round is solely based on your proposal, this strict selection round is potentially interactive. As your project is looked into in more depth, the reviewers may need some additional information to properly assess your application, in which case they will contact you.

Note that proposals are reviewed with regards to urgency, relevance and value for money. Unfortunately we will not be able to fund all projects proposed, as much as we would like that. For the next three weeks we will be therefore be thoroughly evaluating the remaining proposals for the second round, during which we may ask you to supply additional details. After that we will inform you on the outcome of this second (and final) selection round.

If you meanwhile have any questions, please let us know.

Kind regards,
on behalf of NLnet foundation,

Received today from NLnet. This is the first step only, it is not an approval. --- > Subject: Your project Forgejo, a federated software forge that scales out has been selected for the second round > > Dear ForgeJo folks, > > > it has taken us much longer than expected but it is my pleasure to inform you that your project "Forgejo, a federated software forge that scales out" (2022-12-035) has been selected to enter the second round of the December 2022 call. While the first round is solely based on your proposal, this strict selection round is potentially interactive. As your project is looked into in more depth, the reviewers may need some additional information to properly assess your application, in which case they will contact you. > > Note that proposals are reviewed with regards to urgency, relevance and value for money. Unfortunately we will not be able to fund all projects proposed, as much as we would like that. For the next three weeks we will be therefore be thoroughly evaluating the remaining proposals for the second round, during which we may ask you to supply additional details. After that we will inform you on the outcome of this second (and final) selection round. > > If you meanwhile have any questions, please let us know. > > Kind regards, > on behalf of NLnet foundation, > >
dachary modified the due date from 2023-02-15 to 2023-02-28 2023-02-01 13:29:44 +00:00
dachary modified the due date from 2023-02-28 to 2023-03-07 2023-02-01 13:29:56 +00:00
Author
Member

@fsologureng would you consider joining the grant application? Your work on a11y is transversal (what I mean by this is that it applies everywhere even when not explicitly in scope) and it should be possible to include it. It is a long shot but worth a try if you're willing.

@fsologureng would you consider joining the grant application? Your work on a11y is transversal (what I mean by this is that it applies everywhere even when not explicitly in scope) and it should be possible to include it. It is a long shot but worth a try if you're willing.

@fsologureng would you consider joining the grant application? Your work on a11y is transversal (what I mean by this is that it applies everywhere even when not explicitly in scope) and it should be possible to include it. It is a long shot but worth a try if you're willing.

I am considering it for any topic that applies to the next deadline (which I understand will be 1st April, 2023).

> @fsologureng would you consider joining the grant application? Your work on a11y is transversal (what I mean by this is that it applies everywhere even when not explicitly in scope) and it should be possible to include it. It is a long shot but worth a try if you're willing. I am considering it for any topic that applies to the next deadline (which I understand will be 1st April, 2023).
Author
Member

You can of course apply to the next deadline and it is excellent to know you will. I was referring specifically to be added to the beneficiaries of this grant. It is possible to do that even though you were not included in the original submission.

What do you think?

You can of course apply to the next deadline and it is excellent to know you will. I was referring specifically to be added to the beneficiaries of this grant. It is possible to do that even though you were not included in the original submission. What do you think?

You can of course apply to the next deadline and it is excellent to know you will. I was referring specifically to be added to the beneficiaries of this grant. It is possible to do that even though you were not included in the original submission.

What do you think?

That would be a great relief, @dachary. I really appreciate your offer. I'm very worried at the moment about the possibility of leaving Forgejo at the end of March precisely for financial reasons, which is something I definitely don't want to do.

> You can of course apply to the next deadline and it is excellent to know you will. I was referring specifically to be added to the beneficiaries of this grant. It is possible to do that even though you were not included in the original submission. > > What do you think? That would be a great relief, @dachary. I really appreciate your offer. I'm very worried at the moment about the possibility of leaving Forgejo at the end of March precisely for financial reasons, which is something I definitely don't want to do.
Author
Member

It is good to know. Please keep in mind that I am not a beneficiary of this grant. My role is purely to facilitate the initial administrative steps. I did the paperwork. What happens when and if the grant is obtained will be entirely up to the beneficiaries and I won't be involved at all.

It is good to know. Please keep in mind that I am not a beneficiary of this grant. My role is purely to facilitate the initial administrative steps. I did the paperwork. What happens when and if the grant is obtained will be entirely up to the beneficiaries and I won't be involved at all.
Author
Member

Received from NLnet today:


Subject: Questions Forgejo, a federated software forge that scales out

Dear The,

you applied to the 2022-12 open call from NLnet. We have some questions regarding your project proposal Forgejo, a federated software forge that scales out.

You give a very general description of Forgejo. Obviously, we are interested in Forgejo, courtesy of it being the main successor to Gitea - and there is great potential. It is not clear though what you would be doing within the scope of the grant, or what would be the concrete technical outcomes. Is there a project plan underlying this request? If so, could you share it?

Can you provide some more detail on how you arrived at the amount of 5k, e.g. with a breakdown of the main tasks you've identified with the associated effort? What rates did you use?

Looking forward to your answer and thank you very much for your timely reply. And have a great weekend!

Kind regards,
on behalf of NLnet foundation,

Received from NLnet today: --- > > Subject: Questions Forgejo, a federated software forge that scales out > > Dear The, > > you applied to the 2022-12 open call from NLnet. We have some questions regarding your project proposal Forgejo, a federated software forge that scales out. > > You give a very general description of Forgejo. Obviously, we are interested in Forgejo, courtesy of it being the main successor to Gitea - and there is great potential. It is not clear though what you would be doing within the scope of the grant, or what would be the concrete technical outcomes. Is there a project plan underlying this request? If so, could you share it? > > Can you provide some more detail on how you arrived at the amount of 5k, e.g. with a breakdown of the main tasks you've identified with the associated effort? What rates did you use? > > Looking forward to your answer and thank you very much for your timely reply. And have a great weekend! > > Kind regards, > on behalf of NLnet foundation,
Owner

Possible concrete technical outcome: an RFC using DNS for release checking forgejo/forgejo#379 (suggested by @dachary :)

Possible concrete technical outcome: an RFC using DNS for release checking https://codeberg.org/forgejo/forgejo/issues/379 (suggested by @dachary :)
Author
Member

@fnetX (as a representative of Codeberg) @Ryuno-Ki @oliverpool @fsologureng @crystal I think the best way to answer NLnet question is to provide them with a workplan (a list of tasks) that you all agree upon to split the workload and the associated funds among you.

Once you have that I will followup with the required administrative chores. I thought about creating a workplan on your behalf so that you don't have to worry about it now. But this does not feel right since I won't be doing any of the work 😄

In my experience NLnet does not require an answer right away and you can take time to figure that out. However I also think that if an answer is sent after March 15th it might be too late.

For inspiration, here is the workplan that was approved end of last year for the implementation of federated features. As you can see it is not very formal. But you need to keep in mind that each and every item has to be implemented before a request for payment can be send.

https://forum.forgefriends.org/uploads/short-url/4jjrbWzXhyVBhGi3MxQRXTyQoK8.md

Is there any guarantee that the grant will be awarded? Not at all: it depends on the workplan. Is it worth your time and effort? It is ultimately for you to decide. All I can promise is that I'll keep helping with the administrative steps even though I'm not a beneficiary because I think getting funding will help Forgejo move forward.

@fnetX (as a representative of Codeberg) @Ryuno-Ki @oliverpool @fsologureng @crystal I think the best way to answer NLnet question is to provide them with a workplan (a list of tasks) that you all agree upon to split the workload and the associated funds among you. Once you have that I will followup with the required administrative chores. I thought about creating a workplan on your behalf so that you don't have to worry about it now. But this does not feel right since I won't be doing any of the work 😄 In my experience NLnet does not require an answer right away and you can take time to figure that out. However I also think that if an answer is sent after March 15th it might be too late. For inspiration, here is the workplan that was approved end of last year for the implementation of federated features. As you can see it is not very formal. But you need to keep in mind that each and every item has to be implemented before a request for payment can be send. https://forum.forgefriends.org/uploads/short-url/4jjrbWzXhyVBhGi3MxQRXTyQoK8.md Is there any guarantee that the grant will be awarded? Not at all: it depends on the workplan. Is it worth your time and effort? It is ultimately for you to decide. All I can promise is that I'll keep helping with the administrative steps even though I'm not a beneficiary because I think getting funding will help Forgejo move forward.
Owner

Not sure what role I could have in pushing this, but I'll happily review a draft and ensure some fairness :)

Not sure what role I could have in pushing this, but I'll happily review a draft and ensure some fairness :)
Author
Member

Reply sent to NLnet today:


Hi,

We are working on a reply. Is there a deadline we should be mindful of?

Thanks for your interest in Forgejo.

Sincerely

Reply sent to NLnet today: --- > Hi, > > We are working on a reply. Is there a deadline we should be mindful of? > > Thanks for your interest in Forgejo. > > Sincerely

As a reminder and to opening up a brainstorm, I see at least three areas to develop:

  1. Enhance moderation tools (incorporate best fediverse practices)
  • option to denounce comments
  • option to hide comments for moderators
  • moderation area user interface to evaluate behavior
  1. Reaction and comments menu refactoring as a single widget which works with a comment-id as parameter. (scale)
  2. UX of federated Issues and federated PR integration into local list, filters and selectors. (extensions of forgejo/forgejo#59 UX part if it's not totally addressed by that grant) ref: forgejo/user-research#9
As a reminder and to opening up a brainstorm, I see at least three areas to develop: 1. Enhance moderation tools (incorporate best fediverse practices) - option to denounce comments - option to hide comments for moderators - moderation area user interface to evaluate behavior 2. Reaction and comments menu refactoring as a single widget which works with a comment-id as parameter. (scale) 3. UX of federated Issues and federated PR integration into local list, filters and selectors. (extensions of https://codeberg.org/forgejo/forgejo/issues/59 UX part if it's not totally addressed by that grant) ref: https://codeberg.org/forgejo/user-research/issues/9

If possible I'd like to have UI/UX-related tasks within the scope of my application.
Federation has a backend aspect as well, doesn't it?

If possible I'd like to have UI/UX-related tasks within the scope of my application. Federation has a backend aspect as well, doesn't it?

@Ryuno-Ki

If possible I'd like to have UI/UX-related tasks within the scope of my application.
Federation has a backend aspect as well, doesn't it?

Sorry for the delay in replying.

I still don't really understand what your implementation proposal is in the sense that I see it as too broad and can't see how it can fit into a concrete set of tasks.

Furthermore, for the record, my deadline is very tight and I have set it for 1 April. After that date, I can't continue working on Forgejo without a reward. That's the most I can do with my own savings.

OTOH, at least two of my proposals have grants allocated to them, so it's not clear to me which ones are feasible to have extensions. Perhaps @Gusted and @xy can enlighten us.

Finally, I think that the proposal made for @crystal in order to provide privacy for the 2FA setting in teams/org is a good task to add to the grant in the scope of Forgejo. My perception, taken in account the comment made by @tallship is that is not as easy as adding a new requirement to teams/org management UI.

@Ryuno-Ki > If possible I'd like to have UI/UX-related tasks within the scope of my application. > Federation has a backend aspect as well, doesn't it? Sorry for the delay in replying. I still don't really understand what your implementation proposal is in the sense that I see it as too broad and can't see how it can fit into a concrete set of tasks. Furthermore, for the record, my deadline is very tight and I have set it for 1 April. After that date, I can't continue working on Forgejo without a reward. That's the most I can do with my own savings. OTOH, at least two of my proposals have grants allocated to them, so it's not clear to me which ones are feasible to have extensions. Perhaps @Gusted and @xy can enlighten us. Finally, I think that [the proposal made for @crystal](https://codeberg.org/forgejo/forgejo/issues/425) in order to provide privacy for the 2FA setting in teams/org is a good task to add to the grant in the scope of Forgejo. My perception, taken in account [the comment made by @tallship](https://codeberg.org/forgejo/forgejo/issues/421#issuecomment-812261) is that is not as easy as adding a new requirement to teams/org management UI.
Author
Member

Received from NLnet today


Hi all, it would be great if you could have an answer by Wensday (1 March). If you need more a couple more weeks to think about it, we could alternatively move you to the next round (the February call) which we will start reviewing now too.

Received from NLnet today --- > Hi all, it would be great if you could have an answer by Wensday (1 March). If you need more a couple more weeks to think about it, we could alternatively move you to the next round (the February call) which we will start reviewing now too.
Author
Member

I will not be involved anymore going forward, if someone does not have access to the mailbox associated with this grant application, please reach out to loic@dachary.org and I'll provide the credentials.

I will not be involved anymore going forward, if someone does not have access to the mailbox associated with this grant application, please reach out to loic@dachary.org and I'll provide the credentials.
Author
Member

Since there is no answer ready just yet, I sent the following to NLnet today:


Hi,

We do not have an answer yet, sorry about that.

We are grateful for the proposition to move to the next round (the February call) and accept.

When will be the deadline for sending our answer?

Thanks again for your support and flexibility in managing the delays

Sincerely

Since there is no answer ready just yet, I sent the following to NLnet today: --- > Hi, > > We do not have an answer yet, sorry about that. > > We are grateful for the proposition to move to the next round (the February call) and accept. > > When will be the deadline for sending our answer? > > Thanks again for your support and flexibility in managing the delays > > Sincerely

There is a private chatroom to discuss this issue, but as you stated it yielded no move forward.

One option that was brought up is to add @fsologureng as beneficiary to #4 but details have to be clarified among both of us. I'm a little time constrainted at the beginning of this month due to paperwork for my own company (will come up again at the end of the month).

If fsologureng joins me there I'm also applying to Prototype Fund to cover my income for this year.

There is a private chatroom to discuss this issue, but as you stated it yielded no move forward. One option that was brought up is to add @fsologureng as beneficiary to #4 but details have to be clarified among both of us. I'm a little time constrainted at the beginning of this month due to paperwork for my own company (will come up again at the end of the month). If fsologureng joins me there I'm also applying to Prototype Fund to cover my income for this year.

@ryuno-ki : thanks for your clarification on the matter here.

First of all, I didn't receive an e-mail by Michiel about a deadline of 1st March.
Second, I replied three days ago
Third, we asked to be moved to the next round already.

I'd like to ask you to have following remarks on this in the respective issue. Thank you.

Here's what I was referring to about Michiel asking if the response could be sent back by Wednesday the first (today), and also an unusual statement from @dachary merely stating he wouldn't be part of it might forward.

He did send in a response about 5 hours ago asking that the processes be moved forward to the next best round of consideration so kudos to you Loïc for that 🙂

I was unaware that your response was actually returned to them too however, which leaves me a bit confused, and @crystals concerned reminder that the request needed to be answered today and it might be best to ask them to move it to the next round also piqued my concerns.

Regardless, as long is all well and everything is in motion it's s good day!

@ryuno-ki : thanks for your clarification on the matter [here](https://codeberg.org/forgejo/meta/issues/176#issuecomment-821320). > First of all, I didn't receive an e-mail by Michiel about a deadline of 1st March. > Second, I replied three days ago > Third, we asked to be moved to the next round already. > > I'd like to ask you to have following remarks on this in the respective issue. Thank you. Here's what I was referring to about Michiel asking if the response could be sent back by Wednesday the first (today), and also an unusual statement from @dachary merely stating he wouldn't be part of it might forward. He did send in a response about 5 hours ago asking that the processes be moved forward to the next best round of consideration so kudos to you Loïc for that 🙂 I was unaware that your response was actually returned to them too however, which leaves me a bit confused, and @crystals concerned reminder that the request needed to be answered today and it might be best to ask them to move it to the next round also piqued my concerns. Regardless, as long is all well and everything is in motion it's s good day!
Owner

Ah, yes, I think I sent that message about 90 minutes before @dachary added his comment here. 👍

Ah, yes, I think I sent that message about 90 minutes before @dachary added his comment here. 👍
Author
Member

@ryuno-ki : thanks for your clarification on the matter here.

First of all, I didn't receive an e-mail by Michiel about a deadline of 1st March.
Second, I replied three days ago
Third, we asked to be moved to the next round already.

I'd like to ask you to have following remarks on this in the respective issue. Thank you.

This is about a different grant application, not this one.

Here's what I was referring to about Michiel asking if the response could be sent back by Wednesday the first (today), and also an unusual statement from @dachary merely stating he wouldn't be part of it might forward.

I created this grant application for the benefit of Forgejo community members, not for myself. I'm not listed as a beneficiary. It is up to the beneficiaries to use the administrative work I did for their own benefit.

> > > @ryuno-ki : thanks for your clarification on the matter [here](https://codeberg.org/forgejo/meta/issues/176#issuecomment-821320). > > > First of all, I didn't receive an e-mail by Michiel about a deadline of 1st March. > > Second, I replied three days ago > > Third, we asked to be moved to the next round already. > > > > I'd like to ask you to have following remarks on this in the respective issue. Thank you. > This is about a different grant application, not this one. > Here's what I was referring to about Michiel asking if the response could be sent back by Wednesday the first (today), and also an unusual statement from @dachary merely stating he wouldn't be part of it might forward. I created this grant application for the benefit of Forgejo community members, not for myself. I'm not listed as a beneficiary. It is up to the beneficiaries to use the administrative work I did for their own benefit.
Owner

I will provide a workplan for this grant application before 15 March. The description is almost an exact match for the work that is done by the release & devops teams, it should not be too difficult.

If someone is interested in discussing this, I'm in the development chatroom.

I will provide a workplan for this grant application before 15 March. The description is almost an exact match for the work that is done by the release & devops teams, it should not be too difficult. If someone is interested in discussing this, I'm in the development chatroom.
Owner

I have access to the shared inbox and can take care of answering from now on, unless someone else is willing to do it?

From NLnet.


Ok, no worries. We moved you into the February call, for which we are still doing the first selection round (that you passed already). If you could respond by the end of the month, that should be fine.

We are looking forward to see what the plan for Forgejo will be.

I have access to the shared inbox and can take care of answering from now on, unless someone else is willing to do it? From NLnet. --- > Ok, no worries. We moved you into the February call, for which we are still doing the first selection round (that you passed already). If you could respond by the end of the month, that should be fine. > > We are looking forward to see what the plan for Forgejo will be.
Owner

Hello. I have drafted a budget for myself and will be working on a workplan for the things I plan to work on under the portion of the grant I'll be asking for. I need some additional time to iron out some of the details, but I will publish my budget for the sake of transparency when I've made significant progress on the roadmap.

Hello. I have drafted a budget for myself and will be working on a workplan for the things I plan to work on under the portion of the grant I'll be asking for. I need some additional time to iron out some of the details, but I will publish my budget for the sake of transparency when I've made significant progress on the roadmap.
Owner

On my end I don't really need the funding but I thought it would be a waste to not see this through given the amount of work already put into it.

If the funding is ever accepted, I'd be happy for the tasks I complete to be paid to Codeberg so they can use them however they see fit.

On my end I don't really need the funding but I thought it would be a waste to not see this through given the amount of work already put into it. If the funding is ever accepted, I'd be happy for the tasks I complete to be paid to Codeberg so they can use them however they see fit.
Owner

@earl-warren @crystal did you have the chance to advance on your workplan?

I would be motivated to work on 2 subjects, if you think they would be a good fit for this grant:

DNS-Update-Checker RFC

Pitch: a privacy-friendly and scalable system to check if an update is available (based on DNS)

Problems:

  • the original (gitea) update-checker system leaked the IP-Address of the checking server
  • the original update-checker relies on one https server (no trivial to scale)
  • the Forgejo update-checker (based on DNS) started as an experiment, but could be standardized to benefit other projects

Deliverables:

  • a RFC defining the goal and protocol details
  • a client side implementation in Go, for integration in Forgejo

Estimated duration:

  • RFC: 20 hours (1200 €)
  • client implementation: 8 hours (480€)

Cleaner Webhook system

Pitch: webhooks are the main way to communicate with other systems. Having a clean system will allow for other webhooks to be developed and Forgejo to better integrate in the wider forge ecosystem.

Problems:
currently the webhook is a two-step process: a part of the payload is generated just after the webhook-event happened; the rest of the payload is defined just before send the actual request.

  • this two-step process makes the current code very intricate and difficult to maintain
  • it will help move forward the Custom webhook pull request, since it will reduce its scope.

Deliverable:

  • a pull request implementing the webhook system in one step (after the webhook-event)
  • a pull request implementing a webook to https://builds.sr.ht/

Estimated duration:

  • one step: 25 hours (1500€)
  • sourcehut webhook: 8 hours (480€)

Besides those subject, I would be willing to help reviewing other PRs made in the scope of this grant.

@earl-warren @crystal did you have the chance to advance on your workplan? I would be motivated to work on 2 subjects, if you think they would be a good fit for this grant: ## DNS-Update-Checker RFC Pitch: a privacy-friendly and scalable system to check if an update is available (based on DNS) Problems: - the original (gitea) update-checker system leaked the IP-Address of the checking server - the original update-checker relies on one https server (no trivial to scale) - the Forgejo update-checker (based on DNS) started as an experiment, but could be standardized to benefit other projects Deliverables: - a RFC defining the goal and protocol details - a client side implementation in Go, for integration in Forgejo Estimated duration: - RFC: 20 hours (1200 €) - client implementation: 8 hours (480€) ## Cleaner Webhook system Pitch: webhooks are the main way to communicate with other systems. Having a clean system will allow for other webhooks to be developed and Forgejo to better integrate in the wider forge ecosystem. Problems: currently the webhook is a two-step process: a part of the payload is generated just after the webhook-event happened; the rest of the payload is defined just before send the actual request. - this two-step process makes the current code very intricate and difficult to maintain - it will help move forward the [Custom webhook pull request](https://github.com/go-gitea/gitea/pull/19307), since it will reduce its scope. Deliverable: - a pull request implementing the webhook system in one step (after the webhook-event) - a pull request implementing a webook to https://builds.sr.ht/ Estimated duration: - one step: 25 hours (1500€) - sourcehut webhook: 8 hours (480€) --- Besides those subject, I would be willing to help reviewing other PRs made in the scope of this grant.
Owner

For the record, draft answer & workplan at https://pad.gusted.xyz/Hog59MExT0iDHlzjezfCiQ#

For the record, draft answer & workplan at https://pad.gusted.xyz/Hog59MExT0iDHlzjezfCiQ#
Owner

Attached is the answer I'll send to NLnet 29 March, unless there is an objection. Please speak up if you think something should be improved or added.

Attached is the answer I'll send to NLnet 29 March, unless there is an objection. Please speak up if you think something should be improved or added.
Owner

I think that you should add a paragraph indicating that you (@earl-warren) also wish to be a beneficiary: https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/application.txt#L29-L31

I think that you should add a paragraph indicating that you (@earl-warren) also wish to be a beneficiary: https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/application.txt#L29-L31
Owner

I prefer that my work goes through Codeberg than to be a direct beneficiary.

I prefer that my work goes through Codeberg than to be a direct beneficiary.
Owner

The following mail was sent today


Hi,

You give a very general description of Forgejo. Obviously, we are interested in Forgejo, courtesy of it being the main successor to Gitea - and there is great potential.

Thank you for the kind words. At the time the grant application was sent, Forgejo was just an idea and it became more concrete since.

It is not clear though what you would be doing within the scope of the grant, or what would be the concrete technical outcomes.

The primary focus of this grant is to create the tools and document the reproducible process to create a quality distribution that can be easily and reliably installed and upgraded.

The tooling used by Gitea cannot be reused for Forgejo because Gitea Ltd. is the only organization with all the information and tools to create a release: it relies on proprietary services (AWS, GitHub, Drone, Docker Hub, etc.), parts of the process are not documented and some tools are not published.

Forgejo needs to create alternative tools and processes and is committed to exclusively use Free Software for this purpose (dogfooding Forgejo itself instead of GitHub or the Docker Hub for instance). The entire process needs to be reproducible to enable anyone to produce high quality Forgejo releases that include custom changes.

The technical outcomes are:

  • Tools to produce a multi-architecture Forgejo distribution
  • An integrated release pipeline based on Forgejo
  • A new continuous integration agent
  • Infrastructure as code to deploy Forgejo
  • Tooling and documentation to maintain a soft fork

Is there a project plan underlying this request? If so, could you share it?

The draft workplan that contains details regarding the tasks can be found in this pad https://pad.gusted.xyz/Hog59MExT0iDHlzjezfCiQ# (and is included in this mail for your convenience).

Can you provide some more detail on how you arrived at the amount of 50k, e.g. with a breakdown of the main tasks you've identified with the associated effort? What rates did you use?

The hourly rate is 60€ and the total amount is exclusively dedicated to paying for the time of the people implementing the workplan.

The draft workplan contains a breakdown of the effort.

Sincerely


Project Plan:

This workplan contains tasks in the following scope:

  • Tools to produce a multi-architecture Forgejo distribution

    The target architectures of Forgejo binaries are amd64, arm64, armv7 and armv6. Forgejo OCI compliant images are released for amd64 and arm64. Tools are developed to allow the creation of binaries and OCI images for all architectures on a single amd64 machine. They include testing of the distribution using the native architecture to verify it actually works as intended.

  • An integrated release pipeline based on Forgejo

    A release pipeline based on continuous integration is developed to allow for building a Forgejo release for all targetted packages and architectures. The release manager pushes a tag to the continuous integration system hosted on a Forgejo instance to trigger the pipeline that:

    • Runs security checks
    • Runs unit and integration tests
    • Builds the OCI images
    • Builds the binaries
    • Uploads OCI images and binaries to a designated Forgejo instance

    the pipeline is also desginged to be able to copy releases from one Forgejo instance to another to allow for multi-stage releases for release candidates or experimental releases.

  • A new continous integration agent

    A continous integration agent runs the workload for all continuous integration tasks, which includes the release pipeline itself. It is developed to be systemd capable, include nested hardware virtualization and nested system containers. The nested hardware virtualization allows integration test to be run even when they require KVM, for instance when testing the infrastructure as code to deploy Forgejo. The nested containers allows testing the continuous integration agent itself. The agent allows running workloads in LXC containers which are systemd capable to test the OCI images can effectively be used, for instance with database installed from packages native of a given distribution.

  • Infrastructure as code to deploy Forgejo

    Infrastructure as code is developed (in shell and Ansible) to deploy Forgejo as well as the associated continuous integration agents. It includes tests that rely on Forgejo itself, recursively. It can then be used to deploy and upgrade Forgejo instances used by the forgejo project itself.

  • Tooling and documentation to maintaing a soft fork

    As soft fork is a set of patches applied on top of an existing codebase. When the codebase changes, the same set of patches must be applied again on top of the new codebase. It may no longer work because the patch conflicts or because the features changed. As time passes and the number of patches grow, manually applying them again becomes increasingly difficult. Tools are developed to facilitate this work and best practices are documented to keep the maintenance burden to a minimum.

Tasks

Scope: Tools to produce a multi-architecture Forgejo distribution

Tools to produce the binary Forgejo distribution

The Forgejo binary is built using a specific set of flags for the Go compiler. The resulting binary is tested to work using qemu architecture virtualization and binfmt.

Deliverable:

Milestone(s)

  • Script to build binaries for amd64, arm64, armv6
  • Support for GPG signing the binaries
  • Tests for the script running the build
  • CI configuration including the script
  • Tests to verify the binary works on the target architecture

Amount:
10%

Tools to produce the OCI container Forgejo images

The Forgejo container image is built using buildx to support multiple platforms. The resulting image is tested to contain a usable binary image using the qemu architecture virtualization leveraged by docker and binfmt.

Deliverable:

Milestone(s)

  • Script to build OCI images for amd64 and arm64
  • Tests for the script running the build
  • CI configuration including the script
  • Tests to verify the image can run Forgejo on the target architecture

Amount
10%

Scope: An integrated release pipeline based on Forgejo

Tag based release configuration

The release manager pushes a tag to the continuous integration system hosted on a Forgejo instance to trigger the pipeline.

Deliverable:

Milestone(s):

  • Runs security checks
  • Runs unit and integration tests
  • Builds the OCI images
  • Builds the binaries
  • Uploads OCI images and binaries to a designated Forgejo instance

Amount
2%

DNS-Update-Checker RFC

Aprivacy-friendly and scalable system to check if an update is available (based on DNS)

Problems:

  • the original (gitea) update-checker system leaked the IP-Address of the checking server
  • the original update-checker relies on one https server (no trivial to scale)
  • the Forgejo update-checker (based on DNS) started as an experiment, but could be standardized to benefit other projects

Deliverables:

  • a RFC defining the goal and protocol details
  • a client side implementation in Go, for integration in Forgejo

Amount: 5%

  • RFC: 20 hours
  • client implementation: 8 hours

Cleaner Webhook system

Webhooks are the main way to communicate with other systems. Having a clean system will allow for other webhooks to be developed and Forgejo to better integrate in the wider forge ecosystem.

Problems:
currently the webhook is a two-step process: a part of the payload is generated just after the webhook-event happened; the rest of the payload is defined just before send the actual request.

  • this two-step process makes the current code very intricate and difficult to maintain
  • it will help move forward the Custom webhook pull request, since it will reduce its scope.

Deliverable:

  • a pull request implementing the webhook system in one step (after the webhook-event)
  • a pull request implementing a webook to https://builds.sr.ht/

Amount: 5%

  • one step: 25 hours
  • sourcehut webhook: 8 hours

Scope: A new continous integration agent

Forgejo runner

The Forgejo runner is at the heart of Forgejo and its release pipeline. The nested containers allows testing the continuous integration agent itself. The agent allows running workloads in LXC containers which are systemd capable to test the OCI images can effectively be used, for instance with database installed from packages native of a given distribution.

Deliverable:

Millestone(s):

  • A binary that can be used as an agent for the Forgejo Actions CI
  • An Action that deploys Forgejo and the runner
  • Tests that verify the runner works in a nested system environment

Amount:
20%

LXC backend

The continuous integration agent is based on ACT which allows running workloads on a local machine. It is based on Docker and does not support nesting or systemd. An LXC backend is added to support both.

Deliverable:

Milestone(s):

  • Release that includes the LXC backend
  • Support for nested hardware virtualization (KVM)
  • Support for nested system containers

Amount:
10%

Scope: Infrastructure as code to deploy Forgejo

Ansible based infrastructure as code

Real world Forgejo deployment require DNS, STMP relay, monitoring and more to provide a reliable service, all of which is available in Ansible roles and playbooks. Playbooks are developed to enable Forgejo (and the runner) in this environment. The playbooks are intended to be used to deploy and maintain Forgejo's own infrastructure in the spirit of dogfooding.

Deliverables:

Milestone(s):

  • Ansible role to deploy / upgrade Forgejo
  • Ansible role to deploy / upgrade the Forgejo runner
  • Ansible playbook to deploy / upgrade the Forgejo and the runner
  • Tests for the Ansible roles based on testinfra
  • Forgejo runner workflow to run the tests

Amount:
20%

Shell based infrastructure as code

Codeberg is deployed using shell based infrastructure as code. Shell scripts are written so they can be used by Codeberg in this context. The shell scripts are also meant to be a lightweight alternative to Ansible based infrastructure as code in the context of continuous integration, to deploy and run Forgejo and the associated runners.

Deliverables:

Milestone(s):

  • Script to launch Forgejo from docker
  • Obtain credentials for API and continuous integration agent access to the Forgejo instance
  • Script to launch the Forgejo runner from sources
  • Integration tests verifying the scripts work on a newly deployed Forgejo instance

Amount:
10%

The following mail was sent today --- Hi, > You give a very general description of Forgejo. Obviously, we are interested in Forgejo, courtesy of it being the main successor to Gitea - and there is great potential. Thank you for the kind words. At the time the grant application was sent, Forgejo was just an idea and it became more concrete since. > It is not clear though what you would be doing within the scope of the grant, or what would be the concrete technical outcomes. The primary focus of this grant is to create the tools and document the **reproducible** process to create a quality distribution that can be easily and reliably installed and upgraded. The tooling used by Gitea cannot be reused for Forgejo because Gitea Ltd. is the only organization with all the information and tools to create a release: it relies on proprietary services (AWS, GitHub, Drone, Docker Hub, etc.), parts of the process are not documented and some tools are not published. Forgejo needs to create alternative tools and processes and is committed to exclusively use Free Software for this purpose (dogfooding Forgejo itself instead of GitHub or the Docker Hub for instance). The entire process needs to be reproducible to enable anyone to produce high quality Forgejo releases that include custom changes. The technical outcomes are: * Tools to produce a multi-architecture Forgejo distribution * An integrated release pipeline based on Forgejo * A new continuous integration agent * Infrastructure as code to deploy Forgejo * Tooling and documentation to maintain a soft fork > Is there a project plan underlying this request? If so, could you share it? The draft workplan that contains details regarding the tasks can be found in this pad https://pad.gusted.xyz/Hog59MExT0iDHlzjezfCiQ# (and is included in this mail for your convenience). > Can you provide some more detail on how you arrived at the amount of 50k, e.g. with a breakdown of the main tasks you've identified with the associated effort? What rates did you use? The hourly rate is 60€ and the total amount is exclusively dedicated to paying for the time of the people implementing the workplan. The draft workplan contains a breakdown of the effort. Sincerely ---- # Project Plan: This workplan contains tasks in the following scope: * Tools to produce a multi-architecture Forgejo distribution The target architectures of Forgejo binaries are amd64, arm64, armv7 and armv6. Forgejo OCI compliant images are released for amd64 and arm64. Tools are developed to allow the creation of binaries and OCI images for all architectures on a single amd64 machine. They include testing of the distribution using the native architecture to verify it actually works as intended. * An integrated release pipeline based on Forgejo A release pipeline based on continuous integration is developed to allow for building a Forgejo release for all targetted packages and architectures. The release manager pushes a tag to the continuous integration system hosted on a Forgejo instance to trigger the pipeline that: * Runs security checks * Runs unit and integration tests * Builds the OCI images * Builds the binaries * Uploads OCI images and binaries to a designated Forgejo instance the pipeline is also desginged to be able to copy releases from one Forgejo instance to another to allow for multi-stage releases for release candidates or experimental releases. * A new continous integration agent A continous integration agent runs the workload for all continuous integration tasks, which includes the release pipeline itself. It is developed to be systemd capable, include nested hardware virtualization and nested system containers. The nested hardware virtualization allows integration test to be run even when they require KVM, for instance when testing the infrastructure as code to deploy Forgejo. The nested containers allows testing the continuous integration agent itself. The agent allows running workloads in LXC containers which are systemd capable to test the OCI images can effectively be used, for instance with database installed from packages native of a given distribution. * Infrastructure as code to deploy Forgejo Infrastructure as code is developed (in shell and Ansible) to deploy Forgejo as well as the associated continuous integration agents. It includes tests that rely on Forgejo itself, recursively. It can then be used to deploy and upgrade Forgejo instances used by the forgejo project itself. * Tooling and documentation to maintaing a soft fork As soft fork is a set of patches applied on top of an existing codebase. When the codebase changes, the same set of patches must be applied again on top of the new codebase. It may no longer work because the patch conflicts or because the features changed. As time passes and the number of patches grow, manually applying them again becomes increasingly difficult. Tools are developed to facilitate this work and best practices are documented to keep the maintenance burden to a minimum. # Tasks ## Scope: Tools to produce a multi-architecture Forgejo distribution ### Tools to produce the binary Forgejo distribution The Forgejo binary is built using a specific set of flags for the Go compiler. The resulting binary is tested to work using qemu architecture virtualization and binfmt. Deliverable: * URL to merged pull requests in https://codeberg.org/forgejo/forgejo Milestone(s) * Script to build binaries for amd64, arm64, armv6 * Support for GPG signing the binaries * Tests for the script running the build * CI configuration including the script * Tests to verify the binary works on the target architecture Amount: 10% ### Tools to produce the OCI container Forgejo images The Forgejo container image is built using buildx to support multiple platforms. The resulting image is tested to contain a usable binary image using the qemu architecture virtualization leveraged by docker and binfmt. Deliverable: * URL to merged pull requests in https://codeberg.org/forgejo/forgejo Milestone(s) * Script to build OCI images for amd64 and arm64 * Tests for the script running the build * CI configuration including the script * Tests to verify the image can run Forgejo on the target architecture Amount 10% ## Scope: An integrated release pipeline based on Forgejo ### Tag based release configuration The release manager pushes a tag to the continuous integration system hosted on a Forgejo instance to trigger the pipeline. Deliverable: * URL to merged pull requests in https://codeberg.org/forgejo/forgejo Milestone(s): * Runs security checks * Runs unit and integration tests * Builds the OCI images * Builds the binaries * Uploads OCI images and binaries to a designated Forgejo instance Amount 2% ### DNS-Update-Checker RFC Aprivacy-friendly and scalable system to check if an update is available (based on DNS) Problems: - the original (gitea) update-checker system leaked the IP-Address of the checking server - the original update-checker relies on one https server (no trivial to scale) - the Forgejo update-checker (based on DNS) started as an experiment, but could be standardized to benefit other projects Deliverables: - a RFC defining the goal and protocol details - a client side implementation in Go, for integration in Forgejo Amount: 5% - RFC: 20 hours - client implementation: 8 hours ### Cleaner Webhook system Webhooks are the main way to communicate with other systems. Having a clean system will allow for other webhooks to be developed and Forgejo to better integrate in the wider forge ecosystem. Problems: currently the webhook is a two-step process: a part of the payload is generated just after the webhook-event happened; the rest of the payload is defined just before send the actual request. - this two-step process makes the current code very intricate and difficult to maintain - it will help move forward the [Custom webhook pull request](https://github.com/go-gitea/gitea/pull/19307), since it will reduce its scope. Deliverable: - a pull request implementing the webhook system in one step (after the webhook-event) - a pull request implementing a webook to https://builds.sr.ht/ Amount: 5% - one step: 25 hours - sourcehut webhook: 8 hours ## Scope: A new continous integration agent ### Forgejo runner The Forgejo runner is at the heart of Forgejo and its release pipeline. The nested containers allows testing the continuous integration agent itself. The agent allows running workloads in LXC containers which are systemd capable to test the OCI images can effectively be used, for instance with database installed from packages native of a given distribution. Deliverable: * URL to merged pull requests in https://code.forgejo.org/forgejo/runner * URL to merged pull requests in https://code.forgejo.org/actions/setup-forgejo Millestone(s): * A binary that can be used as an agent for the Forgejo Actions CI * An Action that deploys Forgejo and the runner * Tests that verify the runner works in a nested system environment Amount: 20% ### LXC backend The continuous integration agent is based on ACT which allows running workloads on a local machine. It is based on Docker and does not support nesting or systemd. An LXC backend is added to support both. Deliverable: * URL to merged pull requests in https://code.forgejo.org/forgejo/act Milestone(s): * Release that includes the LXC backend * Support for nested hardware virtualization (KVM) * Support for nested system containers Amount: 10% ## Scope: Infrastructure as code to deploy Forgejo ### Ansible based infrastructure as code Real world Forgejo deployment require DNS, STMP relay, monitoring and more to provide a reliable service, all of which is available in Ansible roles and playbooks. Playbooks are developed to enable Forgejo (and the runner) in this environment. The playbooks are intended to be used to deploy and maintain Forgejo's own infrastructure in the spirit of dogfooding. Deliverables: * URL to merged pull requests in https://code.forgejo.org/forgejo/infrastructure Milestone(s): * Ansible role to deploy / upgrade Forgejo * Ansible role to deploy / upgrade the Forgejo runner * Ansible playbook to deploy / upgrade the Forgejo and the runner * Tests for the Ansible roles based on testinfra * Forgejo runner workflow to run the tests Amount: 20% ### Shell based infrastructure as code Codeberg is deployed using shell based infrastructure as code. Shell scripts are written so they can be used by Codeberg in this context. The shell scripts are also meant to be a lightweight alternative to Ansible based infrastructure as code in the context of continuous integration, to deploy and run Forgejo and the associated runners. Deliverables: * URL to merged pull requests in https://code.forgejo.org/actions/setup-forgejo Milestone(s): * Script to launch Forgejo from docker * Obtain credentials for API and continuous integration agent access to the Forgejo instance * Script to launch the Forgejo runner from sources * Integration tests verifying the scripts work on a newly deployed Forgejo instance Amount: 10%
Owner

The answer from NLnet acknowledging they received the answer came in today in the shared email account:


Thank you for the detailed answers! More than just answers, this looks like a complete project plan. We will get back to you in the next weeks when this round’s selection is made.

Have a good weekend!

The answer from NLnet acknowledging they received the answer came in today in the shared email account: --- > > Thank you for the detailed answers! More than just answers, this looks like a complete project plan. We will get back to you in the next weeks when this round’s selection is made. > > Have a good weekend!
Owner

Sent today to NLnet from the shared email account.


Hi,

A quick ping to make sure nothing from you was overlooked. Do you have an estimate on when to expect a resolution?

Sincerely

Sent today to NLnet from the shared email account. --- > Hi, > > A quick ping to make sure nothing from you was overlooked. Do you have an estimate on when to expect a resolution? > > Sincerely
Owner

Received today from NLnet.


You should hear from us this week [redacted].

Received today from NLnet. --- > You should hear from us this week [redacted].
Owner

Received today from NLnet. The proposal passed one more step which is a good sign. There still is one last step to go before it is approved or rejected.


Dear Forgejo team,

you applied to the NGI0 Entrust open call from NLnet, round February 2023. Currently a selection of the projects is pending the final stage review by an independent review committee to validate their eligibility, and we are happy to inform you that this includes your project "Forgejo" (2022-12-035). Should your project pass that final hurdle (which under normal circumstances it should, but please do not seek external publicity until it is officially confirmed), the selection will be made public and we will contact you in order to establish a Memorandum of Understanding.

Note that there are some remaining issues we have identified with the project proposal, in particular concerning the use of technologies that are not reproducible. We are confident that we can resolve these issues in dialogue with you (either by replacing some of the problematic technologies in question, or reducing the grant amount), which is why we passed on the project to the external reviewers. These may also still have remarks. The final amount of the grant will be determined at a later stage.

We will need to share some information about the project both with the general audience and with the European Commission. In the interest of time, we ask you to prepare a one paragraph management summary of the project. For examples we refer you to https://NLnet.nl/thema/NGI0Entrust.html

We kindly request you to send us this summary as soon as possible.

If you meanwhile have any questions, please let us know. And have a great weekend!

Kind regards,
on behalf of NLnet foundation,


The following reply was sent from the shared email.


Hi,

Thanks for the good news and happy to have passed one more hurdle. Hopefully the last one will also be successful, fingers crossed.

Note that there are some remaining issues we have identified with the project proposal, in particular concerning the use of technologies that are not reproducible.

Could you please tell which technology is not reproducible? Every effort is made in Forgejo to be 100% reproducible and 100% Free Software but something was apparently overlooked and needs fixing immediately.

The requested paragraph will be communicated to you momentarily.

Have a nice week-end.

Received today from NLnet. The proposal passed one more step which is a good sign. There still is one last step to go before it is approved or rejected. --- > Dear Forgejo team, > > > you applied to the NGI0 Entrust open call from NLnet, round February 2023. Currently a selection of the projects is pending the final stage review by an independent review committee to validate their eligibility, and we are happy to inform you that this includes your project "Forgejo" (2022-12-035). Should your project pass that final hurdle (which under normal circumstances it should, but please do not seek external publicity until it is officially confirmed), the selection will be made public and we will contact you in order to establish a Memorandum of Understanding. > > Note that there are some remaining issues we have identified with the project proposal, in particular concerning the use of technologies that are not reproducible. We are confident that we can resolve these issues in dialogue with you (either by replacing some of the problematic technologies in question, or reducing the grant amount), which is why we passed on the project to the external reviewers. These may also still have remarks. The final amount of the grant will be determined at a later stage. > > We will need to share some information about the project both with the general audience and with the European Commission. In the interest of time, we ask you to prepare a **one paragraph management summary** of the project. For examples we refer you to https://NLnet.nl/thema/NGI0Entrust.html > > We kindly request you to send us this summary as soon as possible. > > If you meanwhile have any questions, please let us know. And have a great weekend! > > Kind regards, > on behalf of NLnet foundation, --- The following reply was sent from the shared email. --- > Hi, > > Thanks for the good news and happy to have passed one more hurdle. Hopefully the last one will also be successful, fingers crossed. > > > Note that there are some remaining issues we have identified with the project proposal, in particular concerning the use of technologies that are not reproducible. > > Could you please tell which technology is not reproducible? Every effort is made in Forgejo to be 100% reproducible and 100% Free Software but something was apparently overlooked and needs fixing immediately. > > The requested paragraph will be communicated to you momentarily. > > Have a nice week-end.
Owner

Received today in the shared email.


Dear team

Could you please tell which technology is not reproducible? Every effort is made in Forgejo to be 100% reproducible and 100% Free Software but something was apparently overlooked and needs fixing immediately.

good to hear. We will discuss our observations during the intake call, and if that is indeed the case that will be a very efficient discussion.

The requested paragraph will be communicated to you momentarily.

Thanks, and you have a great weekend too!

Best,

Received today in the shared email. --- > Dear team > > > Could you please tell which technology is not reproducible? Every effort is made in Forgejo to be 100% reproducible and 100% Free Software but something was apparently overlooked and needs fixing immediately. > > good to hear. We will discuss our observations during the intake call, and if that is indeed the case that will be a very efficient discussion. > > > The requested paragraph will be communicated to you momentarily. > > Thanks, and you have a great weekend too! > > Best,
Owner

Sent today to NLnet from the shared email.


Hi,

Here is the requested short introduction to Forgejo, with the logo attached in SVG.

URL: https://forgejo.org

Matrix: https://matrix.to/#/#forgejo:matrix.org

Mastodon: https://floss.social/@forgejo

Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job. Brought to you by an inclusive community under the umbrella of Codeberg e.V., a democratic non-profit organization, Forgejo can be trusted to be exclusively Free Software. It includes and cooperates with hundreds of projects (Gitea, Git, ...) and is focused on scaling, federation and privacy.

Sincerely


Reply received the same day


Hi team,

Here is the requested short introduction to Forgejo, with the logo attached in SVG.

thanks, much appreciated.
Have a great week!

Sent today to NLnet from the shared email. --- > Hi, > > Here is the requested short introduction to Forgejo, with the logo attached in SVG. > > URL: https://forgejo.org > > Matrix: https://matrix.to/#/#forgejo:matrix.org > > Mastodon: https://floss.social/@forgejo > > Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job. Brought to you by an inclusive community under the umbrella of Codeberg e.V., a democratic non-profit organization, Forgejo can be trusted to be exclusively Free Software. It includes and cooperates with hundreds of projects (Gitea, Git, ...) and is focused on scaling, federation and privacy. > > Sincerely --- Reply received the same day --- > Hi team, > > > Here is the requested short introduction to Forgejo, with the logo attached in SVG. > > thanks, much appreciated. > Have a great week!
Owner

Draft proposition for the one paragraph management summary :


Forgejo - Self-hostable and federated software forge

Forgejo is a lightweight software forge focused on scaling, federation and privacy.
Within this project, we aim to enable easy self-hosting and interoperability. Current solutions either require the use of an externally controlled software forge to foster collaboration (which is bad for sovereignty), or allow anyone to create an account on your own platform (which is cumbersome for the contributors and a legal burden for the host). By proposing a solution to these issues, Forgejo aims to enable data sovereignty (through self-hosting) while encouraging collaboration (through federation).

Draft proposition for the *one paragraph management summary* : --- Forgejo - Self-hostable and federated software forge Forgejo is a lightweight software forge focused on scaling, federation and privacy. Within this project, we aim to enable easy self-hosting and interoperability. Current solutions either require the use of an externally controlled software forge to foster collaboration (which is bad for sovereignty), or allow anyone to create an account on your own platform (which is cumbersome for the contributors and a legal burden for the host). By proposing a solution to these issues, Forgejo aims to enable data sovereignty (through self-hosting) while encouraging collaboration (through federation).
Owner

The introduction that was sent is a copy/paste of what is in https://forgejo.org already. I like the advocacy tone of your summary. Would you like to finalize it so it can be sent instead? I don't have a strong feelings about that: whatever you think best is fine with me.

The introduction that was sent is a copy/paste of what is in https://forgejo.org already. I like the advocacy tone of your summary. Would you like to finalize it so it can be sent instead? I don't have a strong feelings about that: whatever you think best is fine with me.
Owner

Received today from NLnet in the shared mail. The intake document was added to https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet where all other documents related to this grant will be stored as well.


Dear Forgejo team,

Congratulations! We have received the green light from the independent review committee. That means your project "Forgejo" (2022-12-035) is one of the selected proposals eligible to receive a grant from NLnet foundation in the February 2023 NGI0 Entrust call!

We should set up a call in order to undertake the necessary further steps - leading up to a Memorandum of Understanding that includes a concrete project plan with pertinent milestones. Note that the final amount of the grant will be determined in dialogue with you, also taking into account any new insights during the negotiations.

We at NLnet Foundation are very much looking forward to working with you, together with our partners in NGI0 Entrust - which we will tell you more about during our upcoming call. You will also find the key information in the attached document.

Can you please indicate some convenient dates in the coming weeks?

If you meanwhile have any questions, please let us know.

Kind regards,
on behalf of NLnet foundation,

Received today from NLnet in the shared mail. The intake document was added to https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet where all other documents related to this grant will be stored as well. --- > Dear Forgejo team, > > > Congratulations! We have received the green light from the independent review committee. That means your project "Forgejo" (2022-12-035) is one of the selected proposals eligible to receive a grant from NLnet foundation in the February 2023 NGI0 Entrust call! > > We should set up a call in order to undertake the necessary further steps - leading up to a Memorandum of Understanding that includes a concrete project plan with pertinent milestones. Note that the final amount of the grant will be determined in dialogue with you, also taking into account any new insights during the negotiations. > > We at NLnet Foundation are very much looking forward to working with you, together with our partners in NGI0 Entrust - which we will tell you more about during our upcoming call. You will also find the key information in the attached document. > > Can you please indicate some convenient dates in the coming weeks? > > If you meanwhile have any questions, please let us know. > > Kind regards, > on behalf of NLnet foundation,
oliverpool removed the due date 2023-03-07 2023-05-25 13:23:01 +00:00
Owner

From the chat, it seems the following dates can be proposed:

  • 05.06.
  • 06.06.
  • 13.06.
  • 15.06.

between 3pm GMT+2 and 5pm (15-17h CEST) (apparently @crystal is the further away from Greenwich)

I can send an email reply Tuesday to NLNet (family weekend ahead of me). Feel free to send an email if you have time :)

From the [chat](https://matrix.to/#/!zpNKWqkiEOyljSMQDK:matrix.org/$HDCM3Akb3V9XX90lDgADycQgH6XzGANUCz6yvfIV9cM?via=exozy.me&via=matrix.org&via=aria-net.org), it seems the following dates can be proposed: - 05.06. - 06.06. - 13.06. - 15.06. between 3pm GMT+2 and 5pm (15-17h CEST) (apparently @crystal is the further away from Greenwich) I can send an email reply Tuesday to NLNet (family weekend ahead of me). Feel free to send an email if you have time :)
Owner

I just sent the following e-mail:

Hi,

thank you for the great news!

We can propose the following dates for a call:

  • 05.06.
  • 06.06.
  • 13.06.
  • 15.06.

Preferably between 3pm GMT+2 and 5pm (15-17h CEST).

If none fit, could you propose some dates for this time-slot, later in June?
Or an alternative time-slot for those dates?

Sincerely

I just sent the following e-mail: > Hi, > > thank you for the great news! > > We can propose the following dates for a call: > >- 05.06. >- 06.06. >- 13.06. >- 15.06. > >Preferably between 3pm GMT+2 and 5pm (15-17h CEST). > >If none fit, could you propose some dates for this time-slot, later in June? Or an alternative time-slot for those dates? > >Sincerely
Owner

Received today from NLnet


Hi all, then let’s meet 13 June, 15:00 CEST.

You will meet with [redacted] and/or myself. If it works for you, we can use our self-hosted Galene instance, at [redacted] (any username/password works).

See you then!

Kind regards,

Received today from NLnet --- > Hi all, then let’s meet 13 June, 15:00 CEST. > > You will meet with [redacted] and/or myself. If it works for you, we can use our self-hosted Galene instance, at [redacted] (any username/password works). > > See you then! > > Kind regards,
Owner

Reply sent today to NLnet:


Subject: Re: Good tidings from NLnet

Hi,

We will be 13 June, 15:00 CEST at [redacted]

Sincerely

Reply sent today to NLnet: --- > Subject: Re: Good tidings from NLnet > > Hi, > > We will be 13 June, 15:00 CEST at [redacted] > > Sincerely
Owner

After having been alone in the meeting to 1 hour, I have to go...

After having been alone in the meeting to 1 hour, I have to go...
Owner

Reply sent to NLnet:


Hi,

We waited until 16:00 CEST. I hope all is well on your end. Please let us know a few dates so we can reschedule.

Sincerely


Received immediate reply from NLnet:


Hi, really sorry about this! I was in a meeting with our colleagues and forgot about the call completely (and [redacted] was off to a conference); this is why we usually don’t schedule calls on Tuesdays, our office day..

I could still jump in now. Or if Thursday still works for you, we can do that. This time I will ensure to set a reminder!

Kind regards, and again my apologies,


Replied to NLnet


Hi,

No worries: as it turns out a few of us also had issues attending (non technical) so it is all for the best.

We will be 15 June, 15:00 CEST at [redacted]

Sincerely

Reply sent to NLnet: --- > Hi, > > We waited until 16:00 CEST. I hope all is well on your end. Please let us know a few dates so we can reschedule. > > Sincerely --- Received immediate reply from NLnet: --- > Hi, really sorry about this! I was in a meeting with our colleagues and forgot about the call completely (and [redacted] was off to a conference); this is why we usually don’t schedule calls on Tuesdays, our office day.. > > I could still jump in now. Or if Thursday still works for you, we can do that. This time I will ensure to set a reminder! > > Kind regards, and again my apologies, --- Replied to NLnet --- > Hi, > > No worries: as it turns out a few of us also had issues attending (non technical) so it is all for the best. > > We will be 15 June, 15:00 CEST at [redacted] > > Sincerely
Owner

Received from NLnet today as a followup of the intake call. The draft MoU is not included because it contains details that should be redacted. The final MoU will be redacted properly and published here.


Hi all, it was good to talk with you today!

Here is the draft Memorandum of Understanding. We still need your full names and addresses. (I assume Otto will represent and sign on behalf of CodeBerg e.V.) If any of the grant recipients wish to not reveal their full name or address to each other, let us know.

Next is the project plan. As discussed in the call, feel free to take your time to discuss and finalise the plan, especially to consider how Forgejo could adopt and promote best practices in software development, deployment and delivery; I mentioned reproducible builds and Nix specifically, but feel free to propose alternative approaches.

An example/placeholder for the plan is found in the document already. You can put your plan there, but also feel free to send the plan in any format (e.g. plain text) that we can copy it from; we enter it into our database anyway and can then generate a new MoU including your plan.

Please check if everything in the MoU is clear, and do not hesitate to send us any issues or questions you may have.

Kind regards,

Received from NLnet today as a followup of the intake call. The draft MoU is not included because it contains details that should be redacted. The final MoU will be redacted properly and published here. --- > Hi all, it was good to talk with you today! > > Here is the draft Memorandum of Understanding. We still need your full names and addresses. (I assume Otto will represent and sign on behalf of CodeBerg e.V.) If any of the grant recipients wish to not reveal their full name or address to each other, let us know. > > Next is the project plan. As discussed in the call, feel free to take your time to discuss and finalise the plan, especially to consider how Forgejo could adopt and promote best practices in software development, deployment and delivery; I mentioned reproducible builds and Nix specifically, but feel free to propose alternative approaches. > > An example/placeholder for the plan is found in the document already. You can put your plan there, but also feel free to send the plan in any format (e.g. plain text) that we can copy it from; we enter it into our database anyway and can then generate a new MoU including your plan. > > Please check if everything in the MoU is clear, and do not hesitate to send us any issues or questions you may have. > > Kind regards,
Owner

From the debrief of the intake call I understand that the following task is not aligned with NLnet long term goals and I get why. As appealing as Nix/Guix are, I'm not sure I'll have the motivation to learn and apply the knowledge in the context of Forgejo. And since preliminary work already is in progress with both the shell based and Ansible infrastructure deployments, changing gears now does not seem particularly advisable.

Since that seemed acceptable to NLnet, I propose to just remove that from the workplan and replace it with an equivalent effort on another topic. There is no shortage of topics that need attention in Forgejo. It is sometimes overwhelming but in this particular case it makes it really easy.

I can propose an alternate by the end of the week unless someone else beats me to it.


Scope: Infrastructure as code to deploy Forgejo

Ansible based infrastructure as code

Real world Forgejo deployment require DNS, STMP relay, monitoring and more to provide a reliable service, all of which is available in Ansible roles and playbooks. Playbooks are developed to enable Forgejo (and the runner) in this environment. The playbooks are intended to be used to deploy and maintain Forgejo's own infrastructure in the spirit of dogfooding.

Deliverables:

Milestone(s):

  • Ansible role to deploy / upgrade Forgejo
  • Ansible role to deploy / upgrade the Forgejo runner
  • Ansible playbook to deploy / upgrade the Forgejo and the runner
  • Tests for the Ansible roles based on testinfra
  • Forgejo runner workflow to run the tests

Amount:
20%

Shell based infrastructure as code

Codeberg is deployed using shell based infrastructure as code. Shell scripts are written so they can be used by Codeberg in this context. The shell scripts are also meant to be a lightweight alternative to Ansible based infrastructure as code in the context of continuous integration, to deploy and run Forgejo and the associated runners.

Deliverables:

Milestone(s):

  • Script to launch Forgejo from docker
  • Obtain credentials for API and continuous integration agent access to the Forgejo instance
  • Script to launch the Forgejo runner from sources
  • Integration tests verifying the scripts work on a newly deployed Forgejo instance

Amount:
10%

From the debrief of the intake call I understand that the following task is not aligned with NLnet long term goals and I get why. As appealing as Nix/Guix are, I'm not sure I'll have the motivation to learn and apply the knowledge in the context of Forgejo. And since preliminary work already is in progress with both the shell based and Ansible infrastructure deployments, changing gears now does not seem particularly advisable. Since that seemed acceptable to NLnet, I propose to just remove that from the workplan and replace it with an equivalent effort on another topic. There is no shortage of topics that need attention in Forgejo. It is sometimes overwhelming but in this particular case it makes it really easy. I can propose an alternate by the end of the week unless someone else beats me to it. --- ## Scope: Infrastructure as code to deploy Forgejo ### Ansible based infrastructure as code Real world Forgejo deployment require DNS, STMP relay, monitoring and more to provide a reliable service, all of which is available in Ansible roles and playbooks. Playbooks are developed to enable Forgejo (and the runner) in this environment. The playbooks are intended to be used to deploy and maintain Forgejo's own infrastructure in the spirit of dogfooding. Deliverables: * URL to merged pull requests in https://code.forgejo.org/forgejo/infrastructure Milestone(s): * Ansible role to deploy / upgrade Forgejo * Ansible role to deploy / upgrade the Forgejo runner * Ansible playbook to deploy / upgrade the Forgejo and the runner * Tests for the Ansible roles based on testinfra * Forgejo runner workflow to run the tests Amount: 20% ### Shell based infrastructure as code Codeberg is deployed using shell based infrastructure as code. Shell scripts are written so they can be used by Codeberg in this context. The shell scripts are also meant to be a lightweight alternative to Ansible based infrastructure as code in the context of continuous integration, to deploy and run Forgejo and the associated runners. Deliverables: * URL to merged pull requests in https://code.forgejo.org/actions/setup-forgejo Milestone(s): * Script to launch Forgejo from docker * Obtain credentials for API and continuous integration agent access to the Forgejo instance * Script to launch the Forgejo runner from sources * Integration tests verifying the scripts work on a newly deployed Forgejo instance Amount: 10%
earl-warren added the
2022-12-01
NLnet
label 2023-06-15 21:54:44 +00:00
Owner

Sent a pull request with two ideas for alternate tasks that became pressing in the past weeks.

Sent a [pull request](https://codeberg.org/forgejo/sustainability/pulls/16/files) with two ideas for alternate tasks that became pressing in the past weeks.
Owner

@earl-warren sounds good!

I think the "testing part" of your previous tasks can be kept: it does not matter how Forgejo is deployed (shell/ansible/nix), the resulting setup must be tested.

Maybe it could be a dedicated task:

Integration tests verifying the deployment on a newly created Forgejo instance


I think I underestimated my 2 tasks ("Cleaner Webhook system" and "DNS-Update-Checker RFC"), since both will likely require a lot of discussions to get right. I only accounted for the implementation/writing part 🤔

However I don't really know how much this would take...

Does the following estimates seem realistic?

DNS-Update-Checker

  • RFC initial writing: 30 hour (a lot of research to find and link related RFCs, as well as ensuring a proper IETF formatting)
  • RFC discussions: 30 hour (actively seek feedback from other people involved with DNS / software checking updates)
  • example client implementation in go: 8 hour

Cleaner Webhook system

  • Initial implementation of the refactoring into one step: 30 hour
  • Discussion with the maintainers and code adjustments: 30 hour
  • Sourcehut webhook implementation: 8 hour
@earl-warren sounds good! I think the "testing part" of your previous tasks can be kept: it does not matter how Forgejo is deployed (shell/ansible/nix), the resulting setup must be tested. Maybe it could be a dedicated task: > Integration tests verifying the deployment on a newly created Forgejo instance --- I think I underestimated my 2 tasks ("Cleaner Webhook system" and "DNS-Update-Checker RFC"), since both will likely require a lot of discussions to get right. I only accounted for the implementation/writing part 🤔 However I don't really know how much this would take... Does the following estimates seem realistic? ### DNS-Update-Checker - RFC initial writing: 30 hour (a lot of research to find and link related RFCs, as well as ensuring a proper IETF formatting) - RFC discussions: 30 hour (actively seek feedback from other people involved with DNS / software checking updates) - example client implementation in go: 8 hour ### Cleaner Webhook system - Initial implementation of the refactoring into one step: 30 hour - Discussion with the maintainers and code adjustments: 30 hour - Sourcehut webhook implementation: 8 hour
Owner

@oliverpool I can't really tell. But whatever makes most sense to you is fine with me. That would be roughly 10% of the total for each task (20% for both). Can you submit a PR to modify the amount on https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md?

The new task I proposed total 15% and there is room for your tasks to use more since other tasks were removed.

@oliverpool I can't really tell. But whatever makes most sense to you is fine with me. That would be roughly 10% of the total for each task (20% for both). Can you submit a PR to modify the amount on https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md? The [new task I proposed](https://codeberg.org/forgejo/sustainability/pulls/16) total 15% and there is room for your tasks to use more since other tasks were removed.
Owner

@caesar you've authored a large part of the UI / website / theming currently in use with Forgejo. As part of the NLnet grant there will be an accessibility audit to identify the problems. But they won't fix them. Would you be interested in working on that? This would be a natural fit since you're already taking care of this kind of problem.

The current draft workplan is missing tasks for 30% worth of the total budget. I proposed tasks to use that in this PR but IMHO work on the UI / theming is more important.

I'll repeat here what I wrote before: all the work I do on this grant is paid to Codeberg and I won't get a cent from it. I followed up to make sure the grant does not go to waste but I don't need the funding to keep going. This is the reason why I am not a beneficiary. What it means is that tasks that I'm set to implement can be removed from the workplan and replaced by other tasks and it won't make a difference for me.

@caesar you've authored a large part of the UI / website / theming currently in use with Forgejo. As part of the NLnet grant there will be an accessibility audit to identify the problems. But they won't fix them. Would you be interested in working on that? This would be a natural fit since you're already taking care of [this kind of problem](https://codeberg.org/forgejo/forgejo/issues/864). The [current draft workplan](https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md) is missing tasks for 30% worth of the total budget. I proposed tasks to use that in [this PR](https://codeberg.org/forgejo/sustainability/pulls/16) but IMHO work on the UI / theming is more important. I'll repeat here what I wrote before: all the work I do on this grant is paid to Codeberg and I won't get a cent from it. I followed up to make sure the grant does not go to waste but I don't need the funding to keep going. This is the reason why I am not a beneficiary. What it means is that tasks that I'm set to implement can be removed from the workplan and replaced by other tasks and it won't make a difference for me.
Member

Thanks @earl-warren for the proposal. I'd love to get more involved in Forgejo again and to be honest some funding would make a huge difference to my ability to do that. So I'm definitely interested. The UI needs a lot of work, especially on accessibility issues, so as you suggest I'd be happy to work on that.

I have a few thoughts and questions, to get my head around what is involved. I haven't been following the funding discussions so far, so I have some catching up to do. I'll do some reading of what has been discussed so far. I've skimmed the workplan, but will have to look through it in more detail later.

To get things going, beyond my availability to do the work, what is required from me in terms of administrative / planning stuff?

Thanks @earl-warren for the proposal. I'd love to get more involved in Forgejo again and to be honest some funding would make a huge difference to my ability to do that. So I'm definitely interested. The UI needs a lot of work, especially on accessibility issues, so as you suggest I'd be happy to work on that. I have a few thoughts and questions, to get my head around what is involved. I haven't been following the funding discussions so far, so I have some catching up to do. I'll do some reading of what has been discussed so far. I've skimmed the workplan, but will have to look through it in more detail later. To get things going, beyond my availability to do the work, what is required from me in terms of administrative / planning stuff?
Owner

To get things going, beyond my availability to do the work, what is required from me in terms of administrative / planning stuff?

That's it.

> To get things going, beyond my availability to do the work, what is required from me in terms of administrative / planning stuff? * A patch to [the current workplan](https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md) with the tasks you're willing to undertake * Your personal details to entrust2022@forgejo.org for inclusion in the MoU * Setup entrust2022@forgejo.org to access the mailbox * Once a task is done you ask for payment using the online web interface with your bank details That's it.
Member

Perfect. I'll get on with that ASAP.

Perfect. I'll get on with that ASAP.
Owner

@earl-warren thanks, I will submit a PR.

That would be roughly 10% of the total for each task (20% for both).

If I am not mistaken, we stated a "60€ per hour rate", so it would amount to 2 * 4080 = 8160 €, which is a bit more than 16% (8% each) of the request 50,000 €.

@earl-warren thanks, I will submit a PR. > That would be roughly 10% of the total for each task (20% for both). If I am not mistaken, we stated a "60€ per hour rate", so it would amount to 2 * 4080 = 8160 €, which is a bit more than 16% (8% each) of the request 50,000 €.
Owner

For information:

  • a private matrix room has been created for the beneficiaries or the grant:
  • the password of the entrust mailbox has been rotated and shared between the participants above
  • an email will be sent to NLNet, with the list of beneficiaries
  • the workplan will be worked on here, publicly, with PRs
For information: - a private matrix room has been created for the beneficiaries or the grant: * @fnetX * @crystal * @caesar * @oliverpool * @earl-warren (even if not strictly a beneficiary) - the password of the entrust mailbox has been rotated and shared between the participants above - an email will be sent to NLNet, with the list of beneficiaries - the workplan will be worked on here, publicly, with PRs
Owner

I confirm I was able to access the shared mbox with the new password 👍

To be abundantly clear, I won't get any money personally (this is why I'm not a beneficiary) and the payment for all the tasks I complete will be to the benefit of Codeberg as represented by @fnetX. I'm a Codeberg volunteer in this matter.

I confirm I was able to access the shared mbox with the new password 👍 To be abundantly clear, I won't get any money personally (this is why I'm not a beneficiary) and the payment for all the tasks I complete will be to the benefit of Codeberg as represented by @fnetX. I'm a Codeberg volunteer in this matter.
Owner

E-Mail sent to NLNet:

Hi [redacted],

please find below the details for the beneficiaries.
[redacted]

The workplan is being finalized under https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md

Is the current structure of the document (with amounts in percentage of the total amount) reasonable, for you to work with?

Best regards

E-Mail sent to NLNet: > Hi [redacted], > > please find below the details for the beneficiaries. > [redacted] > > The workplan is being finalized under https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2023-06-workplan.md > > Is the current structure of the document (with amounts in percentage of the total amount) reasonable, for you to work with? > > Best regards
Owner

Email sent to NLNet:


Hi,

A short note to explain the differences between the current workplan and the one that was discussed during the intake call.

The concerns [redacted] triggered discussions that, as expected, are not concluded yet. The related tasks were removed from the workplan. They were replaced by tasks to improve accessibility. They were not included in the first workplan because Caesar was not available at the time. They are important for Forgejo and can hopefully be in scope for the grant.

We are ready to address your comments on the workplan. If it looks good to you as it is, we are also ready to implement it.

Sincerely

Email sent to NLNet: --- > Hi, > > A short note to explain the differences between the current workplan and the one that was discussed during the intake call. > > The concerns [redacted] triggered discussions that, as expected, are not concluded yet. The related tasks were removed from the workplan. They were replaced by tasks to improve accessibility. They were not included in the first workplan because Caesar was not available at the time. They are important for Forgejo and can hopefully be in scope for the grant. > > We are ready to address your comments on the workplan. If it looks good to you as it is, we are also ready to implement it. > > Sincerely
Owner

The workplan was accepted, the MoU signed and archived (anonymized) #20. A tag was defined to group issues & pr related to this grant.

Can this issue be considered closed?

The workplan was accepted, the MoU signed and archived (anonymized) https://codeberg.org/forgejo/sustainability/pulls/20. A [tag](https://codeberg.org/forgejo/sustainability/pulls?labels=123038) was defined to group issues & pr related to this grant. Can this issue be considered closed?
Owner

Please re-open if you think it deserves more discussions.

Please re-open if you think it deserves more discussions.
Owner

FYI an e-mail was received on contact@ about "publish[ing] content about Forgejo on apc.org and in our networks" forgejo/discussions#145

FYI an e-mail was received on contact@ about "publish[ing] content about Forgejo on apc.org and in our networks" forgejo/discussions#145
Sign in to join this conversation.
No milestone
No project
No assignees
10 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: forgejo/sustainability#1
No description provided.