nunit / governance

This repository holds documentation about how the NUnit Project is governed
Other
7 stars 4 forks source link

On-Board project to the .NET Foundation #27

Closed rprouse closed 3 years ago

rprouse commented 7 years ago

We're getting ready to bring the project into the .NET Foundation, but before we do we need to do the following:

Getting into the .NET Foundation

Once accepted into the .NET Foundation

rprouse commented 7 years ago

CC @jongalloway

CharliePoole commented 7 years ago

A few items I think should be added:

CharliePoole commented 7 years ago

@rprouse You struck some stuff out of the task list. Can you explain the intent?

rprouse commented 7 years ago

You struck some stuff out of the task list. Can you explain the intent?

@CharliePoole the two items that I struck off the list are only applicable if we turn the copyright over to the .NET Foundation. We will not be changing the copyrights on our software or on the website.

Decide which software is to be placed under the foundation, and decide on a schedule.

The list was taken from the Foundation's checklist. We can add steps to it if required, but would it not be easier to treat all projects the same way? We decided on license vs assignment for the main projects, is there any desire to treat some of the other projects differently? Could we also not just decide up front which projects will not be licensed and do everything in one go? That would cut out your last three steps and leave only the decisions on which projects to not license.

We have 33 repositories. @CharliePoole has already moved the repositories that he does not want to turn over. For the remaining, I don't see any reason not to license the majority, or even all if the authors of the few smaller projects are included in the assignment agreement.

Include

Include if primary contributor agrees

rprouse commented 7 years ago

My previous post was getting long, so I am separating out the calls to action πŸ˜„

  1. Does anyone on the @nunit/core-team have any objections to licensing the included projects to the .NET Foundation? If so, which projects and why?
  2. @CharliePoole, @jcansdale, @JasonBock and @NikolayPianikov, would you also like to include your projects in the license to the .NET Foundation. Licenses will not change, we are just licensing them to the Foundation. If so, we will include you as signatories. @NikolayPianikov since you wrote your code on behalf of JetBrains, they will also likely have to sign. If anyone does not want to include their projects, we will ensure that an addendum is included in the agreement.

So that everyone is aware, I have asked that all of the @nunit/core-team be included as signatories in the agreement. We will add others as appropriate.

CharliePoole commented 7 years ago

@rprouse

OmicronPersei commented 7 years ago

Probably a stupid question but... what does this mean? Googled ".NET Foundation" but unsure how we relate?

CharliePoole commented 7 years ago

@rprouse I don't know when we decided that none of the software copyrights would be assigned to the foundation. I certainly raised an objection to it in principle for some software for which I hold copyright, but I didn't think it was resolved. I can go along with a decision that none of the copyrights will change if that's what you prefer, but I could also wait to see the actual legal agreement. I think the absence of an actual agreement makes it hard to decide anything other than "in principle."

CharliePoole commented 7 years ago

@rprouse

"@Charlie Poole has already moved the repositories that he does not want to turn over."

I guess I didn't succeed in explaining myself. My moving of two projects out of the nunit organization was only peripherally related to the .NET foundation. The reasons were in fact different for each one. We can go into them again if anyone has concerns.

In any case, I continue to have opinions about all our projects, else I would have removed myself as well.

CharliePoole commented 7 years ago

@rprouse Continuing to try to split out individual issues...

I'm not clear on why some projects are listed as "Include" and others as "Include if primary contributor agrees." Wouldn't all projects be in the second group initially?

I do understand your desire to shorten the discussion but I'm doubtful that trying to discuss everything at once will do the job.

It seems to me that there are a number of factors that would lead us to include or exclude a project. Off the top of my head, I'd say we should include those projects that we, as a group, intend to move forward with fairly actively and leave out the rest. I can't see the foundation wanting those others anyway.

jongalloway commented 7 years ago

@CharliePoole I added both standard license agreements (assignment and contribution) to our repo here: https://github.com/dotnet/home/tree/master/guidance

jongalloway commented 7 years ago

@OmicronPersei The overall mission of the .NET Foundation is spelled out here: https://dotnetfoundation.org/about

