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

Add initial TLP application for express #39

Merged
merged 1 commit into from
Feb 10, 2016
Merged

Conversation

jasnell
Copy link
Member

@jasnell jasnell commented Jan 28, 2016

The express project is applying to become an incubating top level project.
/cc @nodejs/tsc @Fishrock123 @nodejs/collaborators

### Organizational Tools

* Current source code management: [GitHub](https://github.com/strongloop/express)
* Issue tracking: [GitHub](https://github.com/stringloop/express/issues)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo stringloop

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sigh... lol... fixed

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"stringloop" sounds like something that could be an example reminder app made with Express.

### Important Documents

* Code of Conduct: the existing Node.js Code of Conduct would apply.
* DCO: the existing Node.js DCO would apply.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does DCO mean in this instance?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense. Should that be explicitly linked in the document?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'll add it
... done!

@jmar777
Copy link

jmar777 commented Jan 29, 2016

Never heard of it.

@dougwilson
Copy link
Member

Since the expressjs.com website is the only source of documentation, it should be included in the foundation with this project. For example, how can a working group effectively release new features and changes without being over the only documentation for Express?

* Issue tracking: [GitHub](https://github.com/strongloop/express/issues)
* Releases: [GitHub](https://github.com/strongloop/express/releases) and [npm](https://npmjs.org/package/express)

### Intellectual Property and Other Assets
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the plan to complete this section?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have to identify what assets (if any) would need to transfer and what process is necessary. I'll be filling these details in but I don't have all the details yet.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The expressjs.com domain name seems like a very critical asset to transfer, as it points to the only source of documentation, and is the main result in Google.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I agree that the domain is very important here.

Express is extremely broad, and there are likely at least thousands of documents that link to that website.

It has been a large part of the express community for some time and represents the almost the entirety of express's documentation efforts.

(Edit: Beyond that, express has no IP I know of aside from the license, which is already MIT.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I suppose "other assets" also includes the #expressjs IRC channel of freenode and the expressjs mailing list of Google Groups, both of which have various activity from new-to-Node.js users. This is in addition to the web site, which is one of the first places new users go and should absolutely be held in the Node.js foundation trust. strongloop/expressjs.com is the backing repository, which should be included in the move as well.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't #express the "official" channel? I already hold founder rights there so I think that is covered.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I said, I don't have all of the details on everything that would need to transfer over yet so I'm waiting to fill those details in once I do. It won't be today tho.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I meant #express :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a trademark of any kind?

It's important to flush out in the application all the current assets, including any domain names, because it allows us to gauge how much legal work there might to get the assets transferred or licensed.

That said, projects enter the incubator before they have "passed IP" which means the IP is vetted and the legal work around assets is finished while incubating. One of the reasons we incubate projects is so that the foundation has plenty of time to do all that work and so that there is an open governance body to work with on it if there were any issues during the process.

@crandmck
Copy link

In my view, it would be fine to move (or copy) the API docs into the express repo while everything else is being figured out. N.B. they are in English only (except for community translation into Portuguese).

@hueniverse
Copy link

I fully support this move. It is the right thing for the express community, it's users, and maintainers. Express is a key toolkit for building web applications with node. In fact, most people think of it as part of the core ecosystem.

I am not worried about any perceptions from the foundation hosting the project. The node framework space is pretty big and mature. Even if people take this as some kind of endorsement by the foundation, it is not really going to make anyone choose express over any other option for that alone. For the most part, most people have no clue who leads or maintains their modules.

One thing to note when staffing this project is that Express has played a larger role than just a framework in the node community. It has a semi-monopoly on on-boarding new node users. New developers use Express far more than any other framework (and more than experienced node developers). It is crucial to make sure these newcomers continue to have a place to go to.

@dougwilson
Copy link
Member

@dougwilson
Copy link
Member

/cc @jasisk

@thefourtheye
Copy link
Contributor

Should we link to some page explaining what TC, TSC, WG and stuff like that are?

@jasnell
Copy link
Member Author

jasnell commented Jan 29, 2016

@thefourtheye ... yeah, likely a good idea. I could also update the doc to avoid the use of the acronyms


### Contribution and Governance Process

The contribution process would be the same lazy consensus model used by Node.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lazy consensus model used by Node.js core.

Is there a link to define this process?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A more accurate definition is "lazy consensus seeking model."

It basically works like this:

  • All contributions go through review and try to move towards the obvious consensus.
  • The default is for things to land given that nobody objects. There's no need for a vote or formal process around getting +1's for every change, you propose the change, make any changes you need to in the review process, and land the change if nobody is against it.
  • When consensus can't be reached easily it escalates to a more formal process for discussion (usually a weekly call). This is commonly less than 5% of all contributions, most just get reviewed and land.
  • If a consensus can't be reached then a vote is taken, majority wins. In reality, the fact that a vote could happen is enough incentive to work towards a consensus and for people to drop objections they have that don't have wider support. Node.js Core has never had to bring an issue to a formal vote but the fact that a vote is a possibility keeps anyone from holding up the process with their own objection without trying to widen their support to other contributors. In a "pure consensus" model that's a huge problem, everyone essentially has a veto and aren't incentivized to try and convince their peers, so we avoid that with a "consensus seeking" system.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a fair policy.

@rvagg
Copy link
Member

rvagg commented Jan 29, 2016

(posting in comments so it doesn't get lost inline after edits)

@dougwilson:

lazy consensus model used by Node.js core.

Is there a link to define this process?

https://github.com/nodejs/node/blob/master/GOVERNANCE.md

But I think we could reflect actual practice better. The most important part of this is that core is consensus seeking above all. There's almost never a need to call a formal vote and count for majority as:

  • most decisions are made in GitHub and are only escalated if consensus can't be found there and someone has a firm -1
  • we primarily work towards a consensus where possible, both as a collaborator group and on the CTC
  • there is a mutual respect for the various expertise and backgrounds within the group so deferring to more expert parties is very common
  • when a discussion is escalated to the CTC and the CTC can't reach an agreement in a meeting, the most common path is to take the discussion back to GitHub for further exploration and discussion

This can all make some decisions drawn out and often it doesn't look like a decision is even going to be taken. But this only happens in the case of contentious changes, and seeking to find compromise and middle-ground is generally the best way to deal with those anyway. Also, it's often the case that no action is actually the best course of action so this ends up the default where there is no clear agreement and nobody wants to push for a binding vote.

A lot of this process is shaped by the individuals involved but it's also something that we have built a culture around so onboarding, both as a collaborator and as CTC member is about coming in to that culture. The incubator process would primarily be focused on trying to transfer, or transplant some of that culture in a way that works best for the project.

@ChALkeR
Copy link
Member

ChALkeR commented Jan 29, 2016

Express has consistently been among the top packages installed via npm, with nearly 4.5 million downloads in just the past month.

Some stats, in downloads/month, top 150, from 2016-01-29. This is just informational:
https://gist.github.com/ChALkeR/5e8f91ecb34c208e84d6

Edit: moved to a gist.

@hueniverse
Copy link

@ChALkeR what's your point?

@ChALkeR
Copy link
Member

ChALkeR commented Jan 29, 2016

@hueniverse, I was not trying to express anything — as I said, this is just informational. Also note that that was total download count/month, including the chained deps (that's what gives us 4.5kk).

Another source of information (for explicit npm install {package}, but only for a single day) — https://docs.google.com/spreadsheets/d/120am_J_6g5WKI0ArzoaY3EsYiP_KL1LJrXpVVRoxknY/edit#gid=0

@hueniverse
Copy link

@ChALkeR how many downloads express has is completely irrelevant to this discussion.

@ChALkeR
Copy link
Member

ChALkeR commented Jan 29, 2016

@hueniverse https://github.com/nodejs/TSC/pull/39/files#diff-61e0777d20b3b0e1ac5c9032f8ba3d58R12

I cited that when I replied, and provided some stats for the reference in a comment. I do not think that it was useless or completely irrelevant.

@mcollina
Copy link
Member

I think moving express to the foundation is good for the node ecosystem. However, I am not sure this would solve its problem: lack of maintainers/contributors (no offense to the current team, they are awesome and delivered a great value). Developing and maintaining express is close to a full-time job for more than one people, and moving it to the foundation is not going to solve this. I would suggest that the express project is moved to its own org and adopt a node-like management before considering adopting it in the node foundation.

The other issue is related to its dependencies and it might create some weird situation: the node foundation maintain express, and XYZ maintains a module that is used by express. I would prefer that the foundation adopts Express and most of its deps (also connect?), to give the future express TC all the means to improve express.

Finally, I would really like express to be hosted under expressjs/express rather than nodejs/express, to keep it clear it is loosely related to core. Also, the expressjs org can be the umbrella of all the other dependencies. Plus, this org is already very crowded of repos, all tightly connected to core.

@saghul
Copy link
Member

saghul commented Jan 29, 2016

Finally, I would really like express to be hosted under expressjs/express rather than nodejs/express, to keep it clear it is loosely related to core. Also, the expressjs org can be the umbrella of all the other dependencies. Plus, this org is already very crowded of repos, all tightly connected to core.

FWIW, a TLP need not move to the nodejs org AFAIK. libuv also applied to be a TLP but it sits in its own organization.

@vkurchatkin
Copy link

FWIW, a TLP need not move to the nodejs org AFAIK. libuv also applied to be a TLP but it sits in its own organization.

+1. It would be better, if express was in expressjs org

@jasnell
Copy link
Member Author

jasnell commented Jan 29, 2016

While the projects under the expressjs github org and other repositories
are closely related to express, and even contain code that may have
originated in express, they are separate projects with their own
contributors and leadership. If those projects wished to join the Node
Foundation incubator alongside express, then I'd certainly be happy with
that but that's not something we (IBM) can commit them to. Likewise with
the expressjs github organization itself -- all of the owners of that
github organization would have to weigh in on whether they would be willing
to host the express repository under the Node Foundation's governance model
(none of the projects there currently operate under a foundation model so
it would be a significant change). That's not something we can commit them
to either.
On Jan 29, 2016 3:58 AM, "Vladimir Kurchatkin" notifications@github.com
wrote:

FWIW, a TLP need not move to the nodejs org AFAIK. libuv also applied to
be a TLP but it sits in its own organization.

+1. It would be better, if express was in expressjs org


Reply to this email directly or view it on GitHub
#39 (comment).

@mcollina
Copy link
Member

@jasnell fair point. I was pointing out the best outcome from my point of view. Sorry for moving the discussion from the important stuff, these are details (but highly welcomed to be discussed later).

Given that Express is not currently run on a model similar to core, how moving it into the Node Foundation umbrella can improve the current situation? Most of the changes can happen independently.
I'm really 👍 on incubating express, but I think the message should be crystal clear and "formal". I already see lot's of people asking me this question.

IMHO what is missing from the proposal is why the Node.js Foundation is a good fit for Express?

@jasnell
Copy link
Member Author

jasnell commented Jan 29, 2016

A key goal is to grow the base of contributors or at least make it easier
to become a Collaborator if someone wishes to do so by moving express to a
model that is closer to how core works.

The foundation is a good fit given that a) express is so important to the
node ecosystem as a whole, b) the foundation's key mission is to support
that ecosystem and c) the governance model that's in place here is strongly
biased towards motivating and making it possible for the community to
contribute There are definitely details to work out but overall it feels
like a good fit and simply the right thing to do.
On Jan 29, 2016 6:18 AM, "Matteo Collina" notifications@github.com wrote:

@jasnell https://github.com/jasnell fair point. I was pointing out the
best outcome from my point of view. Sorry for moving the discussion from
the important stuff, these are details (but highly welcomed to be discussed
later).

Given that Express is not currently run on a model similar to core, how
moving it into the Node Foundation umbrella can improve the current
situation? Most of the changes can happen independently.
I'm really [image: 👍] on incubating express, but I think the message
should be crystal clear and "formal". I already see lot's of people asking
me this question.

IMHO what is missing from the proposal is why the Node.js Foundation is a
good fit for Express?


Reply to this email directly or view it on GitHub
#39 (comment).

@mcollina
Copy link
Member

@jasnell 👍! IMHO you should add that into the proposal, so it's on record.

@jasnell
Copy link
Member Author

jasnell commented Jan 29, 2016

@mcollina .. yep, the likely next step on this is to get the "Express WG" proposal to be chartered by the TSC. It would essentially be just like any of the WG's here. I can write up an initial draft version of that using the nodejs/TSC templates. Assuming the TSC accepts the express proposal, I'll get the nodejs/express github team created and put out a call for participation to the the community. We can iterate on it from there! I'm excited to see the community support behind this!

@jasnell
Copy link
Member Author

jasnell commented Jan 29, 2016

@mcollina ... I have opened a PR with the proposed WG governance (per the TSC guidelines) here: expressjs/express#2871 and have added a draft Express WG charter to this PR. Hopefully that provides the additional detail you were looking for :-)

* dougwilson/depd
* visionmedia/bytes.js
* crypto-utils/random-bytes
* crypto-utils/uid-safe
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still have questions about these and stream-utils -- besides I don't actually think we necessarily have the permission to propose these be moved in any authoritative way.

@mikeal
Copy link
Contributor

mikeal commented Feb 4, 2016

This was discussed at length in the TSC meeting today. There were no objections to merging once the last few comments have been addressed.

The TSC assigned two mentors to work with project while incubating: @mikeal and @jasnell. We didn't assign @Fishrock123 as a mentor because he will likely end up being a member of the Express TC, but we're sure he'll continue to also be a good resource.

The TSC would like the Express TC to pick someone not already on the TSC to represent them as an observer on TSC calls while they are incubating (once they graduate incubation they get a voting seat).

@jasnell
Copy link
Member Author

jasnell commented Feb 8, 2016

@mikeal @nodejs/TSC ... application updated and squashed. PTAL

@mikeal
Copy link
Contributor

mikeal commented Feb 9, 2016

LGTM

on the server.

Express has consistently been among the top packages installed via npm, with
nearly 4.5 million downloads in just the past month.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: include the time of writing.

@bnoordhuis
Copy link
Member

LGTM-ish. The section on intellectual property is still blank.

@jasnell
Copy link
Member Author

jasnell commented Feb 9, 2016

Quick update on the IP section: currently there is no IP transfer indicated. The question over the expressjs.com domain name will need to be looked at again a bit later but it will not be included in this initial proposal. The express API documentation, however, will be contributed. That doesn't rule out the domain question completely, just doesn't include it in this initial step.


Many repositories in these organizations may be moved out or removed entirely
during incubation at the discretion of the Express TSC. Prior to graduating
from incubation a full list of repositories will need to be provided to the TSC.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/TSC/TC/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TSC is appropriate here. Those repositories will be selected by the TC but need to be included in the charter that is reviewed by and approved by the TSC

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jasnell oh, the live above isn't though

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah! lol... completely overlooked that one. Ok, will fix before landing

@Fishrock123
Copy link
Contributor

LGTM minus nits

@jasnell
Copy link
Member Author

jasnell commented Feb 9, 2016

@Fishrock123 @mikeal @bnoordhuis ... updated to address nits

@Fishrock123
Copy link
Contributor

still LGTM.

@jasnell
Copy link
Member Author

jasnell commented Feb 10, 2016

Barring any objections from @nodejs/tsc, I will land this tomorrow.

@bnoordhuis
Copy link
Member

LGTM with spelling nit.

@jasnell
Copy link
Member Author

jasnell commented Feb 10, 2016

Updated to address nits. Landing now!

jasnell added a commit that referenced this pull request Feb 10, 2016
Add initial TLP application for express
@jasnell jasnell merged commit f953da6 into nodejs:master Feb 10, 2016
@Trott Trott removed the tsc-agenda label Sep 2, 2017
@Trott Trott mentioned this pull request Jan 5, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.