-
Notifications
You must be signed in to change notification settings - Fork 64
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
What should new VB features 'look' like, and how should proposals be presented? #402
Comments
This is an important meta issue that is definitely worth discussing 👍 When filing issues in the roslyn repo, you get a predefined template to follow and perhaps having something similar for this repo would help. The template could include questions like these:
I believe those should be enough (though suggestions/modifications are welcome). Some minor rules would be to (1) check spelling and grammar before submission and (2) keep things as brief as possible so busy people can read proposals in full before contributing their thoughts. Finally, and I think we touched upon this in the past, we need a way to "expire" issues so they can be closed if they haven't gone anywhere after a specific period of time. This could be automated with the rule being that if an issue hasn't seen activity in 30 days, a bot could post a comment to notify that it will be closed in 7 days and participants in the issue can up/down vote the comment to tell the bot whether they agree or disagree. The ultimate purpose is to keep the repo "lean and mean", containing just the issues that will probably get implemented down the line 👍 |
A few comments on proposals:
Microsoft repos don't generally expire issues, so I am not in favor of that. Some issues that don't get attention now may be considered in the future. The LDM has been labeling issues as time allows. |
I just read the release notes of Visual Studio 2019, to see what proposals for VB.Net made it in to it. So, what is a proposal (in whatever form) worth if the language is not even mentioned anymore by Microsoft? Edit: It is mentioned once, below IDE: And that's all. |
@tverweij I raised this elsewhere, so sorry if it is a dup but VB is not even listed on the VS 2019 survey of what language are you using with VS. I missed the reference to Visual Studio Live Share. 2019.1 (starting with Preview2) will have a couple of new VB features, I hope there is also a comment in the readme file. |
The Visual Studio 2019 release notes for C# are about features that are not available by default in Visual Studio 2019, but only after a separate installation changing two settings on separate nested dialogs. I won't comment on whether that was a good decision for C#. Those C# features are in .NET Core 3.0 Preview 3. The Visual Basic feature we are working on for .NET Core 3.0 will appear in a later preview. Preview 4 or 5 will also contain @paul1956 change to allow line continuation in more places. There wasn't a way to say "coming soon" in the release notes. I am working on articles and documentation close to the release of .NET Core 3.0. If anyone is interested in helping, feel free to reach out. |
Kinda wish GitHub had a spicy emoji reaction I could attach to the last comment. |
An interesting discussion going on. I've mixed feelings about VB's presence (or lack there of) on Visual Studio release notes. It seems to me that, strictly speaking, Visual Studio and the languages are now discrete products on slightly different release schedules, and that they should each be doing their own release notes. And if VB doesn't need new features from Visual Studio (because it's already so awesome and well-integrated), then there's no real need for anything in the release notes! Having said that, I still haven't got an answer to one of my questions, about VB's 'style'. @KathleenDollard, is there any kind of document on what VB's "Look and Feel" should be? As in, what are the guiding principals behind the choices made in terms of structure, keywords, syntax and semantics? Without a guideline, there is a risk of the unique flavour of VB being lost to dilution by constructs adopted from other languages, which I fear we'd all be poorer for. As a specific example, there are two similar (but not identical) proposals relating to removing |
What I found most interest since using VS 2019 with VB is all the new features that I had to discover myself or that were only listed as C# features that work well (but not perfect) with VB. The new refactoring's, the formatting of lists... when I looked for them in Options the preferences only appear under C# but the features can be used by VB. I looked for the cleanup document and that I can't find but still searching. This seems like an easy oversite that could be fixed in 19.00001 since it "only" involves updating the readme. There also seems to be a major update to the Roslyn SDK that effects VB, programs that use it return different results, some of my failing tests pass and passing tests fail (I believe all for the correct reasons) but this also should have been documented somewhere. That said I really like VS2019 as a VB developer despite the rough edges. |
Like this? |
yes. Exactly like that. I specifically think we need a (semi-)formal document from the LDM. We do have the VB language spec, and while it covers the existing grammar, there is no history, nor 'goals' or 'whys' in there. I presume there is some kind of documentation on how we got to where we are. At the very least the things you mentioned deserve a place readily accessible from this repo's README.md. Perhaps a short version of a 'style guide' in the README.md itself, with a link to a longer form, which could even be just an issue on its own, or live in its own folder, like the language spec. |
@pricerc There's also the points in the second list item here:
which should also be incorporated. |
It doesn't have to be strictly structured, but for many suggestions, I spend a fair amount of time trying to puzzle over things like "What problem is this trying to solve?", and "I'd like to reproduce the scenario, but their code doesn't compile". So if we could encourage people to think about these things before posting, then it would help others to understand the proposals.
I know I speak for many when I say that I'm grateful for all the non-English speakers making an effort to communicate with me. I know English is a bit of a challenge to master, even for many for whom it is a first language. So I'm not too fussed about (other people's) spelling and grammar (if I was, I'd have to stay off the InterWebs; even our newspapers have shocking grammar and spelling these days).
Brief is fine, as long as they have a reasonable "What" and "Why", and an example of "How" they think things should look. |
covers quite a few proposals I've seen that have had me wondering: "Why?" If these were centrally documented in some guidelines, then we could potentially refer authors back to said guidelines. |
In short, that's part of the function of the language design team. To massage ideas into things which "look" right and fit into the language and reject things which don't. An idea ... isn't usually rejected PURELY because the hypothetical syntax chosen isn't quite right. It's often the case that the syntax is off AND the idea doesn't work regardless of syntax. Or even if the syntax is great but the idea itself doesn't work. See that all of the time. In my time on the LDM (2010-2017) we always debated keywords and syntax, even when taking a feature over from another language or implementing it at the same time in both languages. So originally, C# was going to go with the VB was originally considering VB added iterators in 2012 and added a new keyword
VB was originally going to go with Now it's also up to us, the community, to speak up and loudly if we think something's going through that doesn't look right and never let anybody take shortcuts on the language we have to live with. Sometimes I talk to my friends who use other languages and they say stuff like "Oh, that (completely arbitrary syntax) seems fine to me" and I'm like "You're an F# programmer. You won't have to live with it. Everything seems 'fine' to you!". the joint-policing approach by LDM and community is still working for us. I have considered writing something about this topic such as "When a modifier is a noun like |
Actually, that kind of thing would be helpful, at least to explain why some things are the way they are, so that people don't expend a lot of energy suggesting things (e.g. keywords) that have already been thought of. |
Over the months that I've been following things here, the many suggestions for new features have varied greatly in quality, both in the quality of proposal, and in the quality of presentation.
I don't typically have very strong feelings about things. I can be a bit of a troll, and I like playing "Devil's advocate" on just about any topic. So my points on this forum are usually about getting people to think about aspects of proposals that are not obvious at face value.
But I do have a strong opinion on one thing, and that is that Visual Basic should be its own thing, independent of other languages, and only adopt paradigms and "cool new things" that will enhance the language as a rapid application development tool (for business and casual users alike) that encourages code that remains easy to maintain years later by other people. I think that abandoning "Feature Parity" between C# and VB was a good thing, because both languages were being constrained by the requirement that they be "cross-translatable", which diluted their individual strengths.
The things that have been a recurring theme for me in triggering responses to proposals are:
proposals that don't look like "VB" to me.
proposals that don't adequately address how they enhance the language.
proposals that I can't follow because they have inadequate examples, or examples that don't compile (I understand that you can't compile a new feature, but many proposals are about new ways of doing old things, where the old things are pain points for the proposers, and having compilable examples helps make the point)
So I have two questions/requests for discussion.
With
already had a perfectly acceptableEnd With
, solooks like VB and C# had a confused baby, when
looks more like VB and, ignoring the
End With
(which the editor types for you), is less typing, and would have made converting from this easier:Perhaps even a couple of templates, around different types of enhancement?
I'll kick off the discussion with an initial thought on what should be in a proposal. Based on my experience with "user stories" that one might use in agile development, I think a proposal should read a bit like a user story:
The text was updated successfully, but these errors were encountered: