-
Notifications
You must be signed in to change notification settings - Fork 546
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
Proposal for v-slot syntax shorthand #3
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mismatched tags.
I like it. I don't mind being I don't see the use of the shorthand on a default slot as a drawback because it'll only be used when destructuring the slot props and I think people will naturally read it as "slot". If it becomes a problem, a possible solution would be <foo #default="{ msg }">
{{ msg }}
</foo> This could be optional, though, allowing people to choose between |
Co-Authored-By: yyx990803 <yyx990803@gmail.com>
If we go with a shorthand, I think we should not allow |
Posting this also as it seemed that it seemed favorable by some: <foo &default="{ msg }"> <!-- to @Akryum's point -->
{{ msg }}
</foo>
<foo>
<template &header="{ msg }">
Message from header: {{ msg }}
</template>
<template &footer>
A static footer
</template>
</foo> Benefits:
Drawbacks:
As @yyx990803 mentioned before, most of the qualms with the aesthetic appeal can be fixed via syntax highlighting. |
This comment has been minimized.
This comment has been minimized.
From the proposal:
Echo-ing what @Akryum said above, I agree with this. Disallowing the shorthand on default slots seems very consistent and clear to me. |
For consistency, I think we can define a shorthand as a replacement for
For the argument-less case, we enforce the use of the full syntax. To declare a default slot scope, either of the following usage will be legitimate:
|
The shorthand syntax has quite grown on me, I like both full syntax and shorthand. But for a hypothetical component accepting multiple named slots, I'd prefer shorthand. <TestComponent v-slot="{ name }">
<template v-slot:one="props">Hello {{ props.name }}</template>
<template v-slot:two="{ name }">Hello {{ name }}</template>
<template v-slot:[dynamicSlot1]="props">Hello {{ props.name }}</template>
<template>Bye {{ name }}</template>
</TestComponent>
<TestComponent #="{ name }">
<template #one="props">Hello {{ props.name }}</template>
<template #two="{ props }">Hello {{ props.name }}</template>
<template #[dynamicSlot1]="props">Hello {{ props.name }}</template>
<template>Bye {{ name }}</template>
</TestComponent> Even the default slot shorthand feels quite okay, I would like to extend it to <div v-bind:foo="bar" v-bind:[foo]="bar" v-bind="someObject"></div>
<div :foo="bar" :[foo]="bar" :="someObject"></div> Or even <div v-on:foo="bar" v-on:[foo]="bar" v-on="someObject"></div>
<div @foo="bar" @[foo]="bar" @="someObject"></div> |
When I read the initial proposal and saw the alternative shorthand Now that I've seen the |
Like
Newcomers with Angular experience may still be confused, but |
I've been thinking about this a lot today and the more I do, the more strongly I'm against a shorthand for Undisputed Advantages
Counters to Claimed Advantages
Disadvantages
|
Counters to Counters of Claimed Advantages
Just because it can be helped by tooling doesn't mean we can ignore visual distinctiveness from syntax discussions. Also, we cannot assume that everyone will be using the same tooling.
The primary reasoning for including a shorthand is not just saving keystrokes - instead, it's about increasing the signal/noise ratio in cases where it gets used in high density. In that sense, the absolute number of times it occurs within the project is not the sole determinant of its overall benefits. On the other hand - I don't think 17% is an insignificant usage rate, and the ratio may get higher for projects that rely on component libraries with a primarily slot-based API.
If I'm not mistaken, I think @shentao and @znck have both changed their minds and are now ok with
The verbosity and lack of visual distinctiveness has been a problem since the As mentioned in the adoption strategy - it actually creates a problem if we ship the base syntax and the shorthand separately. Shipping them together ensures everyone reading about the Counters to Disadvantages
The API surface increase is objectively minimal. If someone already knows the
This is true - but I doubt it is a problem significant enough to block this RFC, since Google isn't the only way to find answers to syntax issues. There are forums, chat rooms, alternative search terms like "Vue shorthands", and the fellow developer who wrote that code to ask from.
I think such a fear is unwarranted. The discussion we are having right now shows good arguments from both sides and actually helps us argue against unnecessary shorthands in the future. Landing it in no way indicates we are open to more shorthands without proper, case-by-case discussions. |
Updated: dropped |
I like that Differently, from bind and on, which are completely necessary to build a Vue application, a person may develop an application without ever developing components using slots. Only using them through 3rd party components. I think it's fine to use the classic syntax in these scenarios, leaving the shorthand syntax for more advanced and intensive scoped slot usages. Even mixing both syntaxes in a project sounds fine. However, I'm also concerned about the syntax looking magical, especially if we add more like Overall I'm for the shorthand, one of the main points for me is Drawbacks i |
From my experience, one of the major selling points of Vue has always been the fact that it is intuitive. It doesn't take much effort to read or comprehend what's going on regardless of your JS experience level because you all did that good of a job. All of the APIs and mental models required to understand Vue fit within the traditional frontend technology stack. That said, the shorthand syntax for v-slots is one of the first times where I had to stare and question what was going on. After all, as someone who writes a lot of CSS, seeing The reason the shorthand of While I know that many of the advanced Vue.js developers may be okay with the shorthand, I want to make sure we are considering new and future new Vue.js developers who won't have a chance to weigh in on this. I would be remiss if we started to lose how approachable Vue is to developers of all walks of life over something like shorthand syntax. Anyhow, just my two cents and I welcome any counter points if I missed something. Cheers! |
I think there's a fundamental flaw in this argument: you can't judge a shorthand by people's reaction when they are exposed to it without proper context - that's not how we teach the framework, and that's not how people learn. We tell people what Similarly, this proposal has the pre-requisite of proper context from the new slot syntax proposed in #2. The shorthand should and will only be introduced AFTER the user has properly learned how
Another aspect of the analogy here is that So when I see "stare and question what was going on", I think it's a combination of:
I'd say it's inaccurate to attribute the confusion all to the shorthand itself, and I don't think users learning about the new syntax from the documentation or structured materials will have a similar problem. I honestly doubt this shorthand can be so disastrous as to cause Vue to lose its approachable-ness - that's a bit hyperbole to me. |
My apologies if it came across as a hyperbole. It was more an expression of concern more than anything else and a thought experiment at best. I agree that with the appropriate context and background, shorthand syntax is merely a conversion rule for a person's mental model. The only point I wanted to raise was that the interesting phenomenon I found with So my comment on the |
@bencodezen no worries. I think the fundamental cause is because |
Based on the poll from #2 we have about 80% of users who voted in favor of introducing a shorthand. Some of the users had different opinions on what symbol to use, but after the switch to Most of the opposition to this RFC is against the addition of the shorthand on the ground of shorthands being hostile for beginners. I think there are several aspects of this:
I think it finally comes down to whether the drawback is significant enough to block this RFC from landing, and my opinion is no. I don't believe this drawback is anything close to affecting Vue's overall approachable-ness - instead, it's a transitional churn that may cause some inconvenience to a particular group of users, which will ease out over time. This is also what happens to the introduction of any new syntax (to a lesser degree if they are more easily-googlable), which is why we do it very carefully and very infrequently. (The 3 active RFCs are the only ones we currently have planned regarding templates in 3.0, and non of them are breaking) I want to reiterate that I absolutely value Vue's approachable-ness as a core design principle, but we also shouldn't underestimate people's ability to learn. In this case, I consider the tradeoff acceptable. |
Re-evaluating premises@yyx990803 I think we're starting the get to the core of the disagreement here. I worry that some of the premises you're building on may not be accurate. Based on the data I've seen from analytics and workshops, and my background in educational psychology, I believe I have strong evidence that:
If these are true, then then your two ✅ premises would be inaccurate and Vue's overall approachableness would suffer for most users (not just some outliers) that would persist for as long as we keep getting new users. I'll explore these points now. 1. Most users will not learn about
|
I'd be curious to see where this analytics comes from. I honestly doubt the 80% number. I know it's an estimate, but as someone who also teaches Vue a lot, I honestly have no clue what percentage it really could be, so that makes it hard for me to take any number for granted. Workshop attendees are such a small sample and is highly skewed (they are attending the workshop likely because they are still learning). Even if this is the case, it does not change the fact that:
So the first premise may be discounted, but still holds.
We didn't introduce anything close to a "change" in 2.5.
I strongly disagree. And I think this can actually be supported by the vote here: voters are most likely users who are already familiar with slots. They voted in favor of it because the shorthand makes sense given slot knowledge. The shorthand is a small, one-time upfront cost in return for reduced cognitive cost in the long run. Once learned, it pays dividends forever. This is the main reason I'm strongly for the shorthand.
Like I said above, I'm using poll to gauge whether the shorthand makes sense for users who already know how slot works. I'm not using it to argue about the learning cost for beginners, nor am I suggesting it should be the sole base of merging this RFC. It validates the "pros" of the proposal. I think the poll serves its purpose.
The reason I rejected that one was because of the potential confusion with boolean attribute, and unlike
No empirical evidence here. Seems a bit too subjective to make such an assertion. |
I'm still not convinced yet another syntax is beneficial just to save 5 key strokes. We already have this new dynamic argument syntax which is adding some noise in the template but which actually opens new possibilities, so I like it, but this one is I'm really not sure... Maybe we should try to not end up closer to Angular with a absurd amount of special characters everywhere in the templates? |
I'd tend to agree with @chrisvfritz and @Akryum here. Slots (especially scoped) are a more advanced concept, mostly used by power users (I personally had a hard time wrapping my head around the idea, and am still not using it as frequently or fluently as I want to be). This essentially means several things:
Last but not least, for the arguments saying this is a small upfront cost for a long run benefit, I am not so sure about that. This upfront cost might just be costly enough for me for example, as a team lead, to disallow the use of the syntax in our codebase entirely, to not raise the bar for newcomers unnecessarily. This again defeats the purpose of introducing a concept whose audience consists of mostly power users. |
It's not just about saving 5 keystrokes. As stated in the proposal, it's also about increasing the signal/noise ratio when it is used in high density. "yet another syntax"
That is certainly something we want to avoid, which is exactly why we are having this lengthy discussion here on the introduction of one single extra special shorthand. I'm pretty sure we are not adding yet another shorthand any time soon (maybe never).
This brings up an interesting topic on perspective here - the dynamics of power users vs. beginners. It seems some of the arguments here makes the assumption that DX for beginners automatically trumps that of power users. I don't think that is the case - DX for both groups are important, but it has to be measured in a case by case manner. I think it's good that we have a part of the team that lean towards conservativeness whenever it comes to approachability, but we also have to realize that Vue is not just for beginners. We have been around for 4 years and we have people building sophisticated systems using Vue in all kinds of settings. We sure do have a lot of power users as well as beginners. Should we always lean towards a particular side? No. Our ultimate target is all Vue users. In this particular argument, I feel that the negative impact of the shorthand may have on beginners is being exaggerated, while the cognitive benefits for power users are being dismissed as just "saving keystrokes". That, in my opinion, is not a balanced take, and I'm essentially playing the advocate for the power users here. To re-emphasize a point regarding the learning barrier cost: the inherent learning barrier is in slots itself. For a user that never learned about slots but encountered it in a coworkers code, they'd be forced to learn it regardless of shorthand or not - and the majority of the learning will be about slot itself, not the shorthand. The only actual negative impact of the shorthand is not being as easy to Google as Overall, I'm still not convinced that the potential downside for beginners outweigh the potential upside for power users. |
I provided a breakdown earlier, but I'll summarize again. In my advanced workshops, after removing the people who are not already using Vue (thus eliminating the true beginners), consistently only 40-55% report having read all the Essentials in a poll I have everyone fill out at the beginning. Then tracking unique visitors in Google Analytics, it looks like only about 35% of people who read all the Essentials also go on to read the slots page. That means optimistically, 55% * 35% = 19%. That left more than 80% who would not read on to learn slots from the docs.
Let's forget the exact number for a moment. Even assuming 100% of current users read all the Essentials (which would contradict all my personal experience), that would still leave at least 35% who don't go on to read more according to our site analytics. So the number is undeniably a huge proportion of users.
Most of my advanced workshop content goes beyond the documentation. But also, outside the core team, almost everyone I know who leads a team and even teaches Vue isn't familiar with 100% of Vue's features. I even learn new things sometimes, so I think pretty much everyone is "still learning". 😄
Not if they learn
My argument isn't that the shorthand is impossible to learn - it's just an extra barrier. But I also guarantee you that it's a large enough barrier that some users will give up, unsure what question to even Google when they see something like
The idea that quantitatively more discrete concepts and layers of abstraction add higher cognitive costs to learning isn't a matter of opinion - there's 50+ years of research to confirm this. Also, as you mentioned, the voters are most likely users who are already familiar with slots, so they have no idea what it would be like to learn about
Do you have any evidence to suggest the cost will be small? My evidence and intuition suggest it won't be insignificant. And what's your evidence that it will reduce cognitive cost in the long run? You're adding a new layer of abstraction (increased cognitive cost) that defies the traditional meaning of
The same was true for introducing
In HTML templating languages like Pug, Haml, and Slim,
I admit I haven't done any user testing on this, but it seemed to be the logical outcome based on these facts:
While I agree it's not necessarily definitive, that seems to be a fair amount of evidence to me. What's your evidence that people seeing |
This doesn't mean they didn't learn slots from the docs. It only means they didn't get to slots on their first reading. I'm afraid this number doesn't actually support your argument.
This actually means the shorthand will not affect them either.
Because it most likely only appears in the following form: <SomeComponent>
<template #header>
<div>Header message</div>
</template>
<template #item="{ item }">
<div class="item">{{ item.text }}</div>
</template>
<template #footer>
<div>Footer message</div>
</template>
</SomeComponent> In this case, |
@yyx990803 I agree. That's why I, as a power user myself, suggested this as opt-in editor tooling. That way, beginners are unaffected and the power users who might find this helpful can enable it for their own code. Isn't that the best of both worlds? I think this is more than power users vs beginners though. I think there's also a solo devs vs team dynamic. I think power users who also happen to be solo devs are most likely to gravitate toward this feature, because their knowledge is cemented enough that learning one more thing is easier. They never have to worry about the cost of other people learning it. Or, they're students and not even building real apps. (I think not many people besides students have the free time to browse random Vue issues. 😄) On the other hand, those of us working in a team would rather not suffer productivity by having team members stumble over |
Valid point - but I would argue that there are two different problems here:
Banning certain features is a team choice. If Vue can work without any sort of enforced team opinion, then we wouldn't have the need for the ESLint plugin or the style guide. On the other hand - it seems to me a better approach would be a proper onboarding document/process that primes any new member of the features the team is using to make sure everyone is on the same page, rather than hoping that they somehow will figure out things they didn't know themselves. |
Yes, but the features are normally easy to Google. The shorthand changes that.
I think we should try to avoid adding features that many teams will want to ban though. Do you not agree? The only other Vue feature I've had to ban is
I have an onboarding process, internal documentation, and many code comments linking to documentation for every project I lead. Some documentation is required reading during onboarding, some just for reference, because I usually don't find it realistic to have everyone on the team learn about everything before they start any work on the codebase. For example, let's say we're using Vue, Vue Router, Vuex, Lodash, Axios, and Rx.js - all common libraries that I use in a lot of projects. Especially after several months of development, getting all new devs (especially juniors) familiar with every feature we might be using just isn't practical. Wherever possible, I try to make it easy for devs to learn independently, because then our most advanced devs don't get bogged down explaining things to our less advanced devs and can work on features themselves. With
Everyone who's saying the syntax would be confusing, including myself and most other commenters, are seeing it in the proper context. So what would convince you? I could do some user testing, similar to what I did for |
Private class fields in JavaScript (partially implemented in Babel 7.3.0) use the class Counter extends HTMLElement {
#x = 0;
clicked() {
this.#x++;
window.requestAnimationFrame(this.render.bind(this));
}
constructor() {
super();
this.onclick = this.clicked.bind(this);
}
connectedCallback() { this.render(); }
render() {
this.textContent = this.#x.toString();
}
} I could see a future where people have a learned association that prefixing a property with a |
@chriscalo those are used in a completely different context so unlikely to cause any confusion, just like |
Did a poll on Twitter. As of this writing we have over 1,000 votes, where 55% guessed correctly, 16% guessed wrong, and 29% wasn't able to guess what it means. The percentage was very stable ever since it got over 100 votes, so I think it is a big enough sample size. I also think Twitter represents a diverse enough user base - probably including a decent percentage of casual or even non-users who are simply interested in participating in the design discussion. The follow up poll also shows that over half (56%) of the voters who wasn't able to guess what it means do not having working experience with slots (either never used it or don't even use Vue). I should have phrased it to include those who guessed wrong as well - but I think it's fair to assume a decent percentage of them also lacked prior slot knowledge. Let's assume it's a bit lower, maybe 40%. So if we filter out users who don't even know slots, and then re-calculate the percentage of those who guessed it right, we get (55% / (55% + 29% * (1 - 56%) + 16% * (1 - 40%)) ~= 71%. That is to say, for users with prior slots knowledge, over 70% were able to guess what the syntax means just by looking at it point blank, without reading any documentation, or even learning about the new |
Idk if that’s up to discussion but what about <template $header> Like The only thing I was confused about slots when I first learned about it was the a lot tag vs slot attribute, my first intuition was that I had to wrap my code in a slot tag when I’m fact I had to add a slot attribute. I can see the same argument about $ being confused with like ${} interpolations but for me it seems less confusing than the #. I don’t think the $ is used for anything else in the context of html. I don’t have a bias towards Angular but I like how #foo is used for ref=foo tho |
Hi everyone, Giving my two cents ! Does having a shorthand syntax makes sense at all ? Is it worth the confusion it can bring to save literally 5 characters ? Furthermore, I don't consider the |
I can't wait to use this with Vuetify! |
That's why I suggested two pipes But, I think I agree too. For v-slot, abbreviation isn't necessary or rather Edit: And, from a visual standpoint, not abbreviating helps readability, because it's easy to match up the slotted template with the actual slot. Here for example. <template id="questions-template">
<div>
<div v-for="question in questions" :key="question.id">
<slot name="text" :text="question.text" />
<slot :name="question.id" :input="question.input" />
</div>
</div>
</template>
<div id="q-app">
<p class="caption"><strong>{{ title }}</strong></p>
<questions-component :questions="questions">
<template :slot:text="{ text }">
<div>
{{ text }}
</div>
</template>
<template
v-for="question in questions"
:key="question.id"
:slot:[question.id]="{ input }"
>
<q-field :helper="input.help">
<component v-if="input.type === 'input'"
is="q-input"
v-model="input.value">
</component>
<component v-if="input.type === 'select'"
is="q-select"
v-model="input.selection"
:options="input.options">
</component>
<component v-if="input.type === 'multi-select'"
is="q-select"
v-model="input.selection"
multiple
:options="input.options">
</component>
</q-field><br/>
</template>
</questions-component>
</div> This, to me, this looks cleaner more concise. <template
v-for="question in questions"
:key="question.id"
:slot:[question.id]="{ input }"
> than this. <template
v-for="question in questions"
:key="question.id"
#[question.id]="{ input }"
> Scott |
From my experience running research studies, it is important to remember that the audience from Twitter is a very particular subgroup of people. I think it would be a mistake to assume that it contains a spread of users that represent Vue's user base because the kinds of people who would:
represents a very small and specific cross section of individuals who are often highly invested in tech and the Vue.js ecosystem itself. In addition, I would have loved to give my opinion but was not even aware of the poll until I saw you mention it on this thread. (And I consider myself a fairly active Twitter user). While I cannot provide hard evidence of this off the top of my head, it's really important to understand the inherent bias that exists with polling and data since oftentimes it ignores the incredibly influential (but often forgotten) variable of the silent population who can be just as opinionated. The only difference is that when they give up, the data is never surface. And if you need a recent example, the recent presidential election should be enough evidence for that. To be clear though, I'm not saying that the Twitter poll is invalid by any means. I think it's incredibly valuable and insightful to hear additional feedback. It's just that I want to make sure we must be careful to interpret the data with the awareness of the blind spots that exist with this type of data collection in order to avoid social phenomenons like confirmation bias. EDIT: Just to clarify, my critique is not that Twitter itself cannot be representative for this kind of research. It's that we have to be careful about how conclusions are drawn based on how data is gathered. |
@yyx990803 I don't agree with @bencodezen that the userbase on Twitter isn't representative enough for this kind of research. I think it can be a reasonable proxy, as long as the poll is well-designed. It's at least much more representative than places like GitHub and Reddit and I don't know of a better option for widescale Vue user testing. 😄 But the way you conducted that poll does not follow user testing best practices as I understand them. First, the phrasing makes it seem like a contest ("Can you guess what this syntax does?"), where people are now invested in guessing "correctly". Second, by providing the "correct" answer at all, many users will read it before answering (even though you told them not to), biasing their answer toward guessing correctly. Third, the example you provided is probably the most ideal scenario for guessing correctly, not the most typical. Fourth, while it makes counting up votes easier, we lose so much valuable nuance in the data by having people choose from limited options, rather than having them explain exactly what their guess is. Then you assumed that the votes of people not familiar with slots don't matter - which I'm confused by. If new users can't even intuit that this is for content distribution, that's still important! So you can't just make up a percentage (I've been trying to keep all my numbers coming from real data) and decide to throw out the votes you don't like. 😄 But keeping all the data, and even knowing the design of the poll will skew results toward the answer you want, that still left 46% of people who would be very confused by this syntax and having a more difficult time Googling it. That seems like a very significant negative impact to me. That's only 6% below the number of people who were confused by the Earlier, I asked you what percentage of confusion you would find acceptable, because I think it's important to have that discussion. Even for Also, you never addressed my full argument about moving this to opt-in tooling. If we can avoid all the disadvantages, while still giving power users all the benefits, isn't that a better solution? |
I agree that can potentially skew the result, however - Twitter polls are anonymous. People don't get any reward for voting as guessed right when they did not, so the skewing is rather limited.
I'm not saying it doesn't matter. These users are indeed a relevant metrics for the percentage that would have a hard time Googling it. However it's definitely not relevant when evaluating the intuitiveness of the shorthand. If a user doesn't understand slots, they don't even have the possibility of not being confused by the shorthand. This happens even without the shorthand, so counting these confused users as victims of the shorthand would result in a very different narrative, which leads to:
Again, context is important. "29% of users don't get it even after proper explanation" is completely different from "71% of users get it even without proper explanation". I think the former is not acceptable while the latter is.
Because of what's explained above. Context is important.
That doesn't seem to address the situation when an advanced team member opts-in without telling the rest of the team, or when beginners learn from open sourced code that happens to opt-in. They'd still have the exact same problems. In fact, this makes it even worse: because we actively try to hide the information, beginners that do run into it will have an even harder time finding resources about such usage, since it's not even in the docs. I think we have conducted enough discussion here. What we can agree on is that some users want it, and some users do not. Among those that do not, some simply dislike it and prefer the full syntax (but they have no problem understanding the shorthand); some actively want to prevent it from shipping due to concerns about increased learning barrier. I've read all the feedback, I've looked at all the data. I have no problem admitting that I personally am strongly in favor of the syntax, from a user's perspective. I also admit that this will result in some learning churn, but my assessment is that the churn is acceptable. We still have disagreements, but the arguments have started to shift towards minute details in things that either cannot be empirically proven, or - in cases where data has been collected - how to interpret the data. The arguments can be continued indefinitely and at this point I believe the time investment from core team members is starting to hinder progress in other parts. This is probably the first time I have to say this, but it has to be said: as the BDFL, I've made my decision, and we are shipping it. Case closed. |
@yyx990803 The majority of the discussion in this RFC seems to have been about whether to add a shorthand symbol or not, and I understand your position on wanting to move pass that point. Given the Twitter thread, comments on the gist and comments in the previous RFC, I feel that the choice of symbol still remains undecided/undiscussed. It seems to me that not an insubstantial amount of concerns is regarding the There's been quite a few different alternatives suggested the past days, so I'd suggest we have a vote to gauge the preference sentiment in the community. It could be here on Github or on Twitter. To keep it pragmatic, a maximum 5 different options should be presented. Here's all the different ones I've seen in the wild so far: What's your thoughts? |
I expressed previously my opinion in favor of the $ symbol, <template $header> |
@laander choice of symbol has already been extensively discussed in #2 - in fact it was changed to |
Just some grammatical corrections. Hope you don't mind. Scott
* Dynamic Routing * precision from * add getRoutes * add alternative for getRoutes * fix: typo in 0000-router-dynamic-routing.md (#1) * fix typo (#2) * Update 0000-router-dynamic-routing.md (#3) Just some grammatical corrections. Hope you don't mind. Scott * remove template drawbacks * update * rename Symbol to symbol, type typo * rename Co-authored-by: pierresaid <said.pierre.emler@gmail.com> Co-authored-by: atilkan <emrahatilkan@gmail.com> Co-authored-by: Scott <smolinari@users.noreply.github.com>
Full rendered proposal