[Nar.] What is the ‘Elias’ extension, and ‘project mode’?
[Seb.] Elias is our new VS Code extension that’s dedicated to managing projects. Developers work in what we call ‘project mode’ from the File Explorer, changing, and building IBM i source files in a ‘true Git’ fashion.
« With project mode, just like on any other platform, IBM i developers can collaborate on a single branch or multiple branches, each with their own workspace, and take advantage of Git’s optimistic process for conflict resolution. »
“Project Mode” in ARCAD Elias
We originally created Elias to bring ARCAD’s DevOps and CI/CD functionality to IBM’s Merlin. We know many customers don’t and won’t have Merlin, so we needed to enhance Elias to make it available to “any VS Code user”.
You can download Arcad Elias from the VS Code marketplace today.
[Nar.] What is the difference between Elias ‘project mode’ and distributed or centralized mode in Git?
[Seb.] Many people ask us this question. In fact project mode improves on regular Git distributed mode in that each developer works in his own “sandbox version”, allowing them to build and test changes from their local workspace before pushing them on the remote repository. These changes are then integrated in the version linked to the branch when a branch build occurs.
This contrasts with centralized mode where developers work on one version on one branch and everything goes into a single clone. With project mode, you get all the benefits of a full Git branching methodology on IBM i.
We’ve actually kept Elias flexible so that developers can choose to work either project mode or centralized. It’s a local choice.
Some organizations have chosen centralized mode as it is closer to traditional version control and shields developers from directly interacting with Git. Another reason is that source code ‘stays within the company’ rather than being cloned on each developer’s laptop. However, this negates the true benefits of using Git. With centralized mode, developers still need to check out components from a repository, which prevents other developers from also working on that component and creates a “pessimistic lock”.
« Now with ‘project mode’ in Elias, developers can work distributed, benefit from all Git features like three-way merge, traceability of each and every commit, pull requests and so on. They can also trigger a CI/CD pipeline, smart build, run tests and all the other automations available in ARCAD for DevOps tooling. »
And if exposing source code outside a private network is considered an issue, there are multiple ways to overcome this, such as virtual machines or running VS Code in browser-based instances like GitHub Codespaces. By hosting the development environment on servers while keeping the source code on prem, developers can benefit from the freedom of project mode without compromising security.
« Project mode enables a more flexible and efficient workflow. Developers can organize their code into folders with meaningful names, and group programs logically according to their function. This improves code understanding and is an easier step for younger developers. »
[Nar.] How do you get started working in ‘project mode’?
[Seb.] So there is this notion of ‘IBM i project’ in VS code. When developers are working on IBM i projects and ARCAD projects, they are actually cloning the repository, working on the entirety of the application. You have the whole ‘project’ in your Explorer. You’re not just checking out one component to work on. You’re have the entire application in your workspace.
« Project mode is flexible. It’s easy to use and you don’t have to worry about the IBM i specifics underneath. You clone the repository, start working on the branch, ask for a build or a compilation and the Elias extension takes care of it for you. Then ARCAD takes over and manages the build and the compilation, the cross-references and all that stuff. It’s just easy. It actually takes five minutes to start a new project. »
[Nar.] Which is the best Git branching model when using VS Code?
[Seb.] The project mode itself will not allow you, by default, to make modifications on the main or master branch. So, the preferred way of working is to have a release branch from where you create feature branches to work on. When you’re done with your feature you merge up into the release branch, build the release and that’s it.
But, at the end of the day, you can work however you want with the project mode. If you prefer to have one main branch and then create branches out of it, then merge them into the main branch. That’s fine too. But typically, in an agile way of working you’ll have very short-lived feature branches where you’ll work on one task. Then you’ll push this branch, build it, test it and once you are okay with it, you will create a ‘pull request’ so it can get merged with the main branch.
[Nar.] What does ARCAD bring to VS Code?
[Seb.] One of the main benefits of using ARCAD with VS Code is all the dependency metadata that ARCAD is built on. Now with Elias and Observer you can have some handy cross-references directly while editing, from VS Code’s “CodeLens”.
We currently contribute three types of CodeLens for IBM i: file, exported procedure, and imported procedures. Let’s say you’re working on a file that isn’t available for SQL yet, but you still declare it in a program. With CodeLens, you can directly access the file’s definition, fields, and cross-references from the source itself. Similarly, you can check the definition of an ILE procedure right inside the source code you’re modifying, without searching for it in the project.
Procedure Declaration Code Lens in ARCAD Elias
You can see where the procedure is imported from and its cross-references too. And if you’re working on the module that exports those procedures, you can see everywhere the procedure is used in the project from within the source code of the module itself. That’s very, very useful. You have everything in one place.
As well, ARCAD gives you cross-references between open system languages and ARCAD projects. So it’s easy to see the impact of a back-end application change on the front-end, like a Java class that accesses this table you’re about to modify.
Another cool feature with ARCAD is the ‘smart build’. If you compile a file, Builder will recompile the dependencies for you, all dependent programs. No overhead of building the entire application and no Makefile to maintain. That’s the main strength. The cross references are updated in real time, so you don’t have to worry about manually maintaining the dependencies between your programs and your service programs and your files and your procedures and so on.
You can also use the ARCAD Transformer extension to VS Code for converting any legacy RPG to Free Form (including the GOTOs!). And the CodeChecker extension checks for code quality and security flaws.
Elias itself is extensible. It serves as the foundation for the ARCAD extensions for VS Code. These extensions leverage the Elias REST API server to enhance the capabilities of Code for IBM i. As an ARCAD product, Elias provides the flexibility to extend and enhance the functionality as needed. The REST API server can also be utilized for other projects, and its web services are well-documented, so customers can build their own tools using the REST API.
[Nar.] Is VS Code really a paradigm shift, or just a passing trend on IBM i?
[Seb.] I believe VS Code IS a game changer for IBM i because it is a major leap ahead in developer experience. You install it, it starts right away and just works. It doesn’t eat all your resources. It’s free. The UI is simple, clear, and minimalistic. As a developer, when you open VS Code you’re not going to manage an application or something else or change operational settings on an application. No, you’ll be developing and modifying an application and that’s it. That’s the purpose of VS code.
Also, there are some best practices when developing an extension for VS code so that means it stays consistent. And if you install an extension, you don’t expect it to add a very complicated view with a lot of windows and features and explorers and stuff like that. You keep it simple using the VS Code API as much as possible.
VS Code with Git is the future on IBM i. It’s modern development on IBM i for real.
[Nar.] So we’ve talked a bit about VS Code on the IBM i, and how ARCAD plays a role. Are there any roadmap items you are excited to see roll out?
[Seb.] Sure – next on our feature list is adding ARCAD’s IBM i unit testing as a VS Code extension. We’re pulling in all ARCAD features one by one. Our goal is to deliver a modern developer experience and automate each phase in the DevSecOps cycle!