Closed phaumer closed 2 years ago
After a discussion, we've decided to at least prepare with Yarn.
Any dependency scans that are run for Zowe Explorer, they would have to be extended to support Yarn lock files.
Currently the Jenkins file depends on the project being npm. We'll have to use more generic libraries that the Theia pipeline is using.
Extract the publishing script out of the Jenkins file into its own file.
*Dan is working to convert also the Theia pipeline to a GitHub Action. A PR will be (re-)open(ed) eventually.
Link to Zowe project's conformance criteria sheet: https://ent.box.com/s/hqzfsia30z09hsjo8gj40kunhjaw9ebj
The following kinds of extensions can be certified for Zowe Explorer. One extension offering needs to comply with at least one of these kinds, but it can also be in several or all of the kinds listed. In addition to fulfilling all the Required criteria for at least one kind (1 to 3), the candidate extension also needs to fulfill the required criteria of the (0) General category.
Every conformance criteria needs to be clearly scoped, defined, and objectively verifiable. We therefore specify the following in each of the criteria descriptions below:
These criteria are independent of the kind of extension produce and need to be fulfill for all cases.
zosmf
then the extension must not make any assumptions that a matching Zowe CLI plugin has been installed in the Zowe Explorer user's environment. In other words the extension must be full self-contained including all the code of the Zowe CLI Plugin that implements the new profile. This will not only simplify the end user experience, but also ensures that the extension can run in other VS Code compatible environments such as Cloud IDEs such as Eclipse Che. For VS Code extensions Zowe Explorer provides APIs to call that ensure that the users can store and access such new profiles in Zowe home directory folders and secure credentials store, which should be used or an equivalent needs to be provided. To test this requirement a user shall be able start the extension and use it without having Nodejs and Zowe CLI installed locally.A Profiles Access extension is a Zowe Explorer extension that uses the Zowe Extensibility API to conveniently access Zowe CLI profiles loaded by Zowe Explorer itself. This allows the extension to consistently access profile instances of specific types, offer them for edit and updates as well as common refresh operations that apply to all extensions, add more profile types it is using itself for its own custom views (for example a CICS extension adding a CICS explorer view) and other similar use cases related to Zowe CLI profiles. These extensions do not have to be VS Code extension if it just wants to use ProfilesCache implementation of Zowe Explorer as all APIs are provided free of any VS Code dependencies. Such an extension could be used for another non-VS Code tool, a Zowe CLI plugin, a Web Server or another technology. However, to access the profiles cache of the actual running VS Code Zowe Explorer the extender needs to be a VS Code extension that has an extension dependency defined to be able to query the extender APIs. Therefore, some of the criteria that are listed here as required are only required if the extender is a VS Code extension.
"extensionDependencies": [
"Zowe.vscode-extension-for-zowe"
],
ZoweExplorerApi.IApiRegisterClient.getExplorerExtenderApi()
API as documented in the Zowe Explorer extensibility documentation. API calls to the Explorer Extender API will be logged by Zowe Explorer and be verified by inspecting Zowe Explorer log files.zosmf
then an extender needs to call ZoweExplorerApi.IApiRegisterClient.getExplorerExtenderApi().initialize(profileTypeName)
(TBD) as its first API call to ensure that the profile type can be supported. This call ensures that the profiles of this type can be successfully managed even without the Zowe CLI plugin being installed locally for pure VS Code users as well as that the profiles can successfully be accessed in the secure credentials store. This registration call will be logged by Zowe Explorer and be verified by inspecting Zowe Explorer log files.A data provider Zowe Explorer extension provides an alternative protocol for Zowe Explorer to interact with z/OS. The default protocol Zowe Explorer uses is the z/OSMF REST APIs and data provider adds support for another API. For example, the Zowe Explorer extension for zFTP, which is maintained by the Zowe Explorer squad is an example for a Zowe Explorer data provider extension that uses FTP instead of z/OSMF for all of its USS and MVS interactions. To achieve such an extension it uses a Zowe CLI Plugin for FTP that implemented the core interactions and provided them as an SDK andd
ZoweExplorerApi.IApiRegisterClient.registerMvsApi()
call the APIs passed as a parameter needs to use a unique profile type name. Such registration events will be logged by Zowe Explorer and can be used to verify to successful implementation of the requirement in the Zowe Explorer logs.Error.message
property of the exception that Zowe Explorer will display in a dialog. "Not yet implemented by the XYZ data provider" could be an example. Registering a new data provider API instance will be logged by Zowe Explorer and be be verified in the Zowe Explorer log files.For team discussion: We currently only have documented for how to add context menus, but not how the commands that implement the menu can actually access the node on which the click occurred to determine all the information needed (e.g. the data set member name and the profile of the node). We need to implement and provide an API for our tree browsers to properly support this and prevent users for just hacking the tree views themselves. Until we have such an API perhaps this extensibility kind needs to be postponed.
Created a PR to manage the comment above under source control with PRs: https://github.com/zowe/vscode-extension-for-zowe/pull/1290
Closing. See #1791 for remaining work on this.
As a Zowe Explorer Extender I want to import a well-defined and documented extensibility API that I can use to build my VS Code extension and that I can then certify as Zowe compliant to provide value-add capabilities to Zowe Explorer.
To support a set of well-defined extensibility APIs and compliance rules for extenders the following work packages need to be completed:
1. Refine scope of Extensibility API and fix issue and implement high priority enhancements
Zowe Explorer already provides several ways for extenders to extend it.
api
source folder provides inZoweExplorerApi
interfaces and a registry for extenders to implement the z/OS interaction for MVS, USS, JES using alternative protocols such as FTP or SSH.ZoweExplorerApi
an interfaceIApiExplorerExtender
and a default implementation inZoweExplorerExtender
for extenders to access cached profiles and profile links.In addition to the current extensibility mechanism there a list of shortcomings or issues to be solved for Extenders:
.zowe/profiles
.There is also a list of enhancements and refinements extenders have already requested:
Get.dataSet()
so extenders can stream data into their own buffers.(Issue #730) Profile linking refinements: The profile types drop-down does not always show the relevant list of types.(See issue #1280.)getQualifedResourceName()
method to API.2. Extract API code into its own NPM package for extenders to include
That npm package should also include all code that makes sense for extenders to reuse such as loading profiles from the file system, loading imperative settings files, and loading keytar dependencies to enable using the secure credentials plugin.
3. Define Extensibility API governance for Zowe Explorer contributors
In addition to the documentation of the API we also need to established rules for governance of the APIs for Zowe Explorer developers for changing the API. We should use the rules of semantic versioning and apply them to our APIs. For example,
4. Define Extensibility Conformance rules for extenders
Proposal to provide different sets of criteria for extension for
An extender can then claim for conformance to one or many of these four. For the 1.x releases I think we can only provide conformance rules for (3). For 2.x we should carefully design the extensibility and criteria for the other three.
See this Comment below for a proposal for how the compliance criteria could be defined for the public.
Initial Groundwork
Next Steps for Q1/2021
Next Steps for Q2/2021