Let me know if you'd prefer audio or video - I've done some recent conference talks and podcasts about what the .NET Foundation does. Big picture is that it exists to support open source .NET. That includes larger corporate sponsored projects (like CoreCLR and CoreFX) and community run projects (like NancyFx, Cake, xUnit, AutoMapper).

ChrisMaddock commented 7 years ago

@rprouse I'd be happy to include all the projects you listed. I don't see why whether a project is 'currently active' or not should be a concern.

NikolayPianikov commented 7 years ago

@rprouse I have no objection about teamcity-event-listener and .NET Foundation

CharliePoole commented 7 years ago

@ChrisMaddock Take any project that we categorize as archived... e.g. .NET CF build of the framework.

In our governance document, we say about such projects:

"These are projects we no longer maintain, but which have the last version of the source code available in case someone needs to take them up again"

WRT the .NET Foundation, it seems to me...

  1. There is no advantage to adding them
  2. They don't meet the definition of projects that the foundation would actually want
  3. Someone who wishes to take them up in the future might not want them to be part of the foundation
  4. In order to include them, we have to actually maintain them, changing the code to indicate they are now supported by the .NET foundation, BUT
  5. There is no support we actually want for them, since we are not maintaining them.

Those are my reasons for excluding archived projects.

These projects are not just inactive by happenstance. They are projects we have decided to stop working on and make available to anyone who wants to maintain them. Such a person may wish to do so as part of the NUnit organization or may wish to simply maintain them independently.

I simply don't think we should be doing this in a blanket way. The foundation gives us a set of tasks to perform for each project. Our project list is not as large as our repository list, but it's still pretty large and I don't see a reason to go through those steps for any project without evaluating it individually.

CharliePoole commented 7 years ago

Our projects.md document lists five categories of projects:

I thought I'd try to see if it is possible to talk about this on-boarding in terms of the project categories.

Core Projects

There are five of these. Each has to be considered separately, but I think we have already done that. Most of our conversation so far has been about the core projects, so I'm pretty sure we want to bring them on board the .NET foundation.

Secondary Projects

These are supporting projects, of which we identified seven. Four extensions are included. These are projects we maintain and support, even though the release activity is less frequent, so I believe they belong with the foundation.

Pre-production Projects

These are projects that may prove themselves in the future and be accepted into the nunit organization, most likely as either secondary or contributed projects. We only have one such project right now. If it is accepted, it may be reasonable to add it under the .NET foundation. If not, it will either disappear or go back to the person who originated it in the first place. I don't think that it's worth bringing it on board the foundation at this time, while it is still experimental.

Contributed Projects

We have five of these and they are a pretty mixed bag. I think we should look at them one at a time.

One of them is the teamcity extension. We have already notified JetBrains that we will not support this as an NUnit project at all in the future, so it seems pretty silly for it to be brought on board the foundation under our name at this time. Jetbrains could easily join the foundation and add it themselves if they wished to do so.

The remaining four include a few that should probably be re-categorized as secondary projects and then brought to the foundation. It seems wrong to include a project where we say (as we do for these) that we don't support them as an organization and may not continue them in the future.

Archived Projects

I already discussed these elsewhere. They are projects that we state we no longer maintain but are simply keeping the source for historical purposes and so somebody else can take them on if they wish. I don't think they belong in the foundation.

CharliePoole commented 7 years ago

@rprouse Special consideration regarding NUnitV2...

I am not the "primary contributor" for that software. The copyright lists four of us and we are all primary contributors. As stated in a separate post, I don't think that merely archived software should be placed under the foundation anyway. But doing it for this software would face the added burden of securing agreement of at least all the copyright holders, to no particular benefit.

CharliePoole commented 7 years ago

@rprouse My understanding from earlier conversations is that the purpose of an addendum listing projects is to facilitate later on-boarding of new projects we create without redoing the agreement. I believe it's used for organizations that support more than one software project, like us.

@jongalloway Can you confirm or explain further?

rprouse commented 7 years ago

I don't know when we decided that none of the software copyrights would be assigned to the foundation.

I may have mistakenly mixed up the Assignment and Contribution agreements above. If I did, I meant the Contribution agreement which grants a license. I stated above "We decided on license vs assignment for the main projects" and "Does anyone on the @nunit/core-team have any objections to licensing the included projects" so I thought that was clear.

I am proposing that we contribute all projects in the same way to keep things simple. I asked above if anyone objected to that.

Special consideration regarding NUnitV2

That is why I left it and NUnitLite separate and up to you. We are no longer maintaining and we no longer have a full history of contributors.

CharliePoole commented 7 years ago

Yes, the earlier answer was clear. It came after my question. I agree that we decided for the main projects (called core in our docs) and also that we should do all projects the same way.

I'm just trying to be a stickler for correct process in what is likely to be our most important decision for quite a while as a governing body. We don't allow lazy consensus agreement on important governance matters per governance.md.

rprouse commented 7 years ago

@CharliePoole we are in agreement about core and secondary projects except maybe on the assign vs contribution question.

My feeling is that if we as a team join the foundation, then all projects that we work on should be under the foundation and covered by their CLA and code of conduct. To do otherwise would be confusing for everyone. Based on that, my starting position is that as many projects as possible should be contributed to the .NET Foundation, and those that we do not contribute should be moved outside the NUnit organization or locked for contribution. I don't think that NUnit teams should be working on or managing projects both inside and outside the .NET Foundation.

Based on that, I believe that archived projects should be included. If someone picks them up again, I would like to see that under the guidance of the NUnit Core Team and indirectly under the Foundation. People can always choose to fork them outside of our control. Of course if @jongalloway and the .NET Foundation feels otherwise, then we can revise that. If so, then I feel that those projects should be clearly marked as archived and we should not accept contributions.

For pre-production projects, it is just the analyzers. I think it should either come along with the rest of our projects, or be moved out to @JasonBock's personal account until it is ready.

As for contributed projects, I also feel that all except the TeamCity listener should be treated as secondary projects and be assigned to the Foundation. I concede that the TeamCity listener should be contributed separately by JetBrains if they choose to do so. Based on that, and my assertion that everything under https://github.com/nunit/ should be managed under the Foundation, we should probably transfer that project over to https://github.com/JetBrains.

I understand that NUnit 2 and NUnitLite are different as they are much older projects, but I feel they should remain in https://github.com/nunit/. If @CharliePoole does not feel that he has the right to contribute them, then I propose that we clearly state in the project's READMEs that they are not under the Foundation.

rprouse commented 7 years ago

Based on my above discussion, I am going to call for votes on a few things so that we can move on. @nunit/core-team please vote on each of my vote items using the Thumbs Up or Thumbs Down reactions to each comment. I don't think this is sensitive enough to call for a private vote. If anyone feels otherwise, please contact me via email.

First Vote

I propose that all projects that we contribute to the .NET Foundation be contributed using the NET Foundation-Contribution License Agreement which assigns a license to the Foundation instead of turning over the copyright.

πŸ‘ For Yes πŸ‘Ž For No

CharliePoole commented 7 years ago

@rprouse Point I was making with NUnitV2 is that I alone can't decide on copyright. If we are merely licensing, I can. I don't see putting this or any other project we are not maintaining under the foundation.

NUnitlite does not have the same issue with copyright but is also not maintained.

But you are including other non-maintained projects, which is the source of my confusion.

rprouse commented 7 years ago

Second Vote

I propose that we contribute all Core, Secondary, Contributed and Archived Projects except for,

Nobody else had voted yet, so minor amendment, If the .NET Foundation does not want us to contribute our Archived projects, we will produce that list and not include them. I believe we should ensure that all are marked as not in the .NET Foundation and as archived.

Second ammendment We try to strive toward consensus, so I amend that all archived projects are excluded including NUnit v2 and NUnitLite. Archived projects will be marked as such and state that they are not part of the foundation.

πŸ‘ For Yes πŸ‘Ž For No

rprouse commented 7 years ago

Third Vote

I propose that the following projects be moved to the organizations or accounts of their main contributors.

I would encourage but not require @jcansdale to contribute the nunit3-tdnet-adapter to the .NET Foundation along with our software.

Once nunit.analyzers is ready for release, we can bring it back into https://github.com/nunit and contribute it to the .NET Foundation.

