Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improving credit for community contributions #38349

Open
Tracked by #5731
richlander opened this issue Jun 24, 2020 · 13 comments
Open
Tracked by #5731

Improving credit for community contributions #38349

richlander opened this issue Jun 24, 2020 · 13 comments
Assignees
Labels
area-Meta Priority:1 Work that is critical for the release, but we could probably ship without User Story A single user-facing feature. Can be grouped under an epic.
Milestone

Comments

@richlander
Copy link
Member

Improving credit for community contributions

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.

What is credit?

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.

Screen Shot 2020-06-06 at 9 54 59 PM

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.

Developing a better model for credit

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:

  • Clearly defined and regularly applied.
  • Managed as a joint project between the .NET Team and the community.
  • Broad definition of contributions (PRs and issues, code and docs, blog posts and videos, ...)

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.

  • Publish contributor lists for each release (for the whole product, not just the runtime repo)
    • We did this up until .NET Core 2.1. Producing this list was unintentionally dropped as a release activity.
    • Many projects product contributor lists in various forms. Mozilla's evergreen list of contributors is a good example.
    • Question: Do you like this format, or should we adopt a new one? Should it include GitHub avatars? Is it important to split contributors by repo? Should Microsoft and community contributions be mixed or separated (FYI: they have been mixed to date, and it is a technically simpler approach)? Should we look at an existing tool/model like All Contributors?
  • Create a community-maintained contribution epic linked to from the release epic.
    • The epic would be called "Community contributions".
    • The comunity would decide the bar for adding PRs/issues to its epic, and also the categorization within the epic.
    • GitHub permissions are a challenge, so the community would need to pick an editor and then have that person create and maintain the issue.
  • Consider creating monthly issues that give credit more frequently for contributions (this would be a closer analogue to the VS Code "thanks" approach, which is monthly)
    • These contributor lists need to be significantly curated or adopt some other unique approach in order to provide value beyond the release-specific contributor lists.
    • There are a many different (non-mututally-exclusive) approaches we could adopt/highlight: largest and most valuable contributions, first time contributors, multi-month contributors (>6 months, >12 months, ...), contribution with most reactions (example), most interesting closed-not-merged contribution (example), stale/closed community issue/PR that merits reconsideration ...
    • This idea would require an ongoing and significant time investment. It would need a lot of community engagement (if not managed exclusively by the community) to keep alive.
    • (re)Tweet these monthly issues from @dotnet twitter account when they are published.
  • Continue to use the same approach to offering credit in the Microsoft blog posts for previews and releases.
    • Link to the "community contributions" epic and to monthly contributions issues.
    • [For the .NET blog writer] Use those contribution issues for inspiration, to expand the offering of credit in the blog posts.
  • Consider an end-of-release blog post dedicated to community contributions
    • This post might be written by the same people managing the community-contribution issues described earlier.
  • Ensure that Microsoft PRs that borrow from the community give credit

Is this a good MVP? What else should we do or consider?

Diversity and inclusion (D&I)

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.

Next Steps

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.

@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added area-Meta untriaged New issue has not been triaged by the area owner labels Jun 24, 2020
@richlander
Copy link
Member Author

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.

@dsyme
Copy link

dsyme commented Jul 6, 2020

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

@richlander
Copy link
Member Author

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.

@danmoseley
Copy link
Member

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.

@richlander
Copy link
Member Author

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.

@dsyme
Copy link

dsyme commented Jul 6, 2020

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.

@richlander
Copy link
Member Author

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.

@dsyme
Copy link

dsyme commented Jul 7, 2020

@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.

@joperezr joperezr added Epic Groups multiple user stories. Can be grouped under a theme. and removed untriaged New issue has not been triaged by the area owner labels Jul 7, 2020
@joperezr joperezr added this to the Future milestone Jul 7, 2020
@dsyme
Copy link

dsyme commented Jul 14, 2020

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)

dotnet/interactive#643

@danmoseley
Copy link
Member

cc @leecow as this came up today.

@danmoseley danmoseley self-assigned this Nov 24, 2020
@terrajobst terrajobst added User Story A single user-facing feature. Can be grouped under an epic. and removed Epic Groups multiple user stories. Can be grouped under a theme. labels Dec 10, 2020
@richlander richlander added the Priority:1 Work that is critical for the release, but we could probably ship without label Jan 21, 2021
@spboyer
Copy link

spboyer commented Feb 9, 2021

.NET Thanks was recently integrated into the .NET Website to support this item.

@richlander
Copy link
Member Author

Thanks for your efforts on that @spboyer! Just so folks know, the way versions are displayed on .NET Thanks isn't the final plan, and has been confusing to folks (someone just asked me about it this morning). The goal is that all updates (previews, RCs, patches) all show up under a single major version item, like 5.0 or 6.0. Ideally, 6.0 would already be listed since we know master branch is tracking that release. I want people to understand the intention.

@danmoseley
Copy link
Member

+1 for @richlander comment -- what I think we are hoping for is a single page for ".NET 5 - anything" and another for ".NET 6 - anything" which currently is master. thanks for working on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Meta Priority:1 Work that is critical for the release, but we could probably ship without User Story A single user-facing feature. Can be grouped under an epic.
Projects
No open projects
Development

No branches or pull requests

7 participants