mvextensions / mvbasic

MultiValue Basic extension for Visual Studio Code
MIT License
30 stars 16 forks source link

[FEATURE] Separate connectors from core MV Basic extension #120

Open itsxallwater opened 4 years ago

itsxallwater commented 4 years ago

Is your feature request related to a problem? Please describe. Originally, the hope was that remote file system connectivity could be abstracted to a standard REST representation of the file system. MV Gateway and AccuTerm subscribe to that (though admittedly the former has some issues at the moment with the changes made here). The newly announced Linkar extension uses an entirely different API and thus is wrapping a forked version of MV Basic. This will prove harder to support for the community.

Describe the solution you'd like Separate the connectivity functionality from the core of MV Basic. This extension would be left to act as the linter, syntax highlighter, IntelliSense and snippet provider whereas new extensions would be created to provide connectivity (i.e. MV Gateway, MV AccuTerm, MV Linkar). We could provide bundled offerings (Microsoft allows you to bundle multiple extensions for premium user experience) so we could publish MV Basic (alone) and MV Gateway (w/ MV Basic) and MV AccuTerm (w/ MV Basic) and MV Linkar (w/ MV Basic) with the inclusion of MV Basic for each bundle referencing the same core extension.

Describe alternatives you've considered Stay the course and leave fork maintenance to each of the forking groups, but that's antithetical to the whole reason we spun this bad boy of a community up.

Additional context No screenshots. The Linkar extension is quite nice, their file system representation is aces and they've made a few improvements to MV Basic which we'd do well to adopt here. The team is on board so really just memorializing the idea here.

itsxallwater commented 4 years ago

Tag @kosday @pschellenbach @dthiot @JeffTeter per the discussions we've had :)

itsxallwater commented 4 years ago

I am intending on getting at this but it may be a week or two. The job to be done is primarily comparing https://github.com/mvextensions/mvbasiclinkar with https://github.com/mvextensions/mvbasic and working out comparisons and code splitting, plus creating new repos to act as the homes for MV Gateway and MV AccuTerm. One other benefit of this effort: smaller extension sizes, since we won't continually be baking in support for every new connector to the core repo. And vanilla MV Basic would be left quite compact for folks who want to use it standalone, locally to a system, with one of the Remote Extensions from Microsoft, or with a nice SFTP CI/CD pipeline like @ianmcgowan.

itsxallwater commented 4 years ago

Note: https://code.visualstudio.com/api/references/vscode-api#extensions for context on how one extension can expose an API and another extension can consume it. This will be relevant for code splitting the extensions and allowing them to talk to one another when present.