Amended to remove the TDNet adapter from the list

πŸ‘ For Yes πŸ‘Ž For No

CharliePoole commented 7 years ago

I voted yes on the first vote because it makes sense.

I voted no on the second vote because of archived projects. I agree with everything else. I'll restate my problem with contributing them here:

  1. It pre-judges what we expect to happen if and when somebody decides to maintain them. Rob stated as much: "If someone picks them up again, I would like to see that under the guidance of the NUnit Core Team and indirectly under the Foundation. People can always choose to fork them outside of our control." With respect, Rob, you cannot know what you will like to see happen at some future point, nor can I, but I imagine that it will have something to do with who wants to pick them up. Forking is, as always an option. So if somebody forks and their project moves ahead, what will we do then? Just-in-time decision-making has been a part of good development practice for quite a while now. Let's follow it in our administrative decisions as well.

I agree that it should be absolutely clear which projects are not maintained and do not accept contributions. I thought that was already the case, but if it isn't we can fix it. I already proposed we set up a separate organization, also belonging to The NUnit Project, for archived projects and that was rejected. I'm re-suggesting that right now.

I'm also having trouble with the (apparent) view that it's a good thing for The NUnit Project to be as big and all-encompassing as possible. That's precisely the opposite of the attitude with which I started the process of unbundling projects. I do not think that's a Good Thing at all. Naturally, having set us on the path to a democratic process, I have to abide by the majority view, but it's disappointing and disturbing to see us acting as if we need to "control" the future of these pieces of software that we have already said we are not interested in maintaining.

I've already said that I may maintain some of the current un-maintained software in the future. However, as a copyright holder, I'm not limited in the same way that other people will be by this decision, if taken.

On the third vote I also voted no. I agree WRT the contributed analyzer. However, WRT Jamie, we accepted his adapter as a contributed project and, while we didn't promise to keep it forever, I think he should be consulted as to what he wants to happen first. WRT JetBrains, we indicated we would give them more time to adjust to the change. I can't find the reference, but IIRC it was until the next major release. We should keep our promises in both cases.

ChrisMaddock commented 7 years ago

@rprouse - would you consider another amendment to your Second Vote to exclude NUnit v2 and nunitlite? I took it as evident from the above discussion that we don't have the rights to licence these projects to the .NET Foundation without contacting the copyright holders, which sounds like more effort then it's worth for archived projects. The path of least resistance here would seem to be to keep them hosted on github.com/nunit, yet outside of the foundation. I don't have much urge to put any more effort into these that required, up until the point someone shows interest in maintaining them. On the remaining archived projects, I see no advantage to going out of our way to treat them specially, and agree bringing them into the .NET Foundation with everything else is sensible.

On your Third Vote, I agree in with your suggestion in general. TeamCity is the odd one out.

@NikolayPianikov has stated above he is happy for the addin to move to the .NET Foundation. That sounds like it may lead to involving JetBrains as part of the NUnit/.NET Foundation agreement however, which sounds like it may lead to additional complications. The TeamCity plugin is now entirely separate, and maintained solely by Nikolay - I do wonder if it would be an easier maintenance situation for everyone involved if that was transferred to JetBrains' own GitHub account, as you suggested. Nikolay - thoughts? I believe this also impacts Charlie - as I believe you still hold the copyright.

@CharliePoole - I don't see how moving the TeamCity plugin out of the organisation would affect any of our previous discussion about continuing to include the addin in our packages.

ChrisMaddock commented 7 years ago

(Rob - I've withheld my latter two votes pending the above. On point two, I think that may just be an oversight. Point 3 I'm generally in favour, however think the TeamCity situation should hear from the relevant parties. πŸ™‚ Sorry to slow things down!)

CharliePoole commented 7 years ago

@rprouse I think our messages are overrunning one another. I believe I have already answered WRT NUnitV2 and NUnitLite. If it got lost in the onslaught of messages, let me know.

To clarify an earlier comment, I objected to your use of lazy consensus - not to consensus itself. I think it's a pity that we are resolving this by majority vote.

@ChrisMaddock Your (and others) slowing things down is part of the design of the Core Team. I'm even trying to slow down some decisions I don't agree with. It's our job and, in this case, there does not seem to be any special urgency for a decision while it's very important that we make the right decision.

To be strictly correct, NUnitV2 and NUnitLite are two entirely different situations and shouldn't be lumped together. NUnitLite has nothing to do with the old NUnit project that produced NUnitV2. It's a completely separate bit of software that I developed. I then contributed the code to NUnitV2, which is how we have fluent assertions.

To clarify some terms (no offense to those who know them already) copyright basically means ownership of the intellectual property. Assigning copyright means giving that property to somebody else. The core team can't do that, since the core team doesn't hold copyright. It looks like we are ruling out assignment, but if we did it, then the copyright holders would have to make the assignment. The .NET foundation, to be safe, would also want anyone who has ever contributed to assign them any rights that they might have. NUnitV2 is unique in that the copyright holders are not all members of this project. They could be contacted, of course, but it would be a bit of a hassle. I'm not a lawyer so I don't know whether a single copyright holder can assign the copyright in the absence of the other holders. The foundation could probably tell us the answer if we cared.

However, it looks like we don't care. Licensing the software is what we already happens every time somebody downloads it. The foundation makes it a special agreement because some software that is contributed is not Open Source to start out with and they have to allow for that. As a large, corporate organization, they are into playing it safe and covering all bases. For example, in the license agreement, we license any patents we may hold to them, although we have none. Bottom line, I think we do have the legal ability to contribute (via license) NUnitV2 to the foundation. I just think it isn't a good idea and would also be rude to do without asking all the copyright holders.

IANAL and this is not legal advice. πŸ˜„

CharliePoole commented 7 years ago

@rprouse In addition to NUnitV2 and NUnitLite 1.0, our archived projects include:

As I read the foundation documentation, contributing them would mean changing all headers in these unmaintained files. Is that your understanding as well? If so, is this an effort it's worth putting in?

Of the above four, I have skin in the first two. I'm not particularly concerned with the last two, which I viewed as secondary projects under your authorship until we decided to call them archived.

CharliePoole commented 7 years ago

@rprouse Would you accept an amendment to your second vote that removes archived projects for subsequent discussion and decision? I could vote yes to such an amended proposal.

CharliePoole commented 7 years ago

@ChrisMaddock On the third vote, you mention JetBrains being consulted. What about Jamie's adapter?

rprouse commented 7 years ago

To try to reach consensus, I have amended the second vote to exclude all archived projects including NUnit 2 and NUnitLite. Please revote if you desire.

I have also amended vote 3 to allow TDNet to remain in the organization. I hope that @jcansdale will join us in licensing to the foundation, but that is his decision. If he does not, then I only ask that we indicate as such in the readme.

I however don't think that the repository for the teamcity-event-listener being maintained in our organization or JetBrain's makes much difference. As @ChrisMaddock says, we will continue to include it as a NuGet dependency until the next major release, but I think moving it to JetBrains control is a strong signal to users as to its future. I am happy to give them time to make the move if @NikolayPianikov needs it. I don't think we need to act immediately.

I objected to your use of lazy consensus - not to consensus itself. I think it's a pity that we are resolving this by majority vote.

I agree, but at least the vote forces people to discuss their opinions on each point and hopefully through that we can come to active consensus. At this point, there are also so many comments that I think we need to break everything down into separate decisions. I don't want to create issues for each unless we have to, although we could table vote 3 for now and move it out.

I would also encourage other team members to raise any other concerns that they feel are not addressed by my three votes. I think the votes capture the essence of the decisions we need to make as a team, but I may have missed something.

rprouse commented 7 years ago

@rprouse Would you accept an amendment to your second vote that removes archived projects for subsequent discussion and decision? I could vote yes to such an amended proposal.

Done

CharliePoole commented 7 years ago

@rprouse Changed my vote. Note to anyone doing this in the future: it took a few refreshes for my original vote to disappear

I understand why you set it up as a vote. Sometimes you need to get people's attention and it seems to have worked. Several people are holding back, I hope they will at least comment about their views even if they can't decide on a vote yet. If we don't hear from you, we can't take your view into account.

ChrisMaddock commented 7 years ago

