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

VB Support #371

Closed
Nukepayload2 opened this Issue May 19, 2017 · 33 comments

Comments

Projects
None yet
8 participants
@Nukepayload2
Contributor

Nukepayload2 commented May 19, 2017

Please add VB support!
We really need a tool that can help us create VB and UWP projects easier.

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey May 19, 2017

Collaborator

@Nukepayload2 thanks for the suggestion. Unfortunately, because this would mean doubling the effort around building and testing templates this is unlikely to happen unless A LOT of people ask for it or someone volunteers to do it.
Will leave this open to group/track other people wanting this too.

Collaborator

mrlacey commented May 19, 2017

@Nukepayload2 thanks for the suggestion. Unfortunately, because this would mean doubling the effort around building and testing templates this is unlikely to happen unless A LOT of people ask for it or someone volunteers to do it.
Will leave this open to group/track other people wanting this too.

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas May 19, 2017

Member

@Nukepayload2 would this be something you may want to help lead?

Member

crutkas commented May 19, 2017

@Nukepayload2 would this be something you may want to help lead?

@Nukepayload2

This comment has been minimized.

Show comment
Hide comment
@Nukepayload2

Nukepayload2 May 20, 2017

Contributor

@crutkas I'll try to port C# templates to VB when I'm free.

Contributor

Nukepayload2 commented May 20, 2017

@crutkas I'll try to port C# templates to VB when I'm free.

@Afanyiyu

This comment has been minimized.

Show comment
Hide comment
@Afanyiyu

Afanyiyu May 21, 2017

Come and support this,,,

Afanyiyu commented May 21, 2017

Come and support this,,,

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas May 21, 2017

Member

@Afanyiyu is this something you would like to help contribute back?

Member

crutkas commented May 21, 2017

@Afanyiyu is this something you would like to help contribute back?

@crutkas crutkas added the help wanted label May 23, 2017

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas May 23, 2017

Member

One idea, can this and C++ be transcoded to have the support added in from our c# templates?

Member

crutkas commented May 23, 2017

One idea, can this and C++ be transcoded to have the support added in from our c# templates?

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey May 24, 2017

Collaborator

@crutkas, in theory, we could compile the app to IL and then decompile to VB.Net or C++ but that wouldn't help with the structure we have for templates and placeholders or post action files. Might be a good starting point though.

Collaborator

mrlacey commented May 24, 2017

@crutkas, in theory, we could compile the app to IL and then decompile to VB.Net or C++ but that wouldn't help with the structure we have for templates and placeholders or post action files. Might be a good starting point though.

@graymatter00

This comment has been minimized.

Show comment
Hide comment
@graymatter00

graymatter00 May 26, 2017

Yes! VB support would be great.

graymatter00 commented May 26, 2017

Yes! VB support would be great.

@hannespreishuber

This comment has been minimized.

Show comment
Hide comment
@hannespreishuber

hannespreishuber Jun 13, 2017

this more a VB tool than C#

hannespreishuber commented Jun 13, 2017

this more a VB tool than C#

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 13, 2017

Collaborator

@hannespreishuber can you expand on that?

Collaborator

mrlacey commented Jun 13, 2017

@hannespreishuber can you expand on that?

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 15, 2017

Collaborator

There is now an experimental branch with VB support at https://github.com/Microsoft/WindowsTemplateStudio/tree/VisualBasic
Please note this is not a guarantee that VB support is coming soon, more an exploration of what is involved in making it happen.
As such, this branch only supports a blank project, template, code behind, and a blank page. (The absolute minimum to generate a project.)

Important points of note from this experiment.

  • The impact on testing is big! Running 298 tests (all of them) takes over an hour on my machine. If we had all C# templates for VB as well, it'll go over two hours!
  • Tests can no longer run in parallel. Most of the tests we have are more of integration than strict unit tests and interact with the file system to analyze and iterate over the templates available. It's not possible to extract the templates for both language versions of tests into the same folder at the same time.
  • Much work can (and should) be done to improve the isolation of tests and the dependencies between static objects in the code. This will improve maintainability and make it easier to isolate code for easier testing.

Before this can go live:

  • There is still more integration and engine development work to be done before it's usable.
  • It puts both the C# and VB templates in the same installer. Do we want that? (I think we do but best to check.)
  • We'd need more support from people writing VB to develop and create new templates. Any volunteers?
  • How to share code (mostly XAML files) that are used by both languages? We might need to think how files are shared so we don't have duplicate, identical XAML files for the CS and VB folders. Is it Ok if the VB config files link to CS ones? Should they be in a central location shared by both languages? Or something else?
  • We need to establish clear naming principles for folder structures. Take the image below
    -- Should we add language identifiers to all existing folders?
    -- Where should the identifier go?
    -- I propose adding the language identifier to every folder and having the identifier at the very end. (Not what's shown in the image.) So we'd end up with ProjectCS and ProjectVB, Project.SplitViewCS and Project.SplitViewVB, etc. Any objections?

composition template naming

Collaborator

mrlacey commented Jun 15, 2017

There is now an experimental branch with VB support at https://github.com/Microsoft/WindowsTemplateStudio/tree/VisualBasic
Please note this is not a guarantee that VB support is coming soon, more an exploration of what is involved in making it happen.
As such, this branch only supports a blank project, template, code behind, and a blank page. (The absolute minimum to generate a project.)

Important points of note from this experiment.

  • The impact on testing is big! Running 298 tests (all of them) takes over an hour on my machine. If we had all C# templates for VB as well, it'll go over two hours!
  • Tests can no longer run in parallel. Most of the tests we have are more of integration than strict unit tests and interact with the file system to analyze and iterate over the templates available. It's not possible to extract the templates for both language versions of tests into the same folder at the same time.
  • Much work can (and should) be done to improve the isolation of tests and the dependencies between static objects in the code. This will improve maintainability and make it easier to isolate code for easier testing.

Before this can go live:

  • There is still more integration and engine development work to be done before it's usable.
  • It puts both the C# and VB templates in the same installer. Do we want that? (I think we do but best to check.)
  • We'd need more support from people writing VB to develop and create new templates. Any volunteers?
  • How to share code (mostly XAML files) that are used by both languages? We might need to think how files are shared so we don't have duplicate, identical XAML files for the CS and VB folders. Is it Ok if the VB config files link to CS ones? Should they be in a central location shared by both languages? Or something else?
  • We need to establish clear naming principles for folder structures. Take the image below
    -- Should we add language identifiers to all existing folders?
    -- Where should the identifier go?
    -- I propose adding the language identifier to every folder and having the identifier at the very end. (Not what's shown in the image.) So we'd end up with ProjectCS and ProjectVB, Project.SplitViewCS and Project.SplitViewVB, etc. Any objections?

composition template naming

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 28, 2017

Collaborator

On folder naming structure, moving forward with VB related folders ending with "VB" and no suffix for CS folders to ease backward compatibility.

Collaborator

mrlacey commented Jun 28, 2017

On folder naming structure, moving forward with VB related folders ending with "VB" and no suffix for CS folders to ease backward compatibility.

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Jun 28, 2017

Member

i'm fine with that but how much code reuse is possible on the xaml?

Member

crutkas commented Jun 28, 2017

i'm fine with that but how much code reuse is possible on the xaml?

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 28, 2017

Collaborator

reuse ALL the XAML
well that's what I'm aiming for and see no reason why it shouldn't be possible

Collaborator

mrlacey commented Jun 28, 2017

reuse ALL the XAML
well that's what I'm aiming for and see no reason why it shouldn't be possible

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Jun 29, 2017

Member

We are reusing or referencing? Based on that file path feels copying code vs linking. No matter what we need to adjust the structure for xaml / shared files, no?

Member

crutkas commented Jun 29, 2017

We are reusing or referencing? Based on that file path feels copying code vs linking. No matter what we need to adjust the structure for xaml / shared files, no?

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Jun 29, 2017

Member

I am thinking also icons, do we need to rethink docs, readme, the descriptions?

Member

crutkas commented Jun 29, 2017

I am thinking also icons, do we need to rethink docs, readme, the descriptions?

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 29, 2017

Collaborator

Because of the way template files (& folders) are copied and filtered it's not possible to have the VB folders point to files in the CS folders so I wrote a script that will update the ones in VB folders from the CS ones. It's XAML only while I test its effectiveness but know I need to add other file types there too. (*.png, *.md, *.resw)

Collaborator

mrlacey commented Jun 29, 2017

Because of the way template files (& folders) are copied and filtered it's not possible to have the VB folders point to files in the CS folders so I wrote a script that will update the ones in VB folders from the CS ones. It's XAML only while I test its effectiveness but know I need to add other file types there too. (*.png, *.md, *.resw)

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 29, 2017

Collaborator

Sync script now updated: https://github.com/Microsoft/WindowsTemplateStudio/blob/VisualBasic/SynchronizeFilesUsedByVisualBasicTemplates.ps1

I chose to go this route (copying files rather than redesigning the whole way templates are structured) because:

  • It doesn't affect what already exists (so no confusion for people already using the codebase & templates, plus no merge issues.)
  • It leaves both language versions with all the files they need together. (Template composition is already quite complicated, to suddenly move half the files to new folders--making twice as many templates are needed or extra file copy steps--would, I expect, be unnecessarily complicated)
  • I always expect C# to be the primary development language and get new functionality first.
  • There should be no need to create something that is for VB only.

As a general rule, when I'm trying to make the code do something that wasn't considered in the original code design (e.g. multiple languages, or tests that use extra templates to add testing functionality) I'm trying to modify what exists as little as possible, rather than rebuild everything in the way that is best/simplest for what we want now. If we reach a period of stability then such redesign work can be done but to do it now will slow development down considerably and might still leave issues when we need more functionality in the future. (i.e. multiple big restructurings might be needed, with all the risks they contain.)

Collaborator

mrlacey commented Jun 29, 2017

Sync script now updated: https://github.com/Microsoft/WindowsTemplateStudio/blob/VisualBasic/SynchronizeFilesUsedByVisualBasicTemplates.ps1

I chose to go this route (copying files rather than redesigning the whole way templates are structured) because:

  • It doesn't affect what already exists (so no confusion for people already using the codebase & templates, plus no merge issues.)
  • It leaves both language versions with all the files they need together. (Template composition is already quite complicated, to suddenly move half the files to new folders--making twice as many templates are needed or extra file copy steps--would, I expect, be unnecessarily complicated)
  • I always expect C# to be the primary development language and get new functionality first.
  • There should be no need to create something that is for VB only.

As a general rule, when I'm trying to make the code do something that wasn't considered in the original code design (e.g. multiple languages, or tests that use extra templates to add testing functionality) I'm trying to modify what exists as little as possible, rather than rebuild everything in the way that is best/simplest for what we want now. If we reach a period of stability then such redesign work can be done but to do it now will slow development down considerably and might still leave issues when we need more functionality in the future. (i.e. multiple big restructurings might be needed, with all the risks they contain.)

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jun 30, 2017

Collaborator
Collaborator

mrlacey commented Jun 30, 2017

@mrlacey mrlacey self-assigned this Jul 20, 2017

@mrlacey mrlacey added this to the 1.4 milestone Aug 10, 2017

@mrlacey mrlacey added the VB label Aug 10, 2017

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Aug 10, 2017

Collaborator

Progress update on VB support.
The core work to enable generating projects in VB has now been done as part of PR #864

The work to add all the necessary templates is being tracked via issue #863 and there is additional information on the VB page of the wiki.

The intention (hope) is that this will be included in the v1.4 release.

Collaborator

mrlacey commented Aug 10, 2017

Progress update on VB support.
The core work to enable generating projects in VB has now been done as part of PR #864

The work to add all the necessary templates is being tracked via issue #863 and there is additional information on the VB page of the wiki.

The intention (hope) is that this will be included in the v1.4 release.

@mrlacey mrlacey added the in-progress label Sep 1, 2017

@mrlacey mrlacey modified the milestones: 1.5, 1.4 Sep 12, 2017

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Sep 12, 2017

Collaborator

adjusted milestone to help set expectations

Collaborator

mrlacey commented Sep 12, 2017

adjusted milestone to help set expectations

@Nukepayload2

This comment has been minimized.

Show comment
Hide comment
@Nukepayload2

Nukepayload2 Sep 19, 2017

Contributor

I'm translating existing features and pages at https://github.com/Nukepayload2/WindowsTemplateStudio .
Copy codes or merge changes if they are appropriate.

Contributor

Nukepayload2 commented Sep 19, 2017

I'm translating existing features and pages at https://github.com/Nukepayload2/WindowsTemplateStudio .
Copy codes or merge changes if they are appropriate.

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Sep 19, 2017

Collaborator

@Nukepayload2 Thanks. There's some useful stuff there for the code conversions but there are issues with template config and lots of failing tests.
Feel free to raise PRs against https://github.com/Microsoft/WindowsTemplateStudio/tree/Issue863-VBTemplates

Collaborator

mrlacey commented Sep 19, 2017

@Nukepayload2 Thanks. There's some useful stuff there for the code conversions but there are issues with template config and lots of failing tests.
Feel free to raise PRs against https://github.com/Microsoft/WindowsTemplateStudio/tree/Issue863-VBTemplates

@ralarcon

This comment has been minimized.

Show comment
Hide comment
@ralarcon

ralarcon Oct 17, 2017

Contributor

Can we close this issue in favor of #863?

Contributor

ralarcon commented Oct 17, 2017

Can we close this issue in favor of #863?

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Oct 17, 2017

Member

No. They are different items. This is the master item.

Member

crutkas commented Oct 17, 2017

No. They are different items. This is the master item.

@crutkas crutkas reopened this Oct 17, 2017

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Oct 23, 2017

Collaborator

This is the master item for tracking the work necessary to add VB support.
To see all related items that need to be done see here.

Collaborator

mrlacey commented Oct 23, 2017

This is the master item for tracking the work necessary to add VB support.
To see all related items that need to be done see here.

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Oct 28, 2017

Collaborator

VB.Net support is now available in the nightly builds.
If you use VB.Net your assistance in verifying what they produce will be greatly appreciated.
Instructions on installing the nightly build version of the templates can be found here.
Please raise issues for anything you find that is wrong, broken, or could be improved and tag them VB.

Collaborator

mrlacey commented Oct 28, 2017

VB.Net support is now available in the nightly builds.
If you use VB.Net your assistance in verifying what they produce will be greatly appreciated.
Instructions on installing the nightly build version of the templates can be found here.
Please raise issues for anything you find that is wrong, broken, or could be improved and tag them VB.

@mrlacey mrlacey modified the milestones: 1.5, 1.6 Nov 26, 2017

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Dec 12, 2017

Collaborator

I think we're almost there. There is still more automated testing to add and I'll continue to port new C# pages/features and improvements but VB support is ready for your feedback.
You can see the tool in action if you have the dev-nightly build installed (https://github.com/Microsoft/WindowsTemplateStudio/blob/dev/docs/getting-started-extension.md#nightly--pre-release-feeds-for-windows-template-studio) or run from source on the dev branch.
Alternatively, you can look at examples of generated projects at https://github.com/mrlacey/wts-vb-demos
There are nine projects, one for each combination of supported framework (code-behind, MVVM Basic, & MVVMLight) and project structure (blank, pivot & tabs, & Navigation Menu). Each project also includes an instance of all pages and feature options that are available.

@Nukepayload2 @Afanyiyu @graymatter00 @hannespreishuber & anyone else, I'd love if you could take a look and let us know what you think. Any and all feedback appreciated, no matter how big or small.

Collaborator

mrlacey commented Dec 12, 2017

I think we're almost there. There is still more automated testing to add and I'll continue to port new C# pages/features and improvements but VB support is ready for your feedback.
You can see the tool in action if you have the dev-nightly build installed (https://github.com/Microsoft/WindowsTemplateStudio/blob/dev/docs/getting-started-extension.md#nightly--pre-release-feeds-for-windows-template-studio) or run from source on the dev branch.
Alternatively, you can look at examples of generated projects at https://github.com/mrlacey/wts-vb-demos
There are nine projects, one for each combination of supported framework (code-behind, MVVM Basic, & MVVMLight) and project structure (blank, pivot & tabs, & Navigation Menu). Each project also includes an instance of all pages and feature options that are available.

@Nukepayload2 @Afanyiyu @graymatter00 @hannespreishuber & anyone else, I'd love if you could take a look and let us know what you think. Any and all feedback appreciated, no matter how big or small.

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Dec 13, 2017

Member

AWESOME!!!!

Member

crutkas commented Dec 13, 2017

AWESOME!!!!

@aarondglover

This comment has been minimized.

Show comment
Hide comment
@aarondglover

aarondglover Dec 14, 2017

THANKYOU! Can't wait to test with VB!

aarondglover commented Dec 14, 2017

THANKYOU! Can't wait to test with VB!

@crutkas

This comment has been minimized.

Show comment
Hide comment
@crutkas

crutkas Dec 15, 2017

Member

@aarondglover you can test right now! Follow @mrlacey instructions to install the dev nightly!

Member

crutkas commented Dec 15, 2017

@aarondglover you can test right now! Follow @mrlacey instructions to install the dev nightly!

@mrlacey mrlacey modified the milestones: 1.6, 1.7 Dec 19, 2017

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jan 9, 2018

Collaborator

Changing tags as I think it's now all there.
continuing with final verification testing prior to release at the end of the month.

Collaborator

mrlacey commented Jan 9, 2018

Changing tags as I think it's now all there.
continuing with final verification testing prior to release at the end of the month.

@mrlacey

This comment has been minimized.

Show comment
Hide comment
@mrlacey

mrlacey Jan 15, 2018

Collaborator

I'm continuing to test this functionality (both manually and with new automated tests) but I think it's good to go.

Collaborator

mrlacey commented Jan 15, 2018

I'm continuing to test this functionality (both manually and with new automated tests) but I think it's good to go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment