Hi. I have been meaning to write a blog post like this for a while and thought it might be a cool idea for my first post on dev.to.
I have been creating an IDE for the last seven months. For the first few months it was closed source, now it is open-source and will remain that way.
First, let me answer why I created it. I am an open-source developer. I don't have a lot of money to purchase large enterprise tools. I am very thankful for Visual Studio Community, Eclipse, Jenkins, among other things. I am in an ecosystem which, when I started almost 4 years ago, didn't have a lot of open-source tech. The ecosystem is around the IBM i operating system - which has had many names, more notably AS/400. We only recently got access to a mainstream package manager (yum) and it's going to be great for companies that want to use open-source tools in their existing stack.
It's important to note that most of the development that is done for this OS is done on the platform itself. The operating system has it's own compilers for C, C++, COBOL and RPG (we call these ILE languages). While you can get compilers for C, C++ and COBOL that run on other operating system - you cannot for RPG. RPG is very platform specific and has language features which are tied to the operating system. There are a lot of industries running this OS and using RPG as their main development language.
'Local development' isn't really a thing because compilers do not exist for RPG outside of IBM i. The best thing for distributed development right now is developing inside of your
/home/ directory, which has your 'local' git repo in it. This does mean that all development is done remotely when writing in an ILE language.
There are two mainstream development options for writing in an ILE language. Using Rational Developer for i (there is also Power and Z versions, all based on Eclipse) or using SEU. SEU is seriously outdated and does not let you use the latest language features in RPG.
It really is just a text editor with a prompt for RPG and CL development. I really do not want to spend much time even mentioning SEU, so if you want to see more check out this video.
If you're a development house that's using SEU and has been for years, moving to RDi (Rational Developer for i) is a haven. You finally get to experience what an IDE can offer. Content-assist, outline view, remote debugging - it even handles the EBCDIC conversions when editing. It really is such an upgrade.
There was a couple of performance issues I had with RDi and it was causing me to be unproductive at times. I guess it doesn't help that I was working with systems in a different continent. This made me feel unproductive.
I wanted something that I was productive in. Something that wouldn't slow me down. For a few weeks I was creating sample extensions for Visual Studio and VSCode to see if I could add the functionality to them to work with ILE languages. This included:
- All remote development
- Adding highlighting for languages (RPG, CL and COBOL)
- Eventually adding content assist
- Submitting remote compiles and retrieving the error listing
I had no luck with both because of the nature of IBM i - it has a different file system. On top of that, everything was remote and it wasn't working well with either environments - it meant creating new file explorers for the file system (that really didn't go down well in VSCode)
I always follow the idea to work with what you're good with. I am okay with C#, so I started writing an environment in C# to open source code and compile programs. This is what it first looked like, about 7 months ago:
On top of all that I wanted an open-source option for developing in an ILE language. While what I have created is not perfect, it has enough to learn RPG. It has achieved everything I wanted from it - good performance, not a memory hog and fast compile submissions.
It was first named Idle, but then realised that is also the name of the Python IDE. I renamed it to ILEditor and it has stuck.
I get the chance to speak about it at conferences at times. The great part is when people submit their ideas because then it helps the direction of the IDE too. It's using the GPLv3 licence and is using other open-source libraries to create the UI. I am very happy so far!
That's pretty much it. Hopefully you enjoyed reading about what I have made. Here's a couple of follow up links: