The Recompilation Foundation (Text-to-GUI)
Why recompiling beats rewriting: take your Informix-4GL code, run it in Genero within weeks, then modernize screen by screen. Includes the real risks — what messy 4GL code costs you at compile time, and why staying put is the bigger risk.
The first volet of the Genero Modernization Series: the Recompilation Foundation, and how Text-to-GUI turns Informix 4GL character interfaces into modern GUIs with Genero.
Since this session aired
The Genero Modernization Series is paused after this first volet. The follow-up sessions discussed in the recording — devices, database, REST APIs and cloud — were planned at the time and are not currently scheduled. This replay stands on its own: the recompilation foundation it covers is unchanged.
For where recompilation fits in a wider modernization plan, see Genero Enterprise.
Key takeaways
Three paths, and doing nothing is one of them: status quo (stable but unusable and unhirable), full rewrite (high risk, cut over all at once), or incremental modernization — recompile, then improve screen by screen.
Genero is a superset of Informix-4GL, so the same code runs. Getting an application running in Genero takes weeks; you then modernize the highest-traffic screens first.
Customers move for three reasons, in historical order: getting out of the terminal, database freedom, then reaching more devices from one codebase.
Thirty-plus years of business rules are the asset. A rewrite means extracting rules nobody documented; recompilation leaves them untouched.
Questions from the session
What is the biggest risk when migrating to Genero?
Not the business logic — that's untouched, so there's little risk to data integrity or business processes. The real work comes from how permissive the Informix-4GL compiler was: global variables defined differently in different places but addressing the same memory, functions returning different types depending on a condition. Genero's compiler is stricter, so messy 4GL code takes longer to migrate. Once running, you can move in small steps. And the counterpoint made in the session: the bigger risk is staying on Informix-4GL indefinitely.
How does Genero handle user authentication? Our system uses the OS login to connect to the database.
Two paths. Keep your current model: the desktop client opens an SSH connection to the server, prompts graphically for username and password, runs the process as that user and connects to the database as that user, with the UI tunnelled back over SSH. Or use OpenID Connect and OAuth 2.0 if you have an identity provider such as Microsoft or Google — that usually means running as a single user, so database-level security needs a design decision.
Can the application still be a desktop application, or must it become a web app?
Desktop remains available. Genero uses universal rendering — the desktop client is effectively an HTML wrapper — so the same application runs over SSH or over HTTPS behind nginx or Apache. Which architecture fits depends on your environment; it's a conversation with your local Four Js team, not a single right answer.
Full transcript
Lightly edited for readability. Speakers' meaning unchanged.
They won't, but you can you can put information in there as well. Hello everybody! Very active chat. Okay, I think we should be good to go, Mike. So, let's start this off. Sounds good everybody. So, again, welcome. This is the first webinar in our series this year for Genero modernization. This one specifically is going to be about recompilation. So please hang around and then at the end there will also be a survey. We'll touch base on that. But we just want today to discuss the recompilation foundation about how you can modernize your systems without having to rewrite your systems.
Oh, before we get started guys just so you probably already noticed that all your lines are muted. So during the session you won't be able to talk but you can hear us of course but please use the chat feature over here like you are currently doing to communicate with us. There's also the Q&A session. So, if you have any questions we will answer them at the very end. This session is also being recorded. So after this session is over you will receive an email with the recording link to be able to review it at a later time.
Now let's get to introducing ourselves. My name is Kathleen Kesterson. I am coming as a business consultant showing you the business side of how this impacts your businesses. And joining me today is going to be Mike Folcher. Now Mike Folcher does have over two decades of experience right in the development side with mission critical software applications. He has gone through modernization initiatives from very small to very large ones from different companies. So, he is a very good resource to have. And he will actually be doing most of the webinar here in a minute after we get through some of the introductions.
All right. Thanks. So, you might be wondering generization series. So, we're going to talk about what the series is and who it is going to be for. So you have two different aspects. You have your technical leaders. You also have your business leaders. Now your technical leaders, if you are evaluating your options, you're trying to find a modernization strategy or you're a business leader that has a mission critical Informix 4GL and you're looking to reduce your modernization risk, then this series is for you. If you sit in somewhere between either one of these, this session is also for you.
So, please hang around and also make sure you come and join us for all of the rest of our series as we go through the year. Speaking of which, so as you can see here, we do have four other sessions. Now, we want to hear from you. So, please utilize the chat today to give us some feedback. If you don't think any of if you want to see something different in a webinar, let us know. So one of them is about expanding to all your devices, right?
So one codebase for desktop, tablet, mobile. Another is switching your database. You know, how do you prefer improve your performance and cut cost? Another is exposing RESTful APIs. How do you automate workflows and integrations? And another is going cloud-ready. So scale, reduce TCO and stay agile. Now again, if you feel like you want to see something different, please use the chat. We want to hear from you about what your priorities are for this year, right, Mike? Right. Yeah. That this is all subject to change based on feedback we get from from you guys.
So, let us know. All right. Now, let's start it off. We've got the agenda here. So, first we're going to do a little bit about who Four Js is and then we will then proceed into the modernization pathway as well as a drive-by Informix 4GL responsive and then of course Mike will then go into the demo and then after the demo we will then have our Q&A session. So just make sure you stay around for that so you can see what questions are being asked and answered.
A little bit about Four Js. So we've been around since 1995. We do have deep experience in mission critical systems of course so modernization decisions affecting your operation revenue stability. So this is what really shapes our approach and we want to be here to help you guys in order to make your systems effective working every day. So, and speaking of our customers, right? So, we go into a whole lot of industries. Finance, media, manufacturing, logistics, retail. So, for us, the common thread isn't the industry. It's more or less that all of you or are soon to be, we look at long, you want long running systems.
You want it working and you want to evolve it, you want to grow. And that's kind of who we focus on in our customers. So your challenge isn't unique if you're looking at modernization. We are here to help you. So now let's switch over to Mike. Mike is now going to hop in, show you what matters. So Mike, take it away. All right. Thanks, Kathleen. I appreciate it. Yeah, so Genero Enterprise, like Kathleen touched on before Genero like Informix 4GL and then Genero which is Genero is really a superset of Informix 4GL.
So that's why it allows you to modernize your application without having to rewrite it. You can take that same code, you can run it in Genero. You can modify it to be graphical, you can have it be a web application, a mobile application. You can put it in the cloud and containerize it. You can even switch databases. And all the system that are written in for Informix 4GL and then the Genero systems are really business mission-critical applications for the businesses they're the underpinning helping run the business Right.
So we're going to talk a little bit about the path to modernization with Genero. So if you have an Informix 4GL application out there, you've probably either thought about how can we rewrite this? Or you've even maybe even tried to rewrite it. There's a lot of risk involved with that, right? These applications tend to be very complex and they tend to be very business specific. Right? We're talking about 30 plus years of brain power put into the applications and then they've really been molded to the businesses that they're helping manage.
And so trying to take an application like that and rewrite it becomes very complex. They typically if they do if they are successful they run way over budget. But in most cases they're not successful and they waste a lot of time and a lot of money. So you really kind of look at right there's three different paths forward. When you have an application in and you might you want to modernize it, you aren't sure what to do. So, the first one is the status quo. You want to go forward, you want to move this product forward, but you don't really know how or you're afraid of the risk.
So you end up doing nothing, right? It works as it is. It's running the business. Sure, it can be hard to use. It's hard to train new users. It can't connect to web services and do things like that but it's working and it's very stable. And then on the other end of the scale you can try to take that application and rewrite it. So you basically have to like try to document all of those complex features and business rules that you have in the application that have kind of been baked in there over 30 plus years.
And you can you try to extract them out into requirements and then do a full rewrite in the latest greatest technology. Right? This is becomes this is super high risk. It's kind of becomes tough because you have to like kind of cut everything over at once because you're doing something in totally different technology. It's risky and costly. So we offer a third approach, incremental modernization. You can take your Informix code, recompile it in Genero and start running in Genero within weeks. And then you can slowly start modernizing those applications that, let's say, the biggest tread.
So the applications that are used by the most different users. The ones that could re if you really improve them could really help your business and then you can slowly improve the whole application over time. So typically within our customer base they're usually I would say three different buckets of why people initially they want to migrate to Genero from Informix 4GL. So when Genero first came out way back 25 years ago I think the initial push was really user experience and user interface right they wanted to get out of the terminal and they wanted to get at the time it was a desktop application.
Because that's where at the time modern systems were targeted towards and then over the years we've evolved as the technology has evolved. We had a web client that was somewhat static now. We have a browser client that's very dynamic. And then we have customers all along the spectrum. We still have customers running to terminal based and then we have customers running responsive web applications. So that was the first bucket. The second bucket was really about databases. They were running an Informix database, but because of the market they were in, especially if they were a software vendor that built their application on Informix 4GL, customers at the time, there were a lot of on-premise customers, they really wanted to switch databases.
They want to be on Microsoft SQL Server, they want to be on Oracle or Postgres or MySQL. So Genero gave them the ability to keep their code and migrate to a different database. And then so that was kind of the second bucket and then the third bucket was really some other technology movement. Like they needed web services. They got acquired or they became part of a bigger organization. They had all these third-party systems that needed to communicate. they had a standard way of communicating but they needed the Informix application to be able to communicate in those same ways.
So writing web services and consuming web services in Genero is very straightforward and easy. Other things like moving to the cloud, doing better reporting, these are all things that Genero brings to the table and sometime depending on your business. They really move the needle. All right, Mike. A question for you. oh yeah yeah Sure. So, go back to the previous slide real quick. So, you were talking about how Genero offers the ability to do all of these things. Now, as we're going to talk about a little bit later too, is there AI?
Does Genero offer AI ability? No, no, no. That's a great point. Yes. So, we actually have built an AI agent and we're going to be rolling it out in the next couple, probably one month or two to really accelerate the process of modernizing your application. So it's the agent really we've been testing it internally so far and really working on migrating both Informix 4GL to Genero and then also modernizing Genero applications. So being able to take that next step improving the UI, taking extracting business logic refactoring the code.
So that then you can expose your logic through restful and restful web service endpoints. Things like that okay. So the AI tool that we're going to probably hint at a little bit later is is going to enhance what we are being able to offer from Genero's side of things. And also if you are understaffed it's really going to be able to speed up the process of development. Which I think is key in a lot of places because I think a lot of companies still running Informix 4GL, are running really lean shops.
They have one, two, maybe three developers. So it makes a lot of sense. Okay. Well, thank you Mike. I just wanted to kind of bring that up. No no no, that Perfect. I'm glad that you, I'm glad that you kept me back on the rails there. So this is just like a a heat map of where our customers are. And I just wanted to point out like we have a lot of customers that are still using Informix with Genero. And they have all sorts of applications from terminal based applications, from GUI which when we say GUI we're really talking about the desktop application to web applications.
And web applications to the bleeding edge where they're responsive they can change to different form factors. And then we have customers all along that spectrum with different databases. we have customers that switched to Genero. They wanted to stay in terminal base but they wanted to switch to Oracle database or Microsoft SQL Server. And then we kind of have all kind of mix in between. So I guess the point here is really whatever is important to you. Like we have customers that are running Genero in an environment that should be similar to what your needs are.
So, if it's about getting a user interface that's really easy to use. Being able to upload and download images, getting reports in PDF and nice looking reports for board reports and things like that. We have customers that are doing those things and we can help you do those. And as well as if switching databases from Informix is also important to you, we have customers doing that and we've helped customers do that as well. I think something else that is important to bring up here, Mike, is that you had hinted at the people the customers who have not as many developers.
So, I think it's important for you to share our customer base. Are there a few customers that you can hint at that are on the smaller end versus those that are enterprise level. So that people realize that they're not alone? Yeah. So, I mean we have some very big customers, right? We have software vendors that are Fortune 500 companies. And then we also have like Skechers who's obviously a shoe manufacturer and distributor. Their warehouse system is being run with Genero and they use Informix. We have the the government of Mexico uses their pension and health care system.
That's run on Genero using an Informix database as well. So we have very large institutions that are using Genero and then we have a manufacturing company in California that has maybe about 15 employees using Genero to manage their manufacturing business, and their sales and distribution pipeline. So we really have kind of, we have a lot of really big customers, but we also have a lot of really small customers and then we have customers in between. So we do have large enterprise customers if that's something that's concerning.
Mike, I just think it was important to share that if there's somebody in here who is wondering if they fit in with us, that they know that we're all over. We're not just big companies, we're also the small companies and medium-sized. We are all over. We will help everybody. And we have a lot of customers that are software vendors. So those applications really get pushed out. They have a large user set. We're talking about maybe half a million users total. Maybe even more. And then we have what we would refer to as end users.
There are large organizations like a company like Skechers that has a couple hundred users that are using it all over the globe. But it is the backbone of their warehouse and distribution system. All right. Okay. So, what I want to show you next is... just I'll show you a couple screenshots of a modernization and what it looks like. If you go from Informix 4GL to Genero. Really just kind of a first pass. And then I'll actually demonstrate it as well. All right. So, if you're an Informix 4GL developer, you probably know what this looks like, right?
As a typical, I'll say CRUD screen. To query, add, update, delete, records. And so this is what it looks like first pass in Genero. So, it's now a web application, but it's still a menu statement. Now the menu options are just appearing as toolbars options instead of the ring menu and in the terminal based system. And then you can see here that obviously the fields are graphical and there's also a drop- down list. And then something we call a button edit for your lookup fields. So it has a button at the end that could trigger the opening of that lookup window.
And so this is then the target. So this is what you can do with Genero. And this is what we'll see in the subsequent webinars. So this is really like a UI-UX optimized form with the same data points So now we're going to the live demo section. All right... And so... All right... minimize... All right, so here we go. So just to show you one is so you can see here's the code as it is now. So if you're in Informix 4GL developer this should look very familiar.
What I'm going to do is just... I'm going to hide this. Didn't want to do that. Okay. And so I'm going to just run this. So just to point out two things. So I'm going to... I'm just going to rebuild this. This is running Genero even though it's Informix 4GL code. I'm recompiling it with Genero and then I'm going to run this script. All right, so this is our menu system. Not very sophisticated but functional. All right, so I'm going to go into order management order maintenance.
You can see here we start out in a ring menu. Let me do a query. I'm just going to query for everything. We don't have a ton of records here. And then I'm going to add a record. So, I have a table lookup here if I wanted to. So, I can do Z. So, the Z and then I'm going to select this one. I'll put in the rest of the information and that should be enough. Yes. Okay, so I added a record. Okay, just to show you what the functionality is in Informix 4GL.
Oh, I have to exit. This is what you were trying to show. We can take you from this and move you to something that looks like this. Like a... let's call it a more easier interface to interact with. Correct. And so, you can become web- based and so your users one is the deployment and running of the application becomes easier. Training new users becomes a lot easier and then it really opens up a whole box for you of new things that you can do. You connect to web services, you can upload and download files.
You can display images, all the things that you would expect really from a modern application. So I just switched my branch and I'm going to rerun this or rebuild this rather I should say. All right. And I'm going to run my application. So this is the same application. So the menu system obviously is different. You can see now I have a tree view of the application. So I'm going to go into the same program. So a couple things just to note right off the bat is that now, I can see I'm running two different programs.
Well, I can switch back and forth between the programs. That means I can run multiple things off the menu and just navigate using this side rail bar. So I'm going to do the same type of thing. Actually, I want to see all of the orders where the customer code is between W X, Y, and Z. And so I'm going to look here is my the last order that I entered. Again, this is the ring menu just like the ring menu before. So the actual structure of the program really hasn't changed.
It's really the focus of this first webinar. It's really just the decoration around the application making it look nicer, easier to use more intuitive for a user to use. And I can add the same way. I had the lookup before. So I can still do control T, which was my customer lookup, but I can also now use this use the button edit button, to do the same thing. And I'll select this this time. I'll just enter it in. I'm just put the same dates. I think it's good to repeat that the screen, that you're on now.
You can continue and then if you didn't do any rewrite and the rewrite is where the risk is. And so when you got to this, there was no rewrite involved where that risk sits to get here. Correct. Correct. It's really changing the form and the decoration around the application. But the core guts, like all the business logic is exactly the same. The way it's being validated, the way that's controlling the user navigation, that's all the same. And so you can see here, this is a based on a database table.
So there's methods and functions in Genero to load a combo box from a database table or you can have static values as well. All right. So I'll just save this. Yes. And so you can see here it's very much the same functionality just looks nicer. It's easier to use and you can get some of the modern look and feel in the application. So the one last point I or a couple last points I want to make is so I ended up doing almost all of this work myself and so you can see from my title so I wear a lot of hats in Four Js and so I didn't have a lot of time to do all this so I actually as part of the AI agent testing I used the AI agent to do almost all the work.
So I would I've started to become very familiar with prompt engineering and how to instruct AI agent to look at this module. I want to change you this, this, this and this and have it go through. And change and so through that process. I've been able to help our R&D staff to kind of tune the AI agent to be smarter and understand more about Genero. Bring up a good point because I was going to ask that question.Because over here on the right hand side that looks to be our AI agent that you utilize.
So you can't use just any AI tool. So, can you give a little hint about that? Well, yeah. So, I mean, our AI agent has a set of skills that are very Genero specific. So, it's really kind of the secret sauce that helps the AI agent really go to the next level and understand what's special about Genero. So, and these skills, again, we're just in the process of developing this.So they're being tweaked and improved over time. The goal is that the skills will just keep getting better and better and better.
Just so everybody's aware, this is something that's coming in the future months. So, keep an eye out about it. This still in the works, still being tested, but we wanted to showcase our tool that we we have been working on. Yeah. And it's really we have a couple targets, but one of the big targets really is being able to helping with the upgrade process from Enforg. So all right, I'm going to go back to the presentation slide. All right. All right. Yeah. So we saw basically just a recap of what we saw in the demo.
We didn't touch any of the business logic. Really mostly forms, just some forms changes and some functions like to load combo boxes, some actions that we added to to link data points, things like that. And so the our goal like Kathleen mentioned before as of right now our plan is to do a next step here. So we took like a first pass we migrated to Genero we have it running as a web application. So what's the next step really modifying the user interface and the user experience.
Typically most web applications don't have a menu bar in the beginning and step through each process very monolithically right usually can do a whole bunch of things in one area. So you can do all that with Genero. It just takes obviously more coding. And really then showing also how you can change the user interface and make it responsive so that it can port to mobile applications as well as the desktop. But again we want to hear back from you. You let us know we want to see web services or we want to see reporting.
You know we can we can be flexible. Just well we got about two months so let us know sooner rather than later. All right. So, thank you. So, we're going to open up now and do the Q&A session. So, I'm going to stop sharing my screen. But I did want to remind you that please stay on the webinar after it ends and there's a quick survey. So, we want to hear back from you. What did we do well? What did we not do? What did we do not do well?
So appreciate that. All right. So, now I'm going to stop sharing. Okay. Where's the sharing button? There we go. Okay. All right. So, stop sharing now. now we go to the questions. Yes. So, again, everybody, please make sure you stay after the fact. We will be you will get transferred over to a survey. So, please stay for that. But we do have a a good amount of questions. We may not get through all of them. So, just be aware that there may be some that we may have to answer later after the fact.
So, we will just do a few of them as of right now. so, I'm going to Okay. So, let's see. That doesn't want to work. Okay. So first question Mike is going to be how does Genero handle user authentication? Right now their system is using the operating system login to authenticate and connect to the database. Oh yeah. So it's that's a great question. All right. So, there's a couple different paths you can go through. If you run the desktop application you can use the same methodology that you use now.
Right. So behind the scenes the desktop client can make an SSH connection into the server. So they basically and then it'll like graphically prompt the user for the username and password. The processes will run as the user and then they'll make the connection to the database as the user. And then the the port that displays the user interface will be tunnneled back through the SSH tunnel. So that's the easiest way to go. But Genero also does support OpenID Connect and OAuth 2.0. So if you do have an identity provider like if you're using Microsoft or Google in your organization, you could leverage those as well.
But then that requires a little bit more work because then you're typically running the process as a single user. So then you kind of have to pass the database connection and if you have any database based security you have to come up with solutions for that but again we can work with you. We've worked with a lot of different customers on that. So awesome. So next question is the next session or I don't think it's the next session. It's a couple of sessions. Will "Switch your databases" get into migration from Informix to other databases like Myriad DB, Postgres, ETZ, all the other ones.
Yes, that's the goal is to kind of give you an overview of like what the process is to switch, what your code needs to look like, ou know, how do I want to say this? yeah, what like what you need to consider when you switch databases. But I I do want to point out that the presentation I did was actually using Postgres. It was not using Informix and I actually wanted to use Informix but since I was running on a Mac and I had some issues connecting to the Informix database.
So that's why I switched to Postgres. But and if you noticed when I did the SQ when I did the construct statements I used informix based queries but they actually gets translated by Genero into whatever the target database is. So the Genero helps you in some ways. It's going to basically take that Informix syntax and it'll be able to convert it into whatever the target database is, but there's still some things you need to know about because some of the databases handle things fundamentally different. Like I said, luckily like we've worked with a lot of different customers, so we understand what those differences are and we can provide services to help you.
Okay. We have a couple of questions on AI. I'm actually going to hold off on the AI questions. We will most likely answer those after the fact just because of the tool that we have coming out. The next one is does the application need to run as a web application or is there still an option to compile it into a desktop OS specific version as there was around version 3? Also, if we find that the app runs slower as a web application, could that indicate something wrong with the app's architecture?
Yeah. I mean, so there's I was a huge question. There's a lot of stuff baked in there. So simplified version. Yeah. So you can run as a desktop application. But it's still we like by default we use like what's called universal rendering. So the universal rendering will basically take the HTML like, it's basically like a HTML wrapper or the desktop client is really like a HTML wrapper. So it's essentially a web app but it's running inside the application but you can run it through an SSH connection or you can run it through HTTPS.
And then have it hosted in nginx or Apache. So I would say I think probably the best thing to do is really since it is a big question that's very specific probably to your environment and what you're running. You'd really want to contact Four Js and work with your local Four Js's team to understand what's the best architecture for you because there are a lot of different ways to architect it. Okay. And we'll just do one last question here really fast. Should be, should be a good one.
So, what is the biggest risk when migrating to Genero? That's a great question. Yeah. So, from a business logic standpoint, since you're not touching a lot of the business logic, there's very little risk of of having major problems with like data integrity or business processes. So a lot of the risk or the work revolves around the fact that Informix 4GL was very loose with how it compiled and allowed things to happen. You could have variable like global variables that were defined differently in different places but were really like addressing the same space in memory.
You could have functions that return different types based on like if something's true it returns a number or and if it's not true it returns two values of character. Because of features and functionality that Genero is introduced the compiler had to get a lot stricter. So from that standpoint, if you have really messy code, it could take a little longer to migrate to Genero, but then once you get up and running on Genero, like you could take baby steps, right? Where you just, okay, first we're running a terminal based, and then we're just going to go to, uh...
having a a simple web application that looks and behaves very similar. You can really do it incrementally. So from that point, I think it takes a lot of the risk out. I think there's a bigger risk of staying in Informix 4GL indefinitely. So I would say that on the other side is is a big risk as well. All right Mike, thank you so much. That is all the questions that we are going to answer today. Now I know there were quite a few more. So we will look into these questions after the fact and try and compile answers to them.
But we want to thank you again for attending the first session of our webinar series and please stick around. We are going to have the survey that will it'll take you to the survey and please provide your feedback there. If you guys have anything else, please feel free to reach out to Mike. His email was at the very end of that PowerPoint presentation. So, I'm sure he would love to hear from you guys. I'm looking forward to it. All right, everybody, you have a good rest of your day and once again, thank you so much.
Yep. Yeah. Thank you.