@ChrisMaddock On the third vote, you mention JetBrains being consulted. What about Jamie's adapter?

Only because @rprouse had already written into his proposal about Jamie being consulted. πŸ™‚ Also, thanks for your clarification on the older projects.

Revoted for the second - I'll hold off on the third till we've heard from Nikolay. My personal thinking is the project would be better with JetBrains - but I have little to do with it, and happy to be persuaded otherwise.

FWIW, I think it helps to have a concrete proposal to disagree with.

jcansdale commented 7 years ago

@rprouse

I would encourage but not require @jcansdale to contribute the nunit3-tdnet-adapter to the .NET Foundation along with our software.

I would be happy to. πŸ‘

This is a fast moving thread, you lot have been busy!

jnm2 commented 7 years ago

@OmicronPersei See also the recent conversation leading up to this: https://github.com/nunit/governance/issues/13 Everything prior had been over email which we're moving away from for things like this (thus the governance repo).

jnm2 commented 7 years ago

Before I vote on the first question, I'm unsure what it is we're agreeing to here (from https://github.com/dotnet/home/blob/master/guidance/NET%20Foundation-Contribution%20License%20Agreement%20(form%20rev%201.1).docx):

Contributor hereby disclaims the exclusive right to use the trademark(s) and/or logo(s) associated with the assigned Projects and detailed on Exhibit A attached hereto (β€œDisclaimed Mark(s)”). Contributor is not aware of any claims of ownership or other rights by third parties in the Disclaimed Marks. Contributor acknowledges that .NET Foundation and Project licensees may rely on this disclaimer to make use of the Disclaimed Mark(s).

Given that we have a strong preference for retaining control of the copyright, how much control do we retain over the trademark? I'd prefer if the disclaimer was less open-ended and only applicable specifically to the .NET Foundation. That seems more similar to how we are assigning the copyright to specifically the .NET Foundation only. Trademark is a bit different than copyright, but do we want to entirely disclaim the exclusive right to use the trademark and logo, considering parties that are neither us nor the .NET Foundation?

I'm happy with the "Contributor Marks License" section, though I don't see that it necessarily constrains the "Contributor Marks Disclaimer" in any way which is the section I'm concerned about.

CharliePoole commented 7 years ago

@jnm2 The two sections are mutually exclusive. In signing, you select one check box or the other. If you check "Disclaimer" then you are giving up right to any trademarks. If you check "License" you are retaining the trademarks and licensing them to the foundation for use. I assume we will license.

Note that we are voting right now on the general approach we will take. My assumption is we will review each document as we go along. Obviously, what counts is the document we sign, not what's in GitHub.

jnm2 commented 7 years ago

Several people are holding back, I hope they will at least comment about their views even if they can't decide on a vote yet. If we don't hear from you, we can't take your view into account.

Just so everyone knows, if I haven't replied, it's not because I'm waiting to see something first. It's because I'm swamped and haven't looked at it yet. I try not to let more than a couple days go by but if I'm holding you up– or who knows, if all my GitHub notifications get lost which FastHub did to me recently– email will get my attention in a more timely fashion.

jnm2 commented 7 years ago

Re: my no vote on the third question: I'm always in favor of making the smallest change possible to get where we want to be. I don't see any reason we couldn't keep all projects where they are and simply mark the ones that aren't added to the foundation like we're discussing for the archived projects.

rprouse commented 7 years ago

We seem to have consensus on votes 1 and 2 minus @OsirisTerje who hasn't voted yet. Let's table vote 3 and just mark the projects as such as we will have to do for the archived projects too.

Next steps are in the .NET Foundation's hands. Jon will submit to the advisory council and then to the board. If/when NUnit is accepted, we will review the document that we are asked to sign. I have given Jon the @nunit/core-team's email addresses as the list of people that we want to sign. We will add @jcansdale for his project. I will not include the TeamCity adapter because I think @CharliePoole's point that it should be done by JetBrain's themselves is correct.

OsirisTerje commented 7 years ago

Sorry guys, I have been on the road for a few days, back home now, so I have voted affirmative on 1 and 2. I am struggling with the Vote 3, but I see more than I do.