-
Notifications
You must be signed in to change notification settings - Fork 43
Initiative: Terminology / Historical Decisions documents #119
Comments
Good initiative! This should cover static/dynamic resolution, how named exports work, live bindings, differences between ESM and CJS, the various proposals in the past (summarized), where to find what in the repo (links to the use cases for example). Would you be willing to take charge of it? |
I’ve added it to today’s agenda with a 5 minute time box
… On May 23, 2018, at 2:22 PM, Benjamin Gruenbaum ***@***.***> wrote:
Good initiative!
This should cover static/dynamic resolution, how named exports work, live bindings, differences between ESM and CJS, the various proposals in the past (summarized), where to find what in the repo (links to the use cases for example).
Would you be willing to take charge of it?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#119 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AAecVw18HUjcvHcPx4MW8q04n9V9CslUks5t1ajqgaJpZM4UK85g>.
|
@benjamingr I understand the pain more than anyone at this point not to mention that I have a love-hate relationship with terminology. Count me in definitely It would be a lot more effective to have one or two other volunteers to increase the odds of it making sense to humans. |
I vote that we use a doc unless there is good reason to have version control. Not the biggest fan of wikis on github. |
I was about to nominate a wiki, because it allows Markdown. I find the use cases/features docs hard to read because the code is all mangled in Google Docs. |
@GeoffreyBooth idk, comments are nice and allow issues to be done without needing to spin up a full github thread about specific terms, also it allows a nicer sharing mechanism that github wikis. if formatting is a concern we might be in big trouble since this is a list of terminology and collection of links and not a book with full on examples I would think. If we want to do full examples of each term with code highlighting that might a bigger goal than what I thought this was and would probably need its own project. |
Okay, let’s start with a Google Doc then and see how it goes. Or if there’s some Google Drive app that allows editing Markdown, but with all the other features of Docs (comments etc.) that would be ideal. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@MylesBorins I totally agree. It was important to get this figured out while I pulled together the initial set of terms so that we don't put in a lot of effort only to end up having to redo everything. So if I am getting everyone's inclinations correctly, we stay 100% Google Docs. So here is the gist of the workflow (we're big on those in printing):
|
Sounds good to me. |
I began putting together the initial draft. In order to make this document as useful as possible, my suggestion is to let it grow organically. So as a starting point, I basically extracted the links to all relevant concepts, productions... etc from ECMA-262 into a taxonomy-like document, whereby it becomes possible to infer the meaning from structure or otherwise by following the link. From there we can all begin to make suggestions on how to improve or even completely replace the structure. Ultimately, since it is far fetched to imagine we can really include definitions for all things, I am of the opinion that inference from structure and links are a really nice way to avoid all the potential pitfalls of having to maintain copied matter from sources with permalinks. |
Great to see things moving here, sorry for a delayed response on this. I'm not sure how these things fit into the current structure, but here is an attempt at listing some terms we should try to ensure are adequately covered:
I can gladly copy some of these over to the right places in the skeleton if it helps. Otherwise please feel free to integrate any of the above as you see fit @SMotaal, and then hopefully with the skeleton in place we can start to crowdsource the actual descriptions :) |
To avoid discrepancies, I added TBD and Additions sections in the prologue to keep track of undefined terms and those worthy of revision or review. @guybedford I already your list and did a quick sort to make it easy to go through them (assuming order was merely organic). |
Now that we have diverse enough matter, I think it is important for us to deep dive into structure specifics. Our next goal should be to have a well structured document (without worrying about the completeness of the actual definitions) to get feedback around next meeting. Let's use comments on the actual document to recommend, discuss and finalize this. |
I was imagining a document more like a glossary, like just take each of @guybedford’s terms and define them, and that’s it. A single document with the spec and TC39 history and so on feels overwhelming. |
@GeoffreyBooth I completely agree. So at this point we're working on a single doc, but I imagine we will end up with more than one document and one of those will be just the glossary. I felt like getting things out of the spec was an important first step to make sure there is no conflict in any introduced terminology. I am sure that others like myself may also find a document with only the relevant excerpts from the spec a very useful resource to help them focus on the important portions. So, I guess it is a good point to ask everyone to list quickly the most important document(s) they believe are necessary for this project. I think:
|
I think what I just realized is that all our inputs so far (from the details aspect) is exclusively ES modules. We have not detailed things that makeup CJS, grammar, records... etc. I realize that NodeJS's documentation is exceptional, but that is all from the API consumer P/V not implementation. Do you think any one of us is willing to take this part on. I wonder if maybe someone that is fluent in CJS evolution and especially interop-related caveats would be best suited to highlight the most important concepts/terminology to include. |
@bmeck @GeoffreyBooth @guybedford @devsnek This seems to be stalling with the obviously shifting priorities. Being on the outside, I don't think I am as able to set the appropriate scope of would be the most ideal form of a "Glossary" document for the team (downgrading it may be it). I don't think I can be productive working towards something that does not really align with the actual expectations and needs of everyone else in the group. I'd like to pass the torch of setting the scope of our effort to someone else and I am more than happy to do the work, but planning this requires more insight at this point. |
Maybe a starting point could be a document that just defines the list of terms in #119 (comment)? |
Okay, I shared a new Terminology document. Please copy over what you think needs to remain. Let's try to use comments in both docs to reach decisions together. |
How about promoting this link into the RESOURCES.md file here, and treat it as a living document at this point? As we come to any resolutions on terms during discussions, it would be great to keep it updated. Alternatively we could create it as a separate TERMINOLOGY.md now that we have a skeleton, and then require specific approval on the consensus around terminology. |
@SMotaal I wouldn't worry too much about trying to get this perfect, in fact I think the minimal document here is all we need to start. Would be great to see this in this repo so we can continue to track process on terminology discussions as we build consensus on this. |
- Transparent migration ([#105](https://github.com/nodejs/modules/issues/105))
+ Agnostic consumer imports ([#105](https://github.com/nodejs/modules/issues/105))
I'd like to bring this discussion here because it's important to have a clear and agreed up term and definition for this concept. I also commented on this change in another thread:
I consider the term "import" to be ambiguous because it depends on the context. I see two possible interpretations:
Usually it's easy to get the correct meaning based on the context or formatting, but this is less reliable than having a single term. Formatting is easily lost when copy/pasting, and context is not always there (such as in the list of features). I'd like to have a term for talking about imports in general as opposed to ES imports specifically. Now, regarding the "Transparent interop/Agnostic consumer [import]", the goal is to represent the concept that the consumer code does not depend on the module kind of the provider. It means that as long as the producer exposes the same API, the producer implementation can change between CJS and ESM without breaking the consumer (no visible change, semver patch update). I'd also argue that it is important to specify the import mechanism of the consumer because this what actually matters when defining what a proposal enables or not.
I share the feeling that "agnostic" may not be the best term. I'd be happy if someone has a better idea, but the most important is to have an agreed upon meaning. A better term would help people to understand the meaning without reading the definition. In this context "agnostic" means "Independent of the dependency module kind" (etymologically, it's "without knowledge"). I'd also like to share here my feeling around the form "consumer-agnostic import":
PS: I use "module kind" to cover modules acting like CJS or like ESM, but it is larger than Javascript files. For example, using |
Okay everyone... Seeing that there is enough energy for this to sail through, and especially since I just finished a three week pivot on one of my on long-term large-scale experimentals - this one involving (almost) full stack ESM - it's time to get this moving forward. Let me pull the threads throughout the day and follow through to conclude this today. |
@guybedford I tried to not get this perfect, but I guess I am just that awesome 😜 Okay, I tried three different options because as it turns Github Flavoured Markdown (GFM) (and other mainstream flavours) do not have a commonly accepted syntax for definition list elements, including Please have a look at the options (both rendered and source): Markdown: https://github.com/SMotaal/meta/blob/master/Node.js/Terminology/Definitions.md reStructuredText: https://github.com/SMotaal/meta/blob/master/Node.js/Terminology/Definitions.rst If anyone knowns how to markdown definition lists (in case I missed it) please let me know, because after trying to work with the alternatives (which all have cool things too) markdown+html wins in my books. Thanks to everyone who has contributed in our slow process, I would really appreciate everyone's continued collaboration on this now that we almost have a document to work with in the repo. |
What kind of "direction" do you have in mind? I really want to differentiate a consumer not knowing the module kind of its dependency from a dependency/provider not knowing the type of the importing module ("agnostic provider"?).
I'd use headings for the definition term. It creates anchors allowing to link directly to a definition. |
@demurgos sorry for not getting back to you till now... I figured once we have a document in the repo we can begin making pull requests against it. @guybedford Please note #158 |
Removing from agenda as we can now discuss the PR |
@MylesBorins @guybedford I think we should close this, right? |
Motivation: In the last few days, while playing catch up to the things I missed in the last 3 weeks, I caught a glimpse of how challenging it would be for our future selves or others going through this repository's issues and documents when trying to pull together various threads.
Initiative: I'd like to propose and take part in an effort to put together terminology / historical decision documents which will allow us to keep track of easy-to-misread terms and how or why certain technical terms will evolve.
Volunteers: @SMotaal @devsnek @bmeck @guybedford
Tasks:
The text was updated successfully, but these errors were encountered: