Hi,
I realize other shops work quite differently than ours does. Since we are a Natural for DB2 shop, I’m sure we have other considerations than Natural for Adabas shops do. And since we are also a PAC shop, we have to consider the application development life cycle we have working very well already on our mainframe as we implement NaturalONE as our new code development IDE in an environment in which many developers all work on the same large mainframe applications and in which dual development on the same single Natural object may need to occur from time to time. I would imagine that shops which use N2O also have the same considerations to make.
These are the reasons we chose to implement NaturalONE first in server mode. In our shop, PAC is our one and only source of truth as far as the version of source that gets compiled and deployed to our Acceptance/QA Test and Production environments.
Developers check out the Production to start coding a new release for a module. They work on that checked out version in Development Natural and, when the changes are ready, they compile it back into PAC. PAC stows the object so as to keep a matching S/C (source and cataloged object) in its repository, and then deploys this new version to the Acceptance/QA Test environment for the business user to verify. While this new version is being developed and/or tested, another quick fix might need to be done to the version that is still in Production and that fix might need to go into Production before the new release that the business user is testing is ready. So the application life cycle must accommodate this. Our programmers use a Maintenance environment to perform quick fixes to Production code that must get deployed into Production before the “next release” code being tested by the business user is ready to be deployed to Production. They also communicate the “Maintenance fix/change” to the programmer responsible for the “next release” change to ensure the “Maintenance fix/change” gets incorporated into the “next release” version before the business user approves the next release getting deployed into Production.
Our programmers have been extremely productive used this application life cycle on the mainframe for many years. So introducing a new development IDE has to come with the fewest shifts to the way they are used to working until they learn the new IDE features and functions.
Where we struggle with introducing use of a git, or other, source versioning repository is how to map the git source versions to the PAC versions. Which git version number relates to the current Production PAC version and which git version number relates to the new release version which PAC just compiled and deployed to the Acceptance/QA Test environment?
PAC knows which compiled version in its repository is in each Natural runtime deployment environment. I’m not sure how git would know which git version has been deployed to each of our Natural deployment environments using the PAC compile and migrate process so that the programmers would know which git version to grab to start a “Maintenance change” as oppose to which git version to grab to start additional changes to the “Next release” version of the source.
PAC ensures that the same version it compiled and deployed to the Acceptance/QA Test environment and got tested by the business user is the exact same version deployed to Production. No new version is “compiled into Production”. The exact version that was tested is unloaded and loaded into the Production environments with no changes to the code and no recompiles when deploying the code into Production.
I am not seeing how to integrate the git repository, or any other repository, into the PAC code compile and migration application life cycle process on the mainframe. But if anyone has successfully done this in an environment in which many programmers all work on a large mainframe application together, I would love to hear how the entire application lifecycle has been architected.
Perhaps SAG Development can pull in the git (or other repository flavors) source version numbers into the source compiled and managed by PAC? Maybe then there might be a way for the programmer to know they are starting with the same source whose compiled version is currently being executed in Production when needing to introduce a small fix to the code, or know they are starting with the same source whose compiled version is currently being executed in the Acceptance/QA Test environment as the next release version when needing to add more changes to the next release version before the user confirms the next release they approve to be deployed into Production.
Even if this is done, if PAC is still in the architecture to compile the new version of source that contains the fix and place the new S/C (source/cataloged objects) into its repository, the programmer would still need to check that version out of PAC before migrating it back into PAC Control to get it compiled….at least in our current application life cycle.
Looking forward to more discussions on use of source versioning repositories such as git with NaturalONE. I always wanted to be a “professional student”, and working in IT, we all get to be just that. I love learning new ways to do things….as long as the new methods improve the end result and don’t degrade the end product.
This is my “ten cents”….a bit more than two cents I think. Lol.
Regards,
Kathy Jackson
Natural Administrator
Texas Comptroller of Public Accounts
(512) 463-4346
E-mail: Kathy.Jackson@CPA.TEXAS.GOV
z/OS 2.4 mainframe, DB2 V12
NAT911/NOC835/NSC911/NTI827/NDB842/NVS827
NCI834/CICS TS 5.4
NDV911/NaturalONE913 Fix#1/Software AG Designer 10.7
Natural Engineer 9.1
PRD851/PAC261/ADA852
EXX10.5(Broker Kernel in RedHat Linux 7.5 environment)
EXX10.3(ACI & RPC Servers in MF environment)