Is Summer of Nix worth the money?

@delroth asked on Matrix:

question to the board: who from the foundation side is tracking how the Summer of Nix money is being used and whether that’s actually a valuable investment for the community?

I manage the NGI0 grant money on behalf of the NixOS Foundation, so I feel responsible to address any questions and concerns raised about what’s happening.

Given so many people have added bits of context on Matrix, I don’t think it will help much if I make a full-blown statement. Therefore I’ll just comment on the items which I think need emphasis or clarification. In the following by “we” I mean everyone involved in the project:

  • The funding from NLnet is purpose-bound. The goal of the NixOS Foundation’s NGI0 engagements is not to contribute to the Nix ecosystem, but to support other projects funded through NLnet with getting adoption and further the NGI0 consortium’s strategic goals. It is also decidedly not a trainee program, even if a secondary part of the effort is knowledge sharing. If the Nix ecosystem gets improved as a side effect, and if more people become contributors, that’s of course desirable. Yet, we have to be very careful not to misappropriate the money on formal grounds. Whether we use it effectively and efficiently is of course still a valid, but orthogonal question, which I will pick up in the following.

  • I would love to publish the full grant agreements so we’re all on the same page, but I was told not to by Ronny, the NLnet representative I work with; supposedly because of sensitive data they may contain. As @delroth points out, the funding goals are indeed broad, and we have quite some freedom what exactly to do with the money, but that’s mainly a negotiation with NLnet.

    My mental model is considering the NixOS Foundation’s involvement with NGI0 as a somewhat separate organisational unit besides the volunteer Nix community, because it operates under different conditions and constraints.

    I’m very much open for anyone to participate in developing or refining this setup to take the community’s various interests into account. So far no one who wasn’t already directly involved in the process approached me with input. This may also be because I may not have communicated this option explicitly enough, please excuse that oversight.

  • Upstreaming NGI0 work to Nixpkgs would be ideal, but is not always meaningful or economic. Others have pointed out the friction when doing contributions: it messes with participants’ pacing, and burdens Nixpkgs volunteers with additional requests. We also don’t have the budget to ensure long-term maintenance. I wouldn’t want more unmaintained code in Nixpkgs; getting that thrown out a year later wouldn’t help anyone. This is why we decided to use NGIpkgs as a staging area for Nixpkgs. It doesn’t work well yet, admittedly, but I think we’re getting there slowly. That doesn’t mean we can’t do something else entirely, if there’s reason to believe that will improve the situation and can be expected to be economic. Feel free to propose changes as pull requests to documentation, or discuss ideas in private or in public.

  • That said, there is a part of that budget which the foundation can use freely, as noted in a foundation board issue I wrote. I’m deliberately not touching that, because while technically it’s part of the grants I manage, it’s a question of ecosystem investment, and I have no authority or mandate to decide on that.

  • Additionally, there are plenty of opportunities for individuals to get funding from NLnet to do R&D that would benefit the Nix ecosystem. In fact, there’s easily 10x money available for that than what the NixOS Foundation gets. Please talk to me if you want to know more, I can answer many questions and give pointers.

  • I’d like to re-iterate on productivity vs. knowledge sharing: I’m aware that things are inefficient, and tried to convey that in the 2023 report. Yes, the number of things packaged is disappointing. But please consider that numbers from past years are not a meaningful comparison, because many of those Nix packages were very low-quality, many projects were already dead while being packaged, and essentially nothing was under CI. We recently garbage-collected more than half of the repositories in the GitHub org (archived stale, deleted empty ones) to get a clearer picture.

  • Admittedly we don’t have meaningful objective success metrics. I took measures to have a better grasp on operations this year to ensure qualitatively better outcomes and be able to communicate them clearly. We’ll soon start work to capture coverage of NLnet-funded projects packaged, for which there is an initial issue to be addressed by one of the groups. This is what’s actually important for financiers to know, and what would help most to direct future efforts. Another basic metric could be the number of NixOS tests per service. We could also count the percentage of past participants ending up Nixpkgs contributors or committers. Some things, such as utility of our support to upstream authors are hard to capture. And finally, establishing those metrics costs money that can’t be used for other things. Maybe you have more ideas?

  • As participants noted, of the few projects that were completed last year, most were surprisingly tricky to get to work. The services do have VM tests and packages are under CI. Right now I’m spending money to get infrastructure problems fixed and existing meaningful packages revived.

  • The pretalx service being re-implemented is a major fuckup on my side, because I simply overlooked the @hexa’s open Nixpkgs PR. I keep piling up checklists and documentation to prevent such things in the future, but still can’t catch up with making all of that public.

  • Machines running unused was something I was made aware of just recently. I have effectively no visibility into what happens on the infrastructure or financial side of the foundation. I got access to the foundation’s book keeping in January 2024, but honestly even now I wouldn’t be able to determine such a resource leak from that. In my opinion, it would need serious onboarding and possibly refactoring to make sense of what there is. I discussed that with @edolstra and asked for permission to spend time on it (as it would noticeably eat into some budget), but did not get green light on the spot and still no feedback if it was discussed by the board. I have my own accounting system based on the NGI0 budget as defined in the grant agreements, where I track all expenses that are brought up with me. This is no excuse for wasting money, and I’m not blaming anyone: It’s part of my responsibility to take care of these things, and the infra team and foundation board are all volunteers. I should have asked more diligently about things I should know, and followed up with loose ends.

  • There’s a general economic issue no one seems to be talking about: 100k EUR per year is not a lot of money to fulfill all desires. Do you want high-quality code and continuous support? Sure, let’s hire an experienced full-time developer and call it a day. Or do you want to spread responsibility, get a bit of attention, and pull new people into the ecosystem? That’s what we’re doing with the summer program, more or less out of tradition. But that won’t magically create the level of professionalism you may like; primarily because compensation in such a scenario is rather symbolic.

  • Last year I was very hands-off, partly to save money (I don’t want >20% management overhead), partly not to make people feel micro-managed. I spent a substantial chunk of my paid time to get the internal and external communication flows straight, keeping stakeholders informed of the state of affairs, and getting order into accounting and reporting. All that eats budget and isn’t visible as a tangible outcome. But it’s required for running the operation and no one else is doing that otherwise. After the fact it felt I was available too little to provide guidance to participants. We got a better structure and routine now, and I talk much more regularly to developers.

  • Mob programming was mentioned multiple times as being perceived as inefficient. As I wrote elsewhere, I’m aware and critical about that. I decided to continue with @mightyiam’s mob agenda, adjusted by making a tighter feedback loop and having an non-mob team for comparison, because I thought the program needs continuity and predictability more than raw output. Like last year, I again delegated much responsibility for the operational concept to @mightyiam, because I got convinced that he’s capable of creating good working conditions for facilitators and participants, while producing generally beneficial outcomes. We also very seriously discussed the cost-effectiveness, and I deemed the trade-off against effective knowledge sharing as reasonable, although that was a tough call for me. Both aspects having been questioned recently, I’m open for re-negotiating these decisions, given we keep existing commitments in mind.

My stated goal last year was to ensure better quality, consistency, and visibility of outcomes, at the expense of quantity if need be. I was involved with Summer of Nix 2021 and 2022 on the periphery, found it highly disorganised (due to sensible decisions made at the time, details are in the reports, ask me if you want to know more), and wanted to do something about that. To use strong words, I felt like I inherited a mess. Arguably it’s still mess, but less so. Things take time, and I’d like them to go faster too, but I’m convinced we’re on an okay trajectory overall. I may have been wrong with adopting a couple of views unquestioned when doing the hand-over, and worked with what was there and what I knew. Today I understand I should have done even more things in public, asking for community feedback more often and more clearly, talked to even more people, and asked more critical questions. It seems the trade-off I struck between “spending time and budget on doing ‘unproductive’ strategic meta-communication”, and “sorting things out on the operational side of things” prevented me from building a mental model of the situation that is more aligned with community needs and thus making more informed decisions. I regret that, because I find that such an influx of resources as with the NGI0 grants should reward the most prolific existing contributors who may need the money most and would at the same time make the best of the situation with their expertise. Hence I’m open for discussing how to proceed.

Would you suggest exclusively picking Nixpkgs committers as mentors or team leads? Have fewer teams but have people work more and longer? Should someone else take the technical or organisational lead?

