Rethinking Project Maturity as a Community Process

September 30, 2019

Author: Ben Adams, .NET Foundation Board Member

The Project Support action group is responsible for brainstorming and helping to implement the various ways (and services) that the .NET Foundation offers to member projects. The goal is to ensure that member projects are sustainable and well supported.

The .NET Foundation's current Project Support so far has been focused on providing services and automation for projects; to help project maintainers and contributors to be able to focus more on their projects and less on the infrastructure.

The .NET Foundation board has been looking at how we can go further and offer projects a greater degree of support. As part of this we saw some key areas the .NET Foundation could provide guidance and assistance as part of this initative.

The areas we identified fit together as four threads, which are interwoven and interdependent:

Sustainability

Continuity

Security

Adoption

We created a first draft proposal as part of this initiative as the Project Maturity Model and announced it at the .NET Conf 2019 because we were excited to share and we wanted to reach the widest possible audience.

I, Ben Adams, was elected on a mandate of

I’d like the .NET ecosystem to thrive with projects people consider and take dependencies on to be much wider than the narrow “Microsoft-blessed” scope that people and companies generally consider.

I consider this Project Support Initiative as part of that mission. This initiative was directed by the .NET Foundation board and not by Microsoft (though Microsoft employees did participate in drafting the initiative). However, this does not excuse it being presented as a solution, without broader community consultation and I (and the Board) take responsibility for that. So for that I must apologise, and I'm slowing this process down to get back to basics and to move forward on more solid ground.

The whole .NET Foundation board is listening, participating in, and taking to heart the excellent feedback from the community. We apologise this was rushed before we had fully engaged with project leaders and members. More problematically we shared a solution to a problem without discussion with members about what the problem was or how the solution could address it.

We accept this meant we may have been addressing the wrong problem; or risking not finding the correct solution. We had hoped this proposal would spark discussion; but now realise presenting "what" without the context of "why" to demonstrate "how" seemed more like a fait accompli then a starting point for evolution of the proposal.

This was the opposite of what we were trying to do and the .NET Foundation Board will be more transparent and inclusive in the approach it takes in future.

The most important thing to us is the projects, and we want them to succeed. We want to enable them, not constrain them.

We consulted with some projects to understand if we were were taking the right approach; and we consulted with Microsoft and other companies to see if our solution would enable adoption of projects by them; and allow them to be acceptable under stricter corporate governance policies. Unfortunately; once we had established this was possible, we didn't then open this discussion up to all projects, to find out if it was acceptable to them, or if there was a better way. This was wrong.

However, the .NET Foundation is not just its projects, it is also its members. Again once we had established that cutting through strict corporate governance was in principle possible, we should have opened the discussion to wider debate with the members; and come to a concensus with them what the best approach was.

To this end, we will not be carrying forward with the current proposal. We will instead be opening discussions on the best way forward with this initiative in the .NET Foundation Project Support Action Group with members, please do sign up to the Action Group if you want to take part; the more people that get involved the better this can be.

When we have a consensus with members on how we will move forward; we will open up the discussion more widely on the public .NET Foundation forums, before firming up plans. Please note anyone can sign up to become a member and join the Project Support Action Group; if you would like to participate at the early stages.

Taking a holistic step back, and addressing some concerns that arose in the discussions:

The .NET Foundation is a independent non-profit foundation created to support .NET Open Source Software. The .NET Foundation Board has 7 members; 6 of whom were elected by .NET Foundation members and only has 1 member who works at Microsoft. The .NET Foundation Board are unpaid volunteers who are representing and have the best interests of the wider .NET ecosystem at heart and not working to the agenda of any particular company. As the board are not full time employees; we may request assistance from .NET Foundation members who can also volunteer their time to pursue initiatives. This may include Microsoft employees along with the general membership if they are also .NET Foundation members. In these cases they will be assisting as independent Foundation members and not as employees or representatives of Microsoft. If Microsoft employees take part in .NET Foundation activities this does not mean there is a conspiracy; it is because they love .NET and want it to succeed. The .NET ecosystem is bigger than Microsoft; one of our goals is for the community and companies to recognise this. The .NET Foundation is not seeking to undermine projects existing business practices; but to enable them to reach a wider audience. The .NET Core code base is copyright the .NET Foundation not Microsoft; it is innoculated against a "Java-style" event. While the code base is owned by the .NET Foundation; like any .NET Foundation project, the leadership of .NET Core does remain with the maintainers who in this case are Microsoft. As an independent foundation the .NET Foundation is a neutral party whose goal is the support of open source projects. As the home of many .NET projects the .NET Foundation is in a unique position to gather and share best practices and provide assisance to projects who wish to adopt them. The .NET Foundation would like to help projects target new clients and drive down the barriers that prevent their adoption.

Please keep giving feedback, we are listening. We will do better and the .NET Foundation itself will evolve and mature as part of this process.

If you are a .NET Foundation member you can sign up to join this and other action groups at the .NET Foundation Teams on GitHub. If you are not a .NET Foundation member and would like to join; apply for membership at the .NET Foundation Members page.