community
community copied to clipboard
Address Zowe dependency on IBM's evaluation copy of node.js
Zowe 1.21 and above has documented SYSTEM REQUIREMENTS for IBM SDK for node.js - z/OS (necessary for the HA capabilities). See: https://docs.zowe.org/stable/user-guide/install-nodejs-zos/#how-to-obtain-ibm-sdk-for-nodejs---zos
This effectively compromises the "vendor-neutral" Zowe requirement. We need a TSC-approved resolution to this situation.
Some of the proposals include:
- Ask IBM to "open source" it (long-term)
- Make it more easily accessible to Zowe consumers
- Rework (rearchitect?) Zowe such that it does not require node.js
Couple comments:
- For item 1, we need the Node open community to agree to recognize z/OS as a "supported" node platform. The term "support" in this context is open community support. (We assume this will require node community ongoing access to a z/OS box for build and test which maybe the OMP is willing to take on.)
- Item 2 is the near term focus - the understood requirement is SMP/E format (PAX is ok for dev/test but SMP/E is needed for production). We need to discuss if PSWI is an option.
- Looking for a language other than node needs to consider the Zowe install/config and HA but the portability of the code on z/OS and in containers (using some Linux operating system).
Other thoughts:
-
Vendor neutral dependencies can come either by there being no vendor (as-is open source) or there being multiple (in addition to IBM's nodejs, if there was another company doing the same)
-
Zowe has always required nodejs under certain circumstances, because components such as app-server and cli both utilize it. However, utility and scripts that drive zowe used to not require nodejs, and should return to that state as they are best not being tied to any system requirements for ease of use in cases where you only need C or Java parts of zowe on z/os.
TSC principle states:
We will keep Zowe vendor neutral. No company can claim that it owns Zowe. If we use technology owned by a vendor or company (e.g. z/OS) we need a very strong argument and a means to move away from that technology if the vendor intends to leverage the technology counter to our principles. Such technology also needs to be accessible to anyone wanting to participate and contribute to the Zowe project.
As noted, z/OS is one such vendor specific system requirement of Zowe. I don't think we have a "very strong argument" to move away from nodejs for app-server and cli components, since there's no alternative vendor of nodejs on z/os at this time. When that changes, it would be good to change our requirements from "IBM's nodejs required" to "a nodejs required".
As for CLI there is no need to move away from Node.js as the target environment so far isn't z/OS and outside of z/OS Node.js is safe.
I also agree with you, with respect to the app-server.
In the case of Node.js, the code and Support are only available from an ibm.com domain however the code is no-charge and fee support is optional. It might be better to say "freely accessible" in the statement above. I think our intent is to not force purchase of software from a vendor for Zowe.
It seems that for V2 the installation dependency will be removed, which would give us time.
-
Yes I am told Zowe 2.0 is planning to remove the requirement for Node.js on z/OS when configuring for HA. However, this is not yet closed - there is work to be done prior to LTS.
-
Node.js for z/OS will continue to be needed for Zowe App Framework when deployed on z/OS. (Other options exist for Node.js on client environments or container deployments.)
-
Since Zowe 1.0 is entering Maintenance Mode - it will still need Node.js for z/OS for selected releases that support HA on z/OS. These releases will be in support for the next 2+ years (i.e., there is no roll back planned to 1.0 of the Zowe 2.0 implementation)
-
Proposal - Since Node.js for z/OS will be needed, the blog referenced in the zowe.org documentation https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/blog-entry1/2019/04/17/how-to-obtain-ibm-sdk-for-nodejs-zos will be updated to remove the term "evaluation" copy and will say this identical code to the node.js for z/OS distribution BUT just without Support. This will continue to be free. It will continue to be an ibm.com domain address and licensed as non-warranted (aka "as-is"). The person downloading will need to establish a login ID.
-
Also there is work going on to make the ordering of the Node.js for z/OS in SMP/E format easier to order including the choice of download without Support.
Summary - SMP/E and PAX will be available for free - same code - PAX will not be called evaluation. The code will continue to downloaded from ibm.com domain for z/OS environments and customers will need to login - this is not out of the ordinary for z/OS software.
- What is status of eliminating the need for Node.js for HA install/config? Is it still in 2.0 plan? Can this be covered in upcoming PI Planning?
- Watch for easier ordering of Node.js for z/OS (SMP/E) in 2Q with updated blog on how to acquire (but will still come from an ibm.com site as it is not hosted by the Node.js community)
The need for installation will be removed with 2.1. The needed component wasn't fully rewritten by 2.0 to C
- Good job on the easier ordering. Thanks
Just a little summary on what I linked there: we have an enhancement pending for zowe-install-packaging which can eventually replace nodejs. However nodejs is used in a few places so while we've already reduced it we've not yet eliminated it. It's a work in progress but it seems we have a way forward, I'd guess we could see some reduction in 2.1 and potentially complete removal in 2.2 if people focused on it.
Thanks Sean - For the record (and I know I have said this before) we (IBM) are working to make node.js easier to acquire and we still have plans to update the blog (linked in Zowe doc) that points to the pax file of Node.js to say it is the same code as the SMP/E provided via Shopz. Testing of the new streamlined Shopz process is currently going on - what has delayed the implementation is Shopz is actually different in different geographies around the world.
What's the challenge with upstreaming the Node support for z/OS? We know the folks and could potentially help
Based on what I heard the upstream team didn't want to accept the zOS version of node due to the fact that the hardware to test it on is unavailable.
@armstro will know more details.
John – this is one of the reasons I keep asking about OMP obtaining a Z box for open source community to use for build and testing. Not just Node but multiple languages and tools. I also think you either will or already have spoken to an IBM DE named Mike Fulton that has another proposal.
Bruce
From: Jakub Balhar @.> Sent: Thursday, June 30, 2022 8:23 AM To: zowe/community @.> Cc: Bruce Armstrong @.>; Mention @.> Subject: [EXTERNAL] Re: [zowe/community] Address Zowe dependency on IBM's evaluation copy of node.js (Issue #1389)
Based on what I heard the upstream team didn't want to accept the zOS version of node due to the fact that the hardware to test it on is unavailable. @armstro will know more details. — Reply to this email directly, view it on GitHub ZjQcmQRYFpfptBannerStart This Message Is From an External Sender This message came from outside your organization. ZjQcmQRYFpfptBannerEnd
Based on what I heard the upstream team didn't want to accept the zOS version of node due to the fact that the hardware to test it on is unavailable.
@armstrohttps://github.com/armstro will know more details.
— Reply to this email directly, view it on GitHubhttps://github.com/zowe/community/issues/1389#issuecomment-1171152390, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AI6ZRG7NV4WC3277RMYZLFLVRWGRNANCNFSM5LXLHD5Q. You are receiving this because you were mentioned.Message ID: @.@.>>
@armstro Thanks for sharing, once the zBox for OMP is up and running, we need to share the info to the communities and see whether they will be willing to accept the zOS versions.
Meanwhile with 2.4 the default is to use the config manager that doesn't require Node.js for installation and keeping the previous method only as backup or for those who upgrade and doesn't want to use Config Manager.
@1000TurquoisePogs Hi Sean, the API ML currently has a dependency on nodejs during the install and configuration stage. In order to make the install of the API ML easier, we are exploring the option of removing this dependency by refactoring this piece to C. This is all notwithstanding the continued dependency on nodejs for other Zowe components such as the App Framework. We were thinking that Martin Zeithaml, from the App FRamework Squad, would be a good candidate to pick up this work in the next PI.
Please let me know if there will be any impact of using some of his capacity in the next PI? And maybe you know in which code base this existing nodejs dependency for the API ML lives?
@jalel01 I think it's a great idea if Martin were to work on it. To accomplish your goal, you are really saying "we want to provide an alternative to or completely remove nodejs in zwe", since that is the install & configuration program.
Keep in mind that since this issue was opened, the work that Joe & I started in 2.2 has already removed about 75% of the node that was in your way in the first place. What I mean is, we already have code that is well on its way to accomplishing the goal, and just needs to be further enhanced to finally get to 100%, which I can help Martin understand and plot out. C is involved, but not exclusively. The solution also highly involves typescript as it's faster to write quality code with guarantees and has a wider talent pool for future maintainers.
I think, Martin is already aware of the work done because it's often mentioned on webui and zos squad calls.
https://github.com/zowe/zowe-install-packaging/issues/2825#issuecomment-1267234537 and https://github.com/zowe/zowe-install-packaging/issues/3243#issue-1557259104 are good summaries of the technical aspects.
Searching for shell.exec https://github.com/zowe/zowe-install-packaging/search?q=shell.exec is a quick way to see the bulk of remaining node code that must be eliminated.
https://github.com/zowe/zowe-install-packaging https://github.com/zowe/zowe-install-packaging-tools
These are the 2 repos in which node code should be eliminated wherever the node code is utilized by zwe with no alternative. zwe is here https://github.com/zowe/zowe-install-packaging/tree/v2.x/staging/bin
Perfect, thanks Sean. In which Squad do you think this work should live? Thinking about where to write the objective for the next PI...
zowe-install-packaging resides in the systems squad, though the overhaul I mentioned had a lot of zos squad involvement, so the expertise & sometimes PRs lie between the two. There should be no problem with marking it as systems squad, and then getting agreement of knowledge sharing & coordination between the 2 squads, as we've done in the past.
The actual work is tracked here: https://github.com/zowe/zowe-install-packaging/issues/3543