We're nearly five years into .NET Core as an open source project. As a .NET team member and Microsoft rep, I want to share a big thanks to everyone in the community that has taken the time and interest to participate in the project. I would like to start a conversation about community credit and attribution. Right now, we don’t have a consistent model in place that everyone can point to for giving credit for community contributions. That doesn't seem right, and I propose we fix it. What do you think?
The thesis of this document is that credit will be given more (both quantity and frequency) if everyone is empowered to give it, and that enabling more people to participate in credit giving will increase not diminish its meaningfulness.
Dictionary: Public acknowledgment or praise, typically that given or received when a person's responsibility for an action or idea becomes or is made apparent
Let's start with why credit is an important topic.
On the one hand, it's not necessary to give credit. Let's take one of the most well known contributors, Ben Adams. Anyone can query for Ben's commits. It's all open, right? And, if you look at some of his merged PRs, you'll see people saying thank you or approving Ben's work without any fanfare (an implicit validation of high-quality work). Sure, sure. I think we all know that this isn't credit, but basic personal interaction.
Side-bar: Are we doing a good enough job on personal interaction, or are .NET team members too terse and business-like? Do you see and recieve enough appreciation in PRs and issues in the dotnet org? Tell us.
Back to the main topic. Credit is something significantly beyond saying "thank you." Credit is given when a contribution is elevated so that everyone can see it. It's the higher level of visibility that's important. Here's an example from the .NET 5.0 Preview 2 post where one of Ben's contributions is given a high level of visibility. FYI: This example of credit is only given to community members.
There are similar examples in the Preview 3, Preview 4 and Preview 5 posts. Visual Studio Code gives credit with their Thank You section in their release notes. The Xamarin team has a similar model in their release notes.
Other projects focus on contributors of the month, like Galaxy Project and Netdata. Note: These examples were found through searches. I have no idea what these projects do or what their history is.
People appreciate and are motivated by credit for their contributions, ideas, and hard work. We need to find more and better ways to give people the credit they deserve and need.
We can develop and adopt a better and multi-faceted model. Here are some thoughts on what that might look like:
In a lot of ways, credit is just another project, that requires up-front thought, broad agreement on the value, and features that need to be developed. While the goal of credit is admirable, we need to consider the regular care and feeding of a project focused on credit in order to satisfy the stated need. I propose we start with a good MVP (minimum viable product) in the dotnet/runtime repo, and watch how it is received. We can then extend or adjust (more repos, more ways of giving credit) from there.
The following is a proposal. It is a layered model that is intended to give 100% of contributors credit, enable both the community and Microsoft to play key roles, and start us down the path of more innovative models for credit giving.
Is this a good MVP? What else should we do or consider?
The credit topic is focused on raising people and their contributions up. This is an objectively noble goal, however, it's only truly noble if we also use it as an opportunity for change. It is widely known that women, people of color, LBTGQ+ folks, people with disabilities (visible and invisible), and other groups, are under-represented in tech. We need to find ways to increase, motivate and celebrate contributions from people under-represented in tech. Equally important, we should also motivate and celebrate people who step up, as allies, to mentor underrepresented people to participate in tech. Please help us explore other ways to help connect people with barriers to contribution with help.
Is it necessary to bring D&I into a topic as simple and straightforward as credit? Yes. This is a perfect opportunity for raising people up that have well-established barriers to participation. Putting aside the moral reasons to do this, these are large groups of people that do not have the same ability to participate (as established groups that participate), and may be forward-looking sources of great contributors.
This .NET project started with Microsoft, but lives with the community. We need a set of community editors and curators to step forward to make much of this credit proposal real, and for the community to organize in some way to accept them as good stewards of community-generated credit giving.
A better credit system is an overdue addition for ensuring that everyone in the community feels that their participation is appreciated and acknowledged. I've offered some pretty obvious changes (like re-starting publishing contributor lists) and some more novel ones (like the "community contributions" epic ). We can simply start with those if you want. We would like to start a dialog. Please share your thoughts.
Thanks for all the support for this idea. I'm going to take this response as "we like this." Thanks!
I've now got to make good on this proposal. Please contact me if you want to get involved, either here or my twitter DMs are open. The intent was that the community would be quite significantly involved in this project. I'll be looking for some folks to work with.
Hi Rich
A little late on commenting, but my main thought on this is whether it is possible to adjust the proposal so that “Microsoft is considered part of the community”. That is, a rule is established where all contributors (regardless of company) are given credit according to the same set of overall guiding principles as other community members.
Of course Microsoft people are paid to contribute and that is relevant. But that’s no different to many other companies – indeed we want more and more paid commercial contributors right? And once we establish a principle for commercial contributors that that can be applied to other fully signed-up commercial contributors too, e.g. Samsung, Intel, Google, whoever (and smaller commercial contributors as well)
So I’m thinking a listing like “Rich Lander (Microsoft sponsored), Don Syme (Microsoft sponsored), Joe Blogs (Samsung sponsored), Jane Bloch (Cool Startup sponsored)”. That is, each time a contributor is listed they have the option of listing a sponsoring company. And for Microsoft contributors this would be automatic.
A guiding principle for me is that “Microsoft is part of the community” not “separate to the community”. That is, there should be no specific different treatment for "The .NET Team" or "Microsoft" in the rules - Microsoft contributors are just part of the community like everyone else (of course some have very special roles and responsibilities as designers, package-deliverers, QA, engineers etc., but all these contributions can be seen as part of the the community). I’m trying to see if that can be made to fit with your proposal.
Best
Don
I agree with that as a starting premise. And in terms of auto-generated contributor lists, that's aligned with what I had in mind.
As the team blogger (for our release posts), I have a unique view that is significantly influencing this proposal. With each release, I find that I'm almost exclusively writing about features that the Microsoft team built. This will not be surprising to anyone. We have a large team of very talented folks and a set of organizing principles that enable us to produce a large number of high-value improvements to .NET each release. When we're firing on all cylinders, these features group into topical themes, like improved P95 latency or more efficient container support. You will have noticed that my blog posts are quite long, just talking about these Microsoft-funded features and themes, and I don't want to make them much longer.
I include community-provided features in those posts, but they are the exception to the rule. This isn't by intention, but they largely get drowned out by the mass of the Microsoft-provided improvements. Also, the Microsoft team does a good job of making me aware of what they've built. I'm also able to ask them questions in order to accurately document their features in the blog. A big part of this proposal is enabling the community to provide me with a curated view of their effort so that I can include more of their content in the release blogs and other places, and in turn offer them the credit they deserve. I don't have a good mechanism for that today. I would very much like to have that.
I grasp and appreciate what you are trying to do with the "Microsoft is part of the community" message. I like it, but I'm also not going to pretend it is true in cases where it isn't. I'm painfully aware that I personally control some of the most high-value real estate that is dedicated to features and credit giving: 5.0 runtime epics and release posts. You might say "Rich, how about you focus on fixing that if it causes you so much distress." And then we circle back to this proposal. It is my solution to that problem.
If I understand you correctly @richlander giving particular visibility to community contributions in the near term could help broaden and strengthen our contributor base such that we can evolve towards the place @dsyme describes.
I don't see what I'm advocating for and @dsyme is advocating for as being a linear progression between two points. I think we're talking about two different topics. They are both trying to affect change, but have different, complementary, goals.
giving particular visibility to community contributions in the near term could help broaden and strengthen our contributor base
"strengthen our contributor base" is one goal, but as a singular goal would be overly utilitarian and self-serving. Multiple people told me privately that they rely on credit as part of getting jobs or getting a first interview / client meeting. The D&I section refers to the community's ability to help others that have historical barriers to entry. Stepping back, historically, if you wanted to bet your career on being a public expert on Microsoft tech, you would typically choose to be a writer (books or media) or an MVP (supporting your consulting jobs). A credit program may be a better option for some folks. It's not nearly as formal and is accretive to the individual receiving credit (the other options are high step-function). What do I mean by accretive? It's the same model as "gig economy". You invest a little and you get a little. You invest a bunch and you get more.
There is also the question of credit and visibility for commercial companies contributing .NET.
For example, imagine a finance company wants to invest in a .NET toolchain for their modelling. They are deciding whether to do this as closed source or open source. They might choose to do it as open source if this gives them an advantage in hiring, but as part of that tradeoff they need to be seen as leaders. As part of this, they may openly invest in .NET Interactive. But they will want their company to be seen as major contributors and even leaders in the space. (This is not complete theory: Bayard Rock is an example of a finance company that invested in iFSharp, the predecessory to .NET Interactive Jupyter notebooks - they absolutely deserve ongoing credit for this)
There are many such examples in Java (with a lot of variation). There are also many examples in .NET where non-core toolchains (e.g. cloud or finance toolchains) involve contributing to core technologies too.
One of the hallmarks of a successful ecosystem is credit can flow to new contributors (whether individuals or companies).
Note that this may include companies that may be competitors to the company doing packaging and announcements (here Microsoft). In a properly functioning open technology these other companies deserve equal and fair treatment, e.g. in the announcement summaries. For this reason it is important that the announcements come from a suitably neutral point of view (even if one commercial contributor is trusted with packaging and making announcements) and, if they include non-neutral things like product tying (e.g. to Azure) then the vested interest is noted.
Love this idea @dsyme. This is great. The biggest companies we've worked with tend to want to work towards their goals more quietly, but I suspect most would like an opportunity for credit.
This is why I thought that strong community participation in credit giving is critical. All companies will act capriciously at some point.
@richlander Yes, I think it's small companies (built on open source) or large companies (venturing into open source tooling work for the first time) who particularly want credit of the style you're mentioning. Those can be crucial for growing a rich, innovative and dynamic ecosystem.
Also to add that the more organic we can make parts of the .net community conference scene, the more the community is empowered to find its own credit mechanisms. One of the hottest items in the F# community is an F# Community Hero award, given each year at OpenFSharp, established by the community for the community, entirely organic.
For what it's worth, here is a technical issue where the nature of Microsoft's role in .NET leads to technical distortions in otherwise neutral .NET tooling (this time the question of naming of DLLs and namespaces)
cc @leecow as this came up today.
Most helpful comment
There is also the question of credit and visibility for commercial companies contributing .NET.
For example, imagine a finance company wants to invest in a .NET toolchain for their modelling. They are deciding whether to do this as closed source or open source. They might choose to do it as open source if this gives them an advantage in hiring, but as part of that tradeoff they need to be seen as leaders. As part of this, they may openly invest in .NET Interactive. But they will want their company to be seen as major contributors and even leaders in the space. (This is not complete theory: Bayard Rock is an example of a finance company that invested in iFSharp, the predecessory to .NET Interactive Jupyter notebooks - they absolutely deserve ongoing credit for this)
There are many such examples in Java (with a lot of variation). There are also many examples in .NET where non-core toolchains (e.g. cloud or finance toolchains) involve contributing to core technologies too.
One of the hallmarks of a successful ecosystem is credit can flow to new contributors (whether individuals or companies).
Note that this may include companies that may be competitors to the company doing packaging and announcements (here Microsoft). In a properly functioning open technology these other companies deserve equal and fair treatment, e.g. in the announcement summaries. For this reason it is important that the announcements come from a suitably neutral point of view (even if one commercial contributor is trusted with packaging and making announcements) and, if they include non-neutral things like product tying (e.g. to Azure) then the vested interest is noted.