NLnet - December 1st, 2022 #1
Labels
No labels
2022-12-01
NLnet
2024-04-01
NLnet
2024-05-17
OTF
User Research - Accessibility
User Research - bug
User Research - Config (instance)
User Research - Dashboard
User Research - documentation
User Research - Errors
User Research - feature
User Research - federation
User Research - Filters
User Research - governance
User Research - Labels
User Research - Moderation
User Research - Needs Input
User Research - Notifications
User Research - release
User Research - Repo creation
User Research - Repo Units
User Research - security
User Research - Settings (in-app)
User Research - testing
User Research - UI
User Research - UX
No milestone
No project
No assignees
10 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: forgejo/sustainability#1
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.
@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.
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.
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?
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.
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.
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] ..
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".
What you do on daily basis.. all activities of the FSDL.. all potentially federated.
As I mentioned in chat:
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.
To clarify: I understand what it means. What I would have trouble with is explaining what it means to other people.
True. All NLnet reviewers are in the FOSS circles and assuming "code forges" is something they are familiar with is, IMHO, reasonable.
@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:
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.
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.
@Ryuno-Ki no character limit.
@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)
This is good enough. Short but has the essential informations that make you a good candidate IMHO.
@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
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.
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.
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).
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.
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.
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:
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.
X I want NLnet Foundation to erase all information should my project proposal not be granted
Okay, today I had less mental pressure, so I believe I can cook up a bio :)
Nuff said? 😹
What's the order of magnitude here?
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?
Sent to @fnetX @Ryuno-Ki @oliverpool. No action required.
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.
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 mentionsCodeberg.org. Maybe we should stick to one? (I thinkCodeberg.orgis better, to differentiate withCodeberg e.V).I have the following suggestions for the Abstract. Feel free to dismiss them, given my lack of experience in such matters...
(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)
(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").
(no change, keep as-is)
(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.
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.
Oh sorry, your messages came in as I wrote mine.
Feel free to disregard my comment and take some well-deserved rest 😄
(In my message I already re-wrote the paragraphs)
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).
I'd rather keep updating this one if I'm the one doing it.
@oliverpool your changes were applied here
0ac3153d79with a few minor modifications to keep it under 1200 characters44d0b03269The 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.
Mail received today
Received today from NLnet. This is the first step only, it is not an approval.
@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).
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.
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.
Received from NLnet today:
Possible concrete technical outcome: an RFC using DNS for release checking forgejo/forgejo#379 (suggested by @dachary :)
@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.
Not sure what role I could have in pushing this, but I'll happily review a draft and ensure some fairness :)
Reply sent to NLnet today:
As a reminder and to opening up a brainstorm, I see at least three areas to develop:
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
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.
Received from NLnet today
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.
Since there is no answer ready just yet, I sent the following to NLnet today:
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.
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!
Ah, yes, I think I sent that message about 90 minutes before @dachary added his comment here. 👍
This is about a different grant application, not this one.
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.
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 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.
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.
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.
@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:
Deliverables:
Estimated duration:
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.
Deliverable:
Estimated duration:
Besides those subject, I would be willing to help reviewing other PRs made in the scope of this grant.
For the record, draft answer & workplan at https://pad.gusted.xyz/Hog59MExT0iDHlzjezfCiQ#
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.
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 prefer that my work goes through Codeberg than to be a direct beneficiary.
The following mail was sent today
Hi,
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.
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:
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).
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:
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)
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)
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):
Amount
2%
DNS-Update-Checker RFC
Aprivacy-friendly and scalable system to check if an update is available (based on DNS)
Problems:
Deliverables:
Amount: 5%
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.
Deliverable:
Amount: 5%
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):
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):
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):
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):
Amount:
10%
The answer from NLnet acknowledging they received the answer came in today in the shared email account:
Sent today to NLnet from the shared email account.
Received today from NLnet.
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.
The following reply was sent from the shared email.
Received today in the shared email.
Sent today to NLnet from the shared email.
Reply received the same day
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).
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.
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.
From the chat, it seems the following dates can be proposed:
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 :)
I just sent the following e-mail:
Received today from NLnet
Reply sent today to NLnet:
After having been alone in the meeting to 1 hour, I have to go...
Reply sent to NLnet:
Received immediate reply from NLnet:
Replied to NLnet
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.
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):
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):
Amount:
10%
Sent a pull request with two ideas for alternate tasks that became pressing in the past weeks.
@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:
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
Cleaner Webhook system
@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.
@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.
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?
That's it.
Perfect. I'll get on with that ASAP.
@earl-warren thanks, I will submit a PR.
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 €.
For information:
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.
E-Mail sent to NLNet:
Email sent to NLNet:
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?
Please re-open if you think it deserves more discussions.
FYI an e-mail was received on contact@ about "publish[ing] content about Forgejo on apc.org and in our networks" forgejo/discussions#145