Final thoughts, and to answer @delroth’s question: I wish someone did. So far the communication with the foundation board was thin. In addition to the odd public note, I’m writing brief monthly internal updates, but rarely receive any reaction at all. This month I’ll start sending those monthly reports to NLnet as well (on top of the impromptu check-ins with Ronny or Michiel that have always happened). But to be honest, it feels like flying blind. I discussed this with @zimbatm and @thufschmitt, and asked for more (at least moral) support and more timely decision-making. I understand though that the board is very limited on time and has enough on their plate. Still, my impression is that the NixOS Foundation needs to grow much more organisational maturity to handle the sort of money that’s flowing in from NLnet and other sources, and that appropriate investments into building institutional structures and routines are required to get there. I’m also in touch with Michiel from NLnet about this. I asked the board for decisions to allocate resources or delegate authority on various occasions, and outside of my formal role here (e.g. Open Collective access for teams, budgets for teams, funding for Nix development) because I’m not authorised or qualified to make them myself, but get blocked on inaction in my day-to-day work. For all intents and purposes, I don’t see tangible progress in that regard, and I am frustrated.

23 Likes

Thank you for this elaborate reply and for taking the initiative to move the discussion to a (hopefully) more productive medium!

I think I generally agree with what you’ve written here. The clarifications regarding the relationships between NLnet / NixOS Foundation / NGI0 / SoN are extremely useful - it didn’t fully register to me that even though the Foundation is receiving and distributing the money for SoN, they’re not in fact in charge of defining the broad goals and mission of SoN. I’m kind of confused what the role of the Foundation is in all this then (vs. this just being run completely separate from NixOS), but reading the last paragraph of your post I think I’m not alone in being confused.

Taking at face value from your post that SoN is not strongly “competing” with other potential grants towards Nix/NixOS and its community (or that its outcomes don’t reflect well/badly on other potential future Nix grants), I feel like I have very little stake in what SoN does or how SoN operates. It’s kind of NLnet’s problem :slight_smile: . And so while I still feel like there are many operational decisions around SoN I have issues with (some involving a certain 3 word letter having to do with the mafia… and some having to do with putting people with no experience with Nix in leadership positions) I really don’t feel like it’s useful for me to engage further.

4 Likes

This is a negotiation with NLnet. The NixOS Foundation as an institution, on behalf of which I take part in this negotiation, is of course involved in shaping the goals, but is not the sole decision maker.

The NixOS Foundation as an institution receives grant money and has to fulfill the obligations defined in the grant agreements. That work is delegated to me. The foundation’s board oversees my work and is ultimately responsible, because they are the legal representatives of the NixOS Foundation. NLnet would like certain things to happen, and they trust the NixOS Foundation to make them happen.

I’m sure Summer of Nix is not competing with anything, and would take great care to stop that if it did. I do think though that its outcomes have an impact on chances of future funding of the institution or individuals from the community, both from NLnet and others. The program is supposed to be visible. A good organisational track record would help build trust in the technology and the people involved. And even if only a small group were responsible for the outcome, it would reflect on others’ chances of getting more opportunities to do the same. Most people don’t see the distinction between the label and the individuals, regardless of how much is written down. From what I observe, the larger the funding organisation, the less likely it is to interact individuals, so the NixOS Foundation could (and in my opinion, should) serve as a funnel of resources into the community. The NGI0 grants are a perfect example. The NixOS Foundation does not even register for the European Commission. It takes a whole consortium close such ~20 million Euro deals.

10 Likes

Responding from my vacation, here. But don’t have much to add on top of Valentin’s response, other than these couple of things.

Anything this important within Valentin’s responsibility is highly unlikely to suffer from a critical oversight. That’s my impression.

I have more confidence and faith in synchronous collaborative software development (mob programming) than him.

1 Like