An Expanding and Evolving Open-Source Community for IBM i Developers
Arcad Software's Sébastien Julliand on being a project contributor for VS Code for IBM i
This transcript is edited for clarity.
Charlie Guarino: Hi everybody. Welcome to TechTalk SMB. I am delighted to be sitting here today with Sébastien Julliand. Sébastien is the R&D technical advisor and project manager at Arcad Software. Additionally, just this year, I am happy to say that Sébastien was nominated and selected to be an IBM Champion, so congratulations on that, Sébastien.
Sébastien Julliand: Thank you, Charlie. I’m thrilled to be here. Thank you so much for inviting me.
Charlie: Sébastien I’m so happy that you’re here because we’re going to be talking today about a topic that I’ve been hearing so much about lately, and it was important to me to bring somebody who is so close to the topic. I’m talking about VS Code for IBM i. I know you are one of the larger contributors to this project and I wanted to talk about that specifically. Can you tell me before we even get involved with what the tool can do—like, what does it mean? What do you do with VS Code with IBM i? What’s your involvement with it and what does it mean to be a contributor to this project?
Sébastien: Well, being a contributor, it means that you will try to bring value to this project. Since it’s an open-source project, anybody can contribute to it, but being involved in this means I can contribute new ideas, new features to this wonderful project. That means so much to a lot of IBM i developers. So being involved is like coding a new feature or trying something. You know, if you think about something that would be worth implementing that everybody might like, you can submit an ID or even submit some code, implement it yourself, and add it to the project. That’s what I love about this being open source and being open to the community.
Charlie: How did you get involved with this tool? What was your interest in getting so involved as you are with this project, with this tool?
Sébastien: I guess it started a year and a half [ago] now. I had the chance to meet Liam Allan. You might know him. He’s not very well-known [laughs]. I had the chance to work with Liam professionally on a common project for IBM and well, I took interest in Code for IBM i because it was this open-source extension that was bringing IBM i development to VS Code. I’m a developer myself and I was learning the typescript language, the one Code for i is being written in, and so I think I could contribute to this. I feel confident that I can involve myself in this project and bring some value because so far, I couldn’t give a session or whatever and that was for me the perfect opportunity to give something back to the IBM i community through this open-source project. So I decided to start with a small contribution, about 6 days, and then I started to improve the code, clean a few pieces of code here and there, and I got involved more and more. And then I got to meet the core team, which is comprised of Liam, Christian Jorgensen, and Joseph Wright. You know them all and now there’s me and yeah, it’s a very interesting experience because you get to write code, you get involved with people as well. Yeah, it’s a really great experience. I will carry on with this for years to come, I guess.
Charlie: You mentioned a term there that piqued my interest, and that is core team. Because we know that anybody can really contribute—you know, submit ideas or contribute code. But there is the concept of this core team. What exactly does that core team mean in this context?
Sébastien: So on Code for i, the core team is a team of people that are responsible for managing the project. Anybody can contribute anything to the project, but at some point it needs to be reviewed and someone needs to decide if this is going to make its way into the extension or if something else should be implemented. So we are the team that does that. It means that one of us can review or pull requests. So if someone wants to contribute something, he can just open a pull and submit pull request so we can review the code, make sure it’s compliant with what we usually do in the extension. So we review the code and if it’s good, we can merge this pull request into the main branch of the project, and we usually also are the people most engaged with replying to issues or answer questions and even ask people to participate and get involved into the project. So this is what the core team is, and since we’re writing the code for the extension and being the most active in the project, we are also the most knowledgeable about what it can do and cannot do. I know for example that whenever we have CCSID problems, Christian will step right in and answer the question because he is very, very, very used to touching CCSID issues. He loves that.
Charlie: Sébastien, one thing I noticed is when I open up VS Code, very often there are updates to be installed and you know, restart required, reload required. But that’s not an uncommon event and it seems that this is a very dynamic project and there are always new things to be installed. Can you speak to that? I mean are these fixes, are they enhancements, or is it a combination of all different things?
Sébastien: It’s a combination of all that. Sometimes during the day VS Code wants to update something twice or three times or whenever an extension gets updated on the marketplace. You get a notification that something is ready to be updated. It doesn’t ask for your permission. It says okay, you should restart because something got updated here and it’s going to be nice. So these are the extensions and VS Code itself usually gets an update every month. So you have an update named after the month we are in and once a month VS Code updates itself, but as far as the extensions are concerned, it can update whenever they need to. Sometimes we publish a release twice in a day because we fixed a bug and then we found another one that was a breaking bug and we fixed it right away and made a new release. Making a release, it takes no time at all, like 2 minutes. We just click on 2-3 buttons in GitHub and then we have a CICD process that publishes a release for us. So that’s why we can be very reactive to whenever something bad is found in the extension.
Charlie: Right. So the core team subscribes to a very Agile methodology.
Sébastien: Yeah, we do.
Charlie: Which is continuous integration, continuous improvement, things like that. It’s wonderful. CICD, you mentioned that already. Perfect. How do people find out when there’s a reload required, restart required, because of a push of an update? If I was curious to see what that is, how would I find out what was being updated?
Sébastien: For now, your best chance is to check out the GitHub repository. There is a release page on GitHub for each project and you can check out the release notes of the latest version. You have the history of every version, but the latest release would be there. You have the release notes based on every pull request that’s been merged since the last release. This is also something that is provided by GitHub and now when we have significant updates, we also try to advertise them—for example over LinkedIn to put the spotlight on the next cool feature that’s been published. If we have only bug fixes, we might not talk about it, but if there is a nice features that’s been implemented, you can be sure that one of us will talk about it on LinkedIn because it would be a shame to miss it. Maybe in the future—I’m teasing a little bit—we’re thinking about implementing a what’s new page that will open itself when something important gets updated in VS Code.
Charlie: That would be very helpful too, of course. So Sébastien, you and I are talking here as if whoever is listening to this podcast has an understanding on how to even get into the product and how to use it—go to the project or the project extension that they have some familiarity with it. But if I was somebody after hearing this, saying wow, this is something I want to explore, I want to look at, what would I do? How would I get started into just begin using this and what do you think might be the learning curve to actually get started to become productive?
Sébastien: I guess it doesn’t take much to get used to using VS Code and Code for IBM i to start doing stuff on IBM i and using it as your daily driver for developing on IBM i. I mean what you need to do basically is download VS Code, install it on your Mac, your PC, whatever your operating system is. It runs on Mac, Linux, Windows, so you install it and from there you just go to the extension view. Just typing in IBM i might be enough to find an IBM i developer extensions package. That groups all the extensions you need to get started, so you just install this, and as extensions in VS Code are quite lightweight, it will just take a couple of minutes to download and install. You will just have to restart VS Code and you’ll be ready to go. You will have Code for i up and running in VS Code. You will create a new connection and then you’ll be ready to go. We even have a direct link to the online documentation in the extension so you can see how to get started, how to create a filter, how to browse your objects, find your source members, browse the IFS. All of this is documented online and some people have been creating tutorials on YouTube as well, so you can find tutorials on how to get started with Code for i. All in all, I guess it takes 5 minutes to get started and you get all the resources online.
Charlie: And it’s a truly a community-driven project.
Sébastien: It is. We have many, many, many people involved in this directly or indirectly. I mean we don’t oversee what’s going on on YouTube or whatever. We just take care of the extension and whatever spawns around the extension is out of our reach, but it’s been growing fast. As I said many people are making videos on YouTube on how to do this or that using Code for i, and that’s so interesting. I guess that if somebody is interested in trying it, it takes, yeah again, 5 minutes.
Charlie: You said lightweight. That’s an interesting term, but it can install on even the most basic of pieces of hardware it sounds like.
Sébastien: Yeah, it doesn’t take much resources to run VS Code. I’ve even managed to run it on the Chromebook, which is not a very powerful laptop, but it runs okay. I could install VS Code and work on Code for i and connect to an IBM i and create some RPG programs from there, and even if you don’t have a very powerful PC, there is an extra feature that is very interesting. Do you know about code spaces on GitHub?
Charlie: Yes I do, but explain it to those who are listening, please.
Sébastien: Sure. So when you are browsing a GitHub repository, you can open a code space in your browser to work on this repository. What happens is when you request code space, it spins up a virtual machine on GitHub.com that will run a browser-hosted instance of VS Code. So you have VS Code right into your browser and you can install extensions in it, which means that you can install Code for IBM i in this web-based VS Code and start using VS Code in your browser. You need to be able to connect to an IBM i from the internet, but you can at least try it with Pub400, which is publicly accessible. You can create a new code space, install Code for i in it and try it. And when you are done, you can delete the code space.
Charlie: You mentioned Pub400. That’s free IBM i access that we can get to create a GitHub instead, and we can certainly point to that system and have a complete IBM i environment to do testing on.
Sébastien: Yeah, exactly. It could be like a send box if you want to try something, and then you can discard the code space. It’s fine.
Charlie: Let’s get into this a little bit more because we’ve been talking more on the boundaries or the periphery of this. Let’s get into some of the features. I know it’s difficult to discuss them in absence of a video to go along, but I think we can certainly talk about some features that you’ve been working on. Maybe a favorite feature or what might be some of the coolest things you’ve worked on either in the past or maybe more recently, maybe what’s just come out.
Sébastien: Well, I can think of a few cool features, well some I’ve been working on, so I’m quite proud of them and I hope people will find it useful. For example, I implemented drag and drop support in the IFS Explorer, which means that now you can download files or upload files to the IFS from your explorer. So you can drag and drop a file or a folder or whatever and upload it through VS Code into the IFS.
Charlie: Right from your desktop.
Sébastien: Right from your desktop. That’s it. You take a file, you put in in there and it will be uploaded on the IFS. Now you can also use this drag and drop in the IFS browser as well if you want to reorganize your files. It’s quite convenient. What else do we have? Christian worked on something that allows you to browse very quickly the content of your source file if you are looking for a member. So there is like a very fast content assistant that’s built in base code, and if you’re looking to open a source member, you can just start typing its name and it will make some suggestions for you. It’s quite fast so it’s very, very convenient if you want to open a source member on the fly. You just type its name in the top search bar and it will find it for you very fast. Globally what I like about VS Code is that it’s so fast when you are trying to browse or look for something. The interface is clear and we try to keep it simple and in turn yeah, it’s really fast. It’s really fast. Whatever you do, if you browse the IFS or browse QSYS, it’s always quite fast and responsive.
Charlie: I’ll tell you one of my favorite things, or one I think is very cool, is that you can run SQL directly from the CL editor.
Sébastien: Indeed, you can do that now. We’ve been talking about Code for i but there is an actual ecosystem. There are a few other, let’s say child extensions to the main extension. Like the Db2 extension which is still a pre-release, but I know a lot of people are using it to get access to SQL and run SQL queries right from VS Code, which is also very convenient when you’re developing something. I use it when I’m developing Code for i because we are using the IBM services that run through SQL. So when you need to try something on the fly, what’s better than running it from the IDE?
Charlie: You mean anchored in the IDE.
Sébastien: Anchored in the IDE.
Charlie: Yeah, I agree with you. I know like there are some refactoring features in there also that I like.
Sébastien: Yeah, there are. Most are in the RPG extension, I guess. It brings a lot of useful features, like refactoring as you said. There are also some very useful cut snippets. If for example you create a new program, you can create what’s needed to declare a new cycle-less RPG program, so there is a snippet for that. You just hit control space, select the main snippet and it will create whatever is needed to do that and you can start coding right away.
Charlie: It will literally insert a whole block of code for you to start typing with.
Sébastien: Yeah, exactly. It will declare the main procedure and name it after the source member so you can just get started right away. You don’t have to worry about remembering how to do all this.
Charlie: If I was using the tool and I thought to myself hey, wouldn’t it be great if this new feature existed, if I had what I think is a great idea, wouldn’t it be great if it did this, whatever that happens to be, how would I get that information to you? Do I email you? How do I submit that idea to you if I’m not going to code it myself? How do I let the core team know that this is something that I think should be implemented into the project?
Sébastien: The best way to do this is to get over to GitHub on the Git repository. First you can try the discussion—not about an issue but for example if you have this very cool idea and you want to share it with the community, because eople can then vote your idea. So you can create a new issue on the Git repository and at the label idea or announcement, then describe the idea that you have. Then usually a discussion ensues and someone will eventually pick it up in the core team or not. I mean everybody is free to submit code and we are more than happy to help newcomers submit code and help them understand the extension architecture or just typescript itself. It’s always so nice to see new people contributing to this project so yeah, to get back to your question, the best way to submit an idea is to go on GitHub and create a new issue.
Charlie: VS Code is really built to support extensions. That’s how you really, I guess, customize it to be most productive for yourself, but if you go to the marketplace, there are so many different extensions that you can download that might be helpful as well—not just using Code for i. Are there any particular extensions that you say this is a must have? It’s not one that we’ve created but it is something that we should have as part of your basic tool set? Are there any extensions that you can recommend or just talk about?
Sébastien: Well, the first one that comes to my mind is related to Git, because since Git is supported on IBM i and there is a whole methodology on how to use Git on IBM i, there is the code lens extension for Git. I guess it’s Git code lens—can’t quite remember, but the code lens is a feature built in VS Code. This is an API that lets you provide code lenses for your code and this creates some links in the code itself. For example for this extension, it will add a few useful links related to changes made through Git in your source code. So you can have your RPG code that was synchronized on Git and for a specific line, you can see who changed it recently and what was the history of the line and features like that, but the Git is integrated in the editor itself, so you don’t have to go outside of the editor. You stay in the code and you have this right here.
Charlie: One of the topics that has really captured my imagination for this year—and I’m sure I’m not alone, it’s on everybody’s mind now, is AI.
Sébastien: Sure.
Charlie: Certainly, within VS Code, there are ways to have it complement development. I’m thinking of [GitHub] Copilot specifically. What can you say about that? You know, how might Copilot be helpful for anybody who’s developing using Code for i?
Sébastien: Well, the first use case that comes to my mind would be to ask Copilot to give me the code to call a specific RPG API, because it’s always the same code over and over again. But you need to remember the prototype and what the parameters are, so declaring the same procedure over and over again will never remind it. You know I always forget how to read an entry from a data cue using the API, so you can just go and ask Copilot or ChatGPT or whichever you like how do I call this API in RPG on IBM i, and that will save you a lot of time because it will spit out this snippet and it will be ready to go. You can even ask for some other lines of code, for some examples—you know, just to get the general idea on how to do this in RPG. You can say okay, I have a table and I want to read the five first entries in my RPG program. How do you do that? This is something that can be really helpful on a daily basis to save you some time, to not repeat not very useful code over and over again and focus on what matters, on the business logic.
Charlie: I know one of my favorite things in using one of these AI tools is highlighting a block code and saying what is this actually doing, and it will then explain to me exactly what it’s doing, which is just completely fascinating to me.
Sébastien: Yeah, yeah. I must agree that if you haven’t written this code, that’s very useful.
Charlie: Yeah, especially very complex code. It helps break it down for you, which is just amazing to me. It’s mind boggling what it’s capable of doing. It’s amazing. I don’t know how else to describe it.
Sébastien: And from the IDE, you don’t have to leave your editor. You can just ask for it while you’re typing your code.
Charlie: Yeah, well it’s here to stay, which is amazing.
Sébastien: I guess.
Charlie: That’s pretty cool. So, I guess we can start wrapping up our conversation here. You might have hinted at it already, but do you have a particular favorite part of working on the project? As a developer working on the project itself, what’s your favorite thing about that? Is it maybe the tool itself? Working on the development cycle? You know, maybe the community? What’s your favorite part of working on this project?
Sébastien: I love the enthusiasm that surrounds the project. I guess motivates me the most is that when you implement a new feature and you submit a new feature, people being very enthusiastic about it, seeing the added value that it will bring when they are using the tool on a daily basis. That’s really nice, and talking about what we should implement with the core team and arguing if this is good or this is bad, this should be done, this is always very, very interesting. We always have some very interesting chats about what should be done and what is the next feature we should be focusing on. It’s always fun. That’s the bottom line. For me it’s really fun to write a new feature and see if coming to life and quite quickly, because it doesn’t take much to add something into VS Code, which is what I like. It’s the simplicity of the API and it lets you implement new ideas really, really fast, and I love that.
Charlie: So what would be your final piece of advice to somebody who is still using a green screen editor—SEU, for example. What’s your advice to them to start using more modern tools? What would be your advice? If you had a chance to speak to these people directly, what would you say to these people?
Sébastien: I would say don’t be shy. Give it a try. It’s worth giving it a try. It doesn’t require much investment on your part. You can just install VS Code, install the extension and give it a try, see how easy you can get things done in a modern and fast interface. I’m the first one that likes to use a command line because it’s easy and fast depending on what you need to do, but when it comes to coding, I like to have a modern IDE, a modern editor. So it’s worth trying it at least. I know that some people really like SEU, but VS Code is meant to be simple, Code for i is meant to be simple. So it is worth giving the extension a chance.
Charlie: Yeah, and for today’s demands that are on developers to write modern code, things like that, SEU is just not the way to go anymore. It’s outdated. It just doesn’t support what we need to do to develop new modern code.
Sébastien: That’s true. You won’t attract any young developer [using] SEU. There is no way. There is no way. What you need to show them is modern RPG, so it would be Free RPG, the IDE they use to learn how to program in school. So when they will be looking for a new job, if they see somebody talking about developing on VS Code, if it’s for IBM i or not, it’s fine. At least they will be attracted by what they see, and what they see is a modern language, Free RPG, on a modern IDE, which is VS Code.
Charlie: Which would certainly help just dispel so many of these silly myths that we’re working on an old machine. This is as modern as any machine I’ve ever worked on.
Sébastien: Yeah, I know a few companies that hired young people to work on RPG, but they would just give them the modern IDE and told them okay, you need to change this piece of code, just work on this. They didn’t ask any questions and they didn’t tell them that they were going to be working on IBM i [on] the back end and it used to be call AS/400, etc. They didn’t ask any questions. After a few weeks, they were told what was behind the IDE, but at first all they saw was this modern code and it wasn’t so different from PHP or C++ or whatever. So they didn’t mind working with RPG, which is a pretty cool language.
Charlie: Yeah, absolutely. Sébastien, what can I say? We’ve been talking about VS Code, Code for IBM i, and this has been great. We didn’t do a deep dive into the product, but I think this gave a lot of good insight into how the project works, how it’s supported, things like that. So thank you very much and just from me to you, thank you for your time commitment that you’ve said you put into the project. I think it’s very evident for anybody who uses it that they can see the fruits of all your labor. It’s really amazing. It’s quite fascinating to me.
Sébastien: Well thank you, Charlie. That’s very nice and I’ve been thrilled to be recording this with you, and I really hope that I can get people motivated to use VS Code and try Code for i.
Charlie: Well, we’ll see. I think it’s on a good path. So thank you again for that and thank you again for your contribution even to this podcast. And one more time, congratulations on being named an IBM Champion for this year. That’s quite an honor to be bestowed on anybody, and I think you’re very deserving of that title, so congratulations that as well.
Sébastien: Thank you very much. Congratulations to you for being a returning Champion for, whew, how many years now [laughs]?
Charlie: It’s been a while, but I’m grateful every year for the recognition, and what I said to you I say to myself as well. It is quite an honor, and the recognition is really wonderful to have that by IBM, so thank you.
Sébastien: I agree. It’s been overwhelming, and I’m just a baby Champion for now.
Charlie: A baby Champion [laughs]. Okay, that’s a good, interesting term: a baby Champion. I like that. All right. Well anyway, Sébastien, it’s been a true pleasure. Thank you very, very much. I always enjoy chatting with you. Thank you.
Sébastien: Likewise.
Charlie: I look forward to seeing you in person again at some point soon, hopefully.
Sébastien: Oh yeah, whenever you want.
Charlie: Great and thank you everybody for hanging in there and listening to our podcast. We hope to speak to you again in the coming months. Thank you everybody. Bye now.