ForgeFed NLNet grant application

I put the application text in a repo (soon moving here). That repo also has a workplan document with ideas for funded tasks. I’ll write in this topic as updates come.

Status (9 Jan 2023): Passed final round, waiting to schedule meeting with NLNet

2 Likes

Dear [redacted],

this mail serves to acknowledge receipt of your grant application “ForgeFed” (2022-10-071). 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 October 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,
[redacted]

1 Like

The Gitea ltd company is a move from disorganization to organization, from mess in a good way to structure in a normally bad way. The is a bigger discussern to be had than we often talk about. What do you think from a grassroots prospective about this?

Is the such a thing as a grassroot prospective for you?

Great question, but can you post it in a separate topic? (if still relevant)

1 Like

Dear [redacted].

it is my pleasure to inform you that your project “ForgeFed” (2022-10-071) has been selected to enter the second round of the October 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,
[redacted]

1 Like

Dear [redacted],

you applied to the 2022-10 open call from NLnet. We have some questions regarding your project proposal ForgeFed.

You requested 50000 euro. Can you provide some more detail on how you arrived at this amount? Could you provide a breakdown of the main tasks, and the associated effort? What rates did you use?

The ForgeFed effort is now several years old. What is the process to add features to the specification, and what are the plans for this grant? How do you see the overall governance of the ForgeFed specification? How do you make sure the right folks are at the table? Have you considered taking the process to a standards body (W3C?) at some point?

You are probably aware that we are also funding work from Gitea’s end (NLnet; Federated software forges with Gitea). How do you see the relationship with this project?

Could you reflect on F3 (the “friendly forge format”) [1]? How applicable is that to Vervis?

We look forward to hearing from you, thank you very much for your timely reply.

Kind regards,
on behalf of NLnet foundation,
[redacted[

[1] About the Friendly Forge Format (F3) - Friendly Forge Format (F3) - forgefriends

On Wed, 2022-11-23 at 17:34 +0100, [redacted] wrote:

Dear [redacted],

you applied to the 2022-10 open call from NLnet. We have some
questions regarding your project proposal ForgeFed.

You requested 50000 euro. Can you provide some more detail on how you
arrived at this amount?
Could you provide a breakdown of the main tasks, and the associated
effort? What rates did you use?

Amount:

Most of the work I’ll be doing is implementation, and the rest is
working on the ForgeFed specification document. I’d like to be working
on the project 2-3 days a week, and using the following rates:

  • Work 18 hours per week (2x9 or 3x6)
  • 52 weeks in a year
  • 18 * 52 = 936 hours total
  • Asking for $54 per hour

18 * 52 * 54 = 50544

Main tasks to do in these 936 hours:

  • Integrate Cap’n Proto in Vervis (https://capnproto.org), this is a
    distributed object capability actor RPC system that is now becoming a
    primary component of ForgeFed (more on this below)

  • Define and implement integration of Cap’n Proto with ActivityPub, to
    allow the social/human aspects of federation to be done via the
    Fediverse (browsing content, exploration, search, following, watching,
    user profiles, notifications, etc.)

  • Design and implement a UI/UX for federated forges, that Vervis will
    use, and other forges can later use too

  • Guide the Gitea/GitLab/etc federation developers in integrating Cap’n
    Proto into Gitea (there are actively developed and maintained Cap’n
    Proto libaries for both Haskell and Go, which makes it a great fit for
    us)

  • Develop and evolve RPC APIs for the core aspects of forges (issues,
    PRs, repos, teams) in collaboration with Gitea federation developers

  • Update the ForgeFed specification to reflect the new ActivityPub &
    Cap’nProto combined federation system

  • Implement federation of more forge features (milestones, releases,
    CI, forks, pages, migrations), define RPC APIs and vocabularies for
    them and document in the ForgeFed specification

  • Define and stabilize the specification’s evolution and decision-
    making process

The ForgeFed effort is now several years old. What is the process to
add features to the specification, and what are the plans for this
grant? How do you see the overall governance of the ForgeFed
specification?

Plans for the grant:

A major (and exciting!) upcoming addition to the forge federation
toolbox is the Cap’nProto RPC system I mentioned above. I’ve come to a
conclusion that ActivityPub alone, which is just meant for social
features, isn’t really suitable for complex transactions and
interactions on collaborative resources (like repos, PRs, kanban
boards, etc.). And after a lot of research and discussion with dear
experts in OCAPs and distributed actor systems, Cap’nProto seems to be
the best way to go.

If you haven’t heard of Cap’nProto before: It’s basically like Spritely
Goblins (which is a project you’ve been funding, if I recall
correctly?) but in a more mature state, used in production by thousands
of projects. And there are plans for it to interoperate with Spritely
in the future.

Integrating Cap’nProto will require some work, but:

  • It will make implementing federation much much easier, both for
    forges and in general
  • It will make collaboration much easier, because ForgeFed will provide
    an evolving API that forges can implement, and evolving an API is
    much easier than evolving a complicated linked data vocabulary
  • There’s support for auto-generating code for a variety of programming
    languages, making it really easy to work with
  • Object capabilities are built-in, no need to re-invent them, no need
    to implement from scratch

I believe this distributed actor RPC system provides a strong
foundation, allowing forge federation to evolve smoothly into the
future.

I also intend to work on UI/UX, federate more forge features, stabilize
the specification and more, as listed above.

Process of adding features:

The specification has been evolving a lot in the past year, and during
this time, adding features has involved opening a PR, and getting the
approval of 2 ForgeFed maintainers. This is just a temporary setup,
trying to balance rapid progress with community involvement. Several
people successfully got their PRs reviewed and merged.

After adding Cap’nProto into the ForgeFed specification, adding
features will mean opening PRs that change the RPC API interface files,
which will hopefully be easy for developers to do and understand, and
easy for the ForgeFed maintainer team to review.

I’ll also work with the rest of the team on setting up an explicit
governance system, in which decision making processes about
specification changes take into accounts the needs and considerations
of all the people affected, both developers implementing the
specification and “users” affected by those developments. I happen to
also be in the nonviolent-organizational-system field, so this is very
dear to me.

My vision/plan for governance: There will be a board/team of people,
working together under a shared and explicitly defined vision, who will
evaluate and review changes and new features in the specification.
Possibly, each forge feature may have its own subteam, as needed. The
team will include implementors of the specification (e.g. Gitea
developers), people and organizations that run and host federated
forges (e.g. organizations like Codeberg, Framasoft, etc.), people and
organizations who use the federated forges for important missions/work
and want their needs to be represented; and trusted people in the Free
Software community who are there to represent and protect the vision
and values under which ForgeFed exists and the team operates. Review of
specification features will allow affected members to state the impact
of the proposed changes on them, and any concerns can then be addressed
and taken into account.

How do you make sure the right folks are at the table?

I’ll be inviting them :slight_smile: I imagine that once Gitea federates, the
admins of big forge instances like Codeberg will want to participate,
because federation has an effect on them and on the features they
provide. And I’ll be inviting organizations like FSF, to be present and
protect the needs of the community.

And every project that implements ForgeFed or a part of it, or hosts
software that does, is welcome and will be invited to be in the team.

Have you considered taking the process to a standards body (W3C?) at
some point?

I thought about it many times over these years since ForgeFed started.
Especially recently, seeing that Spritely’s OcapN protocol is going to
be brought to a standards body at some point.

Essentially, yes, when the specification reaches a stable state, it
will probably be beneficial for it to be backed by a standards body
where experts can take it through a high quality standardization
process.

But I do worry, because as far as I can tell, standards bodies operate
under conflicting visions: Some of their members work for a human-
centric internet, and some of them work for companies that want to make
profit and the community/human interest isn’t their priority and isn’t
on their mind. I’d like to see forge federation serve people’s needs
and prosperity, and not be taken away by some companies like GitHub
that want to pull everyone to use their product. It’s really really
important to me, that ForgeFed’s governance system operates in relation
to a vision that puts humans in the center, and technology as a tool
that serves them.

But I never participated in a standards body myself. So I will consult
with other people about this, including the Spritely team (if you have
thoughts about this, I’d love to hear).

You are probably aware that we are also funding work from Gitea’s end
(NLnet; Federated software forges with Gitea). How do you see the
relationship with this project?

All of us are working together, collaborating on the forge federation
effort. I will continue to work together with them, updating the
specification together, and implementing it together (them in Gitea, me
in Vervis) and tackling challenges together. I saw that some of the
tasks in their MoU are about ForgeFed features; I’ll be working
together with them, reviewing the features they add to the spec.

People in the Federated Gitea team will also be packaging Vervis for
Docker, with the intention to use it in an automated forge federation
test suite; I’ll be assisting this work as needed.

Could you reflect on F3 (the “friendly forge format”) [1]? How
applicable is that to Vervis?

F3 is a data format for forge data, intended to allow full and reliable
migration between forges, archival of software projects, prevent vendor
lock-in. Very relevant to Vervis! So far, the F3 format is being based
on Gitea’s API and database schema, which obviously differ from the
data model of other forge software like Vervis. But implementing it in
Vervis is possible, even if requires changes in F3 for the data format
to be more flexible. So, totally applicable :slight_smile: If it becomes the
standard way to migrate between forges, I’ll definitely implement it in
Vervis. It’s also possible that ForgeFed will use F3 as a standard
mechanism for migrations. I’ll know more after integrating Cap’nProto
into Vervis.

Let me know if anything is unclear in my answers, or any further
questions you have :slight_smile:

1 Like

Dear [redacted],

first of all: best wishes for 2023! Second of all: congratulations! It has taken a while due to e.g. the Christmas holiday but today we have received the green light from the independent review committee. That means your project “ForgeFed” (2022-10-071) is one of the selected proposals eligible to receive a grant from NLnet foundation in the October 2022 NGI0 Entrust call! Sorry we kept you in suspense for so long.

We at NLnet Foundation are very much looking forward to continue 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,

[redacted]

5 Likes

I had a meeting with NLNet today. Going to prepare and send them a work plan draft. Ready to start an exciting year of forging :slight_smile:

3 Likes

congratulations and good success! NLnet; ForgeFed

1 Like