Hello,
in the last couple of years I have worked on a IDE and some platform tools for GnuCOBOL (native debugger, ESQL preprocessor and drivers, HTTP REST server). This started as a series of patches (only used internally) for OCESQL I developed for some consulting work, and devolved into a long and wide-ranging bet with myself to see if I could actually make it all work.
After a couple of years, I've reached a crossroads: on one hand Gix-IDE is mature enough to be shown to the world. On the other hand shaping it into a more mature and stable tool, as it is my aim, will require a lot more work, feedback from would-be users, and arguably some sponsors to help the development along (I'm participating in the Github Sponsors program).
I have just released a first version on Github (everything is licensed GPL+LGPL), including the full source code and a binary installer for Windows (macOS and Linux versions have been built and run, but were put in hibernation while I made the whole IDE more stable and developed some needed features).
Please expect more updates in the following days while I fix a few things I could not get to before the release (yes, I could have waited, but as fellow developers, you're likely to understand that there is a time when you must hit "Publish"). Among these are some more notes about installing and running, configuring the ESQL drivers, etc.
Any input (or even better a GitHub issue or, in due course, a donation, will be highly appreciated.
You can find the repository for Gix-Ide on Github, at:
Here follows the introduction blurb I've set in the repository, containing some basic info about what Gix-IDE is and does and some notes on how to set it up.
Marco Ridoni
gix
Gix-IDE (or Gix) is an IDE and platform for GnuCOBOL, providing a native debugger, ESQL and HTTP REST services.
Current state, development and plans for the future
Gix-IDE is "mostly working" but it probably has many bugs lurking below the surface (or not really below) and several features missing. I want to improve it, make it more stable and add more features (e.g. reintegrating macOS and Linux support - including a native debugger, adding SOAP support, a better DB manager); and there is a lot of documetation to write...
I am releasing it because, in order to do this, I need to put it out in the wild, to get some feedback, but also to find some form of sponsorship to help the development along.
The IDE
The centerpiece is a Qt-based IDE that provides syntax highlighting (thanks to Scintilla), support for different versions of the compiler, a DB manager, variable navigation and integrated debugging.
Native debugging
Gix-IDE incorporates a custom module that provides native debugging (only supported with GnuCOBOL 3.1+) including breakpoints, stepping, variable inspection of both executable and callable modules.
ESQL support
Gix-IDE provides an ESQL preprocessor and drivers for ODBC, MySQL and PostgreSQL. The preprocessor has been developed starting from OceSQL, but has been almost completely rewritten in its last iterations. It has been at the center of several production applications for a few years now.
HTTP REST Services
An HTTP server is provided that can natively call GnuCOBOL modules, using HTTP methods and JSON for input/output. Such modules can be run and debugged from inside the IDE.
DB management
Gix-IDE also incorporates a DB manager that can generate COPY files from a DB connection (DCLGEN-style) and look at basic table/field properties.
Compiler packages
While Gix-IDE runs standard GnuCOBOL versions that can be added to the install, the binary installer also provides pre-packaged version of the compilers, in Visual Studio and MingW versions.
Multi-platform support
While the focus of Gix-IDE is currently on Windows, both macOS and Linux versions of the IDE and the tools have been successfully built and run,
License
Gix-IDE is GPL 2 licensed, except for runtime components (essentially the ESQL libraries and the HTTP server) that fall under LGPL.
How to install
MingW compilers have a few problems in the packaged versions, so until this is fixed, you will have to use the VS ones.
I failed to build Gix on this Xubuntu box. Probably a lack of qmake fu, but I got as far as
gixpp/main.cpp: In member function ‘void Task::run()’:
gixpp/main.cpp:54:3: error: ‘QCommandLineParser’ was not declared
in this scope
QCommandLineParser parser;
^~~~~~~~~~~~~~~~~~
Willing to wait for the hibernation period, and be happy looking over some code.
If there is a working GNU/Linux build, then I might volunteer to help you write up some docs, Marco. :-)
I'm a fan of Sphinx and ReStructuredText for manuals, with copious use of the program-output extension to capture listings and run logs from live sources while the book is being processed by Sphinx. Helps a little bit with regression testing, and keeping things current.
If you'd like to share some of the work, Marco. Making an offer you can refuse. ;-)
It turns out it's a thing, developers want clickey less typey, so yeah, having a viable IDE is important.
Thanks for the efforts, Marco This is not advertised in the FAQ yet, but will be, once I see it running.
Have good, make well,
Blue
Last edit: Brian Tiffin 2021-02-26
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
the Linux build has been unmaintained for a few months while I was
rehauling the debugger. As a consequence I have to fix the build files, and
more important, implement the native debugger module for Linux, since that
is obviously OS-specific. I first wanted to make the debugger work and
stabilize the interfaces. The same goes for the macOS version.
That's... quite interesting. Can I suggest to add some screenshots and minor user-documentation allowing to get a fast idea of Gix?
You've wrote "reintegrating macOS and Linux support" so currently it is a win32 only version that should work cross-platform because of the Qt-base?
That leads to a follow-up to Brian's post: What is the minimal build dependency? An entry "How to build"in the README including a dependency list is likely useful.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
first of all: it's probably not clear from the original mail, but there is a binary package in the repository, under "Releases" (Windows-only at the moment) that installs Gix-IDE and its dependencies. You just need the VS2019 runtime (that should be included in Windows 10 and optional in Windows 7). The current version of the binary package is 1.0.223.
I am writing an install/compile guide for those who want to build the binaries themselves, and some documentation about the usage of the IDE, but that will take a few days. Basically, to build Gix-IDE you will need:
VS2019 (the Community Edition is fine). You could also use the VS2019 Build Tools, but in this first phase, while the project files are still a bit unstable, it would be better to have a IDE to suit them to your environment
Qt SDK (I'm currently using 5.14.2) for VS
If you intend to build the ESQL drivers for PostgreSQL and MySQL, you will need their binaries. There's no need to install the whole DB server, you just need to download a "portable" binary version and decompress it into a folder: the build files use some environment variables (that will have to be set before building) to locate these directories.
In order to complete the build currently you must use the included solution file in Visual Studio (not the QMake .pro one). I'll try to fix this as I go along.
There are probably a couple of things I forgot about the build, I'll try to add them in the documentation I'm preparing. Obviously feel free to give suggestions and ask questions.
I also intend to re-integrate Linux and macOS support: it was there from day 1, but I put it aside while I was rehauling the debugger. Besides fixing the build files, this also means that separate debugger modules for Linux and macOS have to be written, since those are obviously OS-specific. I also have to fix more build files: for internal development I use a private repository that "feeds" both the public Github repo (when I have a consistent set of changes) and a build server that executes a clean build and prepares the packages.
I'm attaching a couple of screenshots, one with the debugger running and used to debug a console program, the other while running a callable program used as a web service.
Not sure what you mean with "compatible", vscode is a different environment (an extensible editor) while this is a potentially complete IDE tailored (only) for COBOL (people that often "cross" borders may like either specialized IDEs for all their stuff or a general-purpose extensible editor).
As long as you use the same GnuCOBOL environment in both you can switch between these two as much as you want (if you want to compile in both then either this one support an external build system (Makefiles) already, or should (that's possibly a nice first issue to track) and maybe even can produce a Makefile from the GnuCOBOL settings specified in the IDE (if there's no option to specify all those flags and other options that would be another good issue).
Within VSCodium you'd likely debug with GDB, I don't know yet if/how debugging is done with this IDE.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Marco this is really a great news.
I am using OpenCOBOLIDE but unfortunately it has been put out of maintenance and above all it does not have an integrated and specific debugger as we have now for decades on professional platforms (eg EZ-TEST or INTERTEST from Computer Associates).
This in my opinion is the main uncovering area of GnuCOBOL.
A debugger (or rather an "ANIMATOR") is absolutely essential.
I tried using TP-DEBUGGER which is really very close to the need.
If your development can be specific and dedicated to GnuCOBOL I think it would really be the ideal solution.
With my GnuCOBOL developer skills I can contribute to testing or anything else similar you may need, Unfortunately I can't contribute on another language.
So if you need help ... let me know.
PS. why did you call him Gix?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A binary package is already available under "Releases" in the GitHub repository (1.0.223).
Status update: I am working on the build system outside Visual Studio. I already fixed the Linux build (still no debugger for now), and I am working on MingW (macOS will have to wait). As soon as this job is finished, I'll start packaging the Linux version and writing some updated documentation (to detail some concepts about how Gix-IDE works) and a build guide.
This is probably going to take all this week and a few days more, in the meantime feel free to ask questions.
Thanks
👍
1
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have just released a patch that restores the ability for Gix-IDE to be built for Windows under MingW64 (in addition to Visual Studio) and for Linux. Compilation in these two cases is QMake-based : just set the needed environment variables (see below), clone the repository and run qmake followed by make.
While the build process can be successfully completed, this is a first step towards more complete cross-platform support: there is no packaging (you will have to move some DLLs around, especially for the MingW build) and the application crashes a lot, probably due to to some broken assumption about system paths, libraries, etc. that will be fixed in future releases. I just had to be sure I could build the thing for other platforms: the patch includes several source code fixes that mainly target GCC builds and helped to perform some "shakedown" of the codebase.
On Windows (MingW and VS), in order to build the ESQL drivers for PostgreSQL and MySQL you will need to download a binary package of the DB servers and define two environment variables that point at them (PGSQL_HOME and MYSQL_HOME).
On Linux you will need the -dev packages for unixodbc, MySQL and PostgreSQL to build the ODBC ESQL driver.
Caveats:
gix-http is only built on Windows with Visual Studio, I will add it to the MingW and Linux builds as soon as I can
no new binary release available, since there are no functional changes.
still no debugger on Linux
Next steps (possily in this order):
user documentation (e.g. different types of projects, how to build and debug, etc.)
internal documentation (e.g how the code is organized, how debugging works)
writing a Linux debugger
I don't know how many possible macOS users are out there, but I'd like to keep up the support for this platform, just have to focus on other priorities for now.
Thanks
👍
1
Last edit: Marco Ridoni 2021-03-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In all of those cases the information about the configuration/included libraries is missing... just out of interest: do the VS-versions need a local installed compiler (and/or is there documentation how to install the minimal ones, I guess the "Visual Studio C++ build tools" are enough. [What license are those distributed under?]
Also out of interest: Did you self-compile those VS-versions of GnuCOBOL? If yes: How did you do that?
Last edit: Simon Sobisch 2021-03-06
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
And you are right again :-) As soon as I can I will try to gather and then add this kind of information. I'm mostly sure that the VS compilers use VBISAM and the 3.1.2 MingW one uses BDB, but I need to check.
To build the Visual Studio versions I downloaded the "Win32 sources" from Sourceforge. The project files (.sln/.vcxprj) were "almost" functional, I had to fix some paths and library names here and there. The real hassle was first having to build all the requirements: mpir was quite easy, VBISAM was almost ok, but the various "curses" package were problematic. I actually did this the first time 2-3 years ago, so the details are a bit lost in my mind, but I guess it would be nice to have a more streamlined build environment for GnuCOBOL.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello, after some much-needed (and even more appreciated) suggestions from Simon Sobisch, I moved the license for Gix-IDE to GPL3. I released a patch on Github with source files incorporating the correct license headers and the proper attributions.
I took the change to add some improvements to the automated build process, that will help me to keep the different platforms in sync.
Libdwarf is now built in-place with qmake+make: this requires a pre-build step to be executed manually, but avoids having to ship binaries.
I also added to the build the external ESQL preprocessor (named gixpp) that doesn't need the IDE to work. gix-http is now also built for Linux.
For now binary packages are still only published in the Windows/VS version: I have to modify the build process and my workflow in order to completely support MinGW64 (the IDE and tools can be built and installer files generated, but they still require some care, so I'm testing but not releasing them at the moment).
❤️
1
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
in the last couple of years I have worked on a IDE and some platform tools for GnuCOBOL (native debugger, ESQL preprocessor and drivers, HTTP REST server). This started as a series of patches (only used internally) for OCESQL I developed for some consulting work, and devolved into a long and wide-ranging bet with myself to see if I could actually make it all work.
After a couple of years, I've reached a crossroads: on one hand Gix-IDE is mature enough to be shown to the world. On the other hand shaping it into a more mature and stable tool, as it is my aim, will require a lot more work, feedback from would-be users, and arguably some sponsors to help the development along (I'm participating in the Github Sponsors program).
I have just released a first version on Github (everything is licensed GPL+LGPL), including the full source code and a binary installer for Windows (macOS and Linux versions have been built and run, but were put in hibernation while I made the whole IDE more stable and developed some needed features).
Please expect more updates in the following days while I fix a few things I could not get to before the release (yes, I could have waited, but as fellow developers, you're likely to understand that there is a time when you must hit "Publish"). Among these are some more notes about installing and running, configuring the ESQL drivers, etc.
Any input (or even better a GitHub issue or, in due course, a donation, will be highly appreciated.
You can find the repository for Gix-Ide on Github, at:
https://github.com/mridoni/gix/
Here follows the introduction blurb I've set in the repository, containing some basic info about what Gix-IDE is and does and some notes on how to set it up.
Marco Ridoni
gix
Gix-IDE (or Gix) is an IDE and platform for GnuCOBOL, providing a native debugger, ESQL and HTTP REST services.
Current state, development and plans for the future
Gix-IDE is "mostly working" but it probably has many bugs lurking below the surface (or not really below) and several features missing. I want to improve it, make it more stable and add more features (e.g. reintegrating macOS and Linux support - including a native debugger, adding SOAP support, a better DB manager); and there is a lot of documetation to write...
I am releasing it because, in order to do this, I need to put it out in the wild, to get some feedback, but also to find some form of sponsorship to help the development along.
The IDE
The centerpiece is a Qt-based IDE that provides syntax highlighting (thanks to Scintilla), support for different versions of the compiler, a DB manager, variable navigation and integrated debugging.
Native debugging
Gix-IDE incorporates a custom module that provides native debugging (only supported with GnuCOBOL 3.1+) including breakpoints, stepping, variable inspection of both executable and callable modules.
ESQL support
Gix-IDE provides an ESQL preprocessor and drivers for ODBC, MySQL and PostgreSQL. The preprocessor has been developed starting from OceSQL, but has been almost completely rewritten in its last iterations. It has been at the center of several production applications for a few years now.
HTTP REST Services
An HTTP server is provided that can natively call GnuCOBOL modules, using HTTP methods and JSON for input/output. Such modules can be run and debugged from inside the IDE.
DB management
Gix-IDE also incorporates a DB manager that can generate COPY files from a DB connection (DCLGEN-style) and look at basic table/field properties.
Compiler packages
While Gix-IDE runs standard GnuCOBOL versions that can be added to the install, the binary installer also provides pre-packaged version of the compilers, in Visual Studio and MingW versions.
Multi-platform support
While the focus of Gix-IDE is currently on Windows, both macOS and Linux versions of the IDE and the tools have been successfully built and run,
License
Gix-IDE is GPL 2 licensed, except for runtime components (essentially the ESQL libraries and the HTTP server) that fall under LGPL.
How to install
MingW compilers have a few problems in the packaged versions, so until this is fixed, you will have to use the VS ones.
Last edit: Marco Ridoni 2021-02-26
Woohoo, a new IDE for everyone to try.
I failed to build Gix on this Xubuntu box. Probably a lack of
qmake
fu, but I got as far asWilling to wait for the hibernation period, and be happy looking over some code.
If there is a working GNU/Linux build, then I might volunteer to help you write up some docs, Marco. :-)
I'm a fan of Sphinx and ReStructuredText for manuals, with copious use of the
program-output
extension to capture listings and run logs from live sources while the book is being processed by Sphinx. Helps a little bit with regression testing, and keeping things current.If you'd like to share some of the work, Marco. Making an offer you can refuse. ;-)
It turns out it's a thing, developers want clickey less typey, so yeah, having a viable IDE is important.
Thanks for the efforts, Marco This is not advertised in the FAQ yet, but will be, once I see it running.
Have good, make well,
Blue
Last edit: Brian Tiffin 2021-02-26
Hello,
the Linux build has been unmaintained for a few months while I was
rehauling the debugger. As a consequence I have to fix the build files, and
more important, implement the native debugger module for Linux, since that
is obviously OS-specific. I first wanted to make the debugger work and
stabilize the interfaces. The same goes for the macOS version.
Thanks
Marco Ridoni
mod edit, to remove some reply-to
Last edit: Brian Tiffin 2021-02-27
Yeah. it's cool news, Marco. I mentioned I was going to wait for a FAQ entry, but I'm editing it at the moment, and couldn't resist.
https://gnucobol.sourceforge.io/faq/index.html#gix-ide
I put you in as a contributor, Marco, on the top page.
Have good,
Blue
That's... quite interesting. Can I suggest to add some screenshots and minor user-documentation allowing to get a fast idea of Gix?
You've wrote "reintegrating macOS and Linux support" so currently it is a win32 only version that should work cross-platform because of the Qt-base?
That leads to a follow-up to Brian's post: What is the minimal build dependency? An entry "How to build"in the README including a dependency list is likely useful.
Hello,
first of all: it's probably not clear from the original mail, but there is a binary package in the repository, under "Releases" (Windows-only at the moment) that installs Gix-IDE and its dependencies. You just need the VS2019 runtime (that should be included in Windows 10 and optional in Windows 7). The current version of the binary package is 1.0.223.
I am writing an install/compile guide for those who want to build the binaries themselves, and some documentation about the usage of the IDE, but that will take a few days. Basically, to build Gix-IDE you will need:
There are probably a couple of things I forgot about the build, I'll try to add them in the documentation I'm preparing. Obviously feel free to give suggestions and ask questions.
I also intend to re-integrate Linux and macOS support: it was there from day 1, but I put it aside while I was rehauling the debugger. Besides fixing the build files, this also means that separate debugger modules for Linux and macOS have to be written, since those are obviously OS-specific. I also have to fix more build files: for internal development I use a private repository that "feeds" both the public Github repo (when I have a consistent set of changes) and a build server that executes a clean build and prepares the packages.
I'm attaching a couple of screenshots, one with the debugger running and used to debug a console program, the other while running a callable program used as a web service.
Thanks
Last edit: Marco Ridoni 2021-02-27
I look forward for this IDE also. Would it be compatible with Vscodium ?
Not sure what you mean with "compatible", vscode is a different environment (an extensible editor) while this is a potentially complete IDE tailored (only) for COBOL (people that often "cross" borders may like either specialized IDEs for all their stuff or a general-purpose extensible editor).
As long as you use the same GnuCOBOL environment in both you can switch between these two as much as you want (if you want to compile in both then either this one support an external build system (Makefiles) already, or should (that's possibly a nice first issue to track) and maybe even can produce a Makefile from the GnuCOBOL settings specified in the IDE (if there's no option to specify all those flags and other options that would be another good issue).
Within VSCodium you'd likely debug with GDB, I don't know yet if/how debugging is done with this IDE.
Thanks Simon, I just meant that for the compile of the project he mentioned Visual Studio..
Hi Marco this is really a great news.
I am using OpenCOBOLIDE but unfortunately it has been put out of maintenance and above all it does not have an integrated and specific debugger as we have now for decades on professional platforms (eg EZ-TEST or INTERTEST from Computer Associates).
This in my opinion is the main uncovering area of GnuCOBOL.
A debugger (or rather an "ANIMATOR") is absolutely essential.
I tried using TP-DEBUGGER which is really very close to the need.
If your development can be specific and dedicated to GnuCOBOL I think it would really be the ideal solution.
With my GnuCOBOL developer skills I can contribute to testing or anything else similar you may need, Unfortunately I can't contribute on another language.
So if you need help ... let me know.
PS. why did you call him Gix?
it´s possible publish binaries for windows (32 / 64bit)? Thanks
A binary package is already available under "Releases" in the GitHub repository (1.0.223).
Status update: I am working on the build system outside Visual Studio. I already fixed the Linux build (still no debugger for now), and I am working on MingW (macOS will have to wait). As soon as this job is finished, I'll start packaging the Linux version and writing some updated documentation (to detail some concepts about how Gix-IDE works) and a build guide.
This is probably going to take all this week and a few days more, in the meantime feel free to ask questions.
Thanks
I'm sorry, but I can't find the "releases" folder at https://github.com/mridoni/gix
Have a look at https://github.com/mridoni/gix/releases
Many Thanks. It looks promising :)
I have just released a patch that restores the ability for Gix-IDE to be built for Windows under MingW64 (in addition to Visual Studio) and for Linux. Compilation in these two cases is QMake-based : just set the needed environment variables (see below), clone the repository and run qmake followed by make.
While the build process can be successfully completed, this is a first step towards more complete cross-platform support: there is no packaging (you will have to move some DLLs around, especially for the MingW build) and the application crashes a lot, probably due to to some broken assumption about system paths, libraries, etc. that will be fixed in future releases. I just had to be sure I could build the thing for other platforms: the patch includes several source code fixes that mainly target GCC builds and helped to perform some "shakedown" of the codebase.
On Windows (MingW and VS), in order to build the ESQL drivers for PostgreSQL and MySQL you will need to download a binary package of the DB servers and define two environment variables that point at them (PGSQL_HOME and MYSQL_HOME).
On Linux you will need the -dev packages for unixodbc, MySQL and PostgreSQL to build the ODBC ESQL driver.
Caveats:
Next steps (possily in this order):
I don't know how many possible macOS users are out there, but I'd like to keep up the support for this platform, just have to focus on other priorities for now.
Thanks
Last edit: Marco Ridoni 2021-03-02
Hello,
I've released a new version (1.0.240). Binary packages, either with or without compiler packages, are in the Releases page on GitHub:
https://github.com/mridoni/gix/releases
This release:
I have also added some (really needed documentation) about building, installing and using Gix-IDE. You can browse it on GitHub.
ESQL documentation is still missing, I plan to add it during the next week.
Thanks to everybody for the interest and the feedback
Thank you for the update. Please specify what compiler is included in that package.
Nice work on the documentation!
You're right, I forgot!
There are four compiler versions included:
3.1.2 MingW
3.1.2 Visual Studio
2.2 MingW
2.2 Visual Studio
The installer should set the 3.1.2 VS version as the default
Thanks
In all of those cases the information about the configuration/included libraries is missing... just out of interest: do the VS-versions need a local installed compiler (and/or is there documentation how to install the minimal ones, I guess the "Visual Studio C++ build tools" are enough. [What license are those distributed under?]
Also out of interest: Did you self-compile those VS-versions of GnuCOBOL? If yes: How did you do that?
Last edit: Simon Sobisch 2021-03-06
And you are right again :-) As soon as I can I will try to gather and then add this kind of information. I'm mostly sure that the VS compilers use VBISAM and the 3.1.2 MingW one uses BDB, but I need to check.
To build the Visual Studio versions I downloaded the "Win32 sources" from Sourceforge. The project files (.sln/.vcxprj) were "almost" functional, I had to fix some paths and library names here and there. The real hassle was first having to build all the requirements: mpir was quite easy, VBISAM was almost ok, but the various "curses" package were problematic. I actually did this the first time 2-3 years ago, so the details are a bit lost in my mind, but I guess it would be nice to have a more streamlined build environment for GnuCOBOL.
Hm, did you read build_windows/README.txt which points to the Win32 depencies?
Actually I didn't, I'll give it a spin when I can.
Thanks
Hello, after some much-needed (and even more appreciated) suggestions from Simon Sobisch, I moved the license for Gix-IDE to GPL3. I released a patch on Github with source files incorporating the correct license headers and the proper attributions.
I took the change to add some improvements to the automated build process, that will help me to keep the different platforms in sync.
Libdwarf is now built in-place with qmake+make: this requires a pre-build step to be executed manually, but avoids having to ship binaries.
I also added to the build the external ESQL preprocessor (named gixpp) that doesn't need the IDE to work. gix-http is now also built for Linux.
For now binary packages are still only published in the Windows/VS version: I have to modify the build process and my workflow in order to completely support MinGW64 (the IDE and tools can be built and installer files generated, but they still require some care, so I'm testing but not releasing them at the moment).
So it only works on Win 64bit ?? - I get - This app can't run on your PC & I'm 32 Bit. ah well !!