Life without internal apache a.k.a. private web server
So, the next year will bring us a new way of installing IRIS. Always keep in mind that you have to bring your own web server. No matter how many instances of IRIS you have on your local machine. Or if you work in Docker, always keep in mind a bit more complicated configuration.
And I now want to understand the costs of this decision for end-developers like most of here.
Let's have a look, at what we got out of the box in Web Applications, obviously do not forget about System Management Portal.
Quite a few REST APIs, some of them for internal use only, are not supposed to be accessible in the production environment for public usage. Will require configuring it much more complex, for security reasons. While internally used API previously could be used via internal apache, and production web server configured just only for exact web application needed there.
- System Management Portal is still present, and a lot of stuff still available only there
- Vanilla docker images with IRIS, require to change a password via login on SMP with the first start (generating a new password, is an advanced-level task, not for beginners at all)
- Main IDE for development with IRIS - VSCode, uses REST API, which will require a correctly configured web server with support for web sockets for debugger
- SAM uses /api/monitor to gather metrics
- IAM uses /api/iam
- and some more system APIs for other needs
- The learning curve for the new developers, now even more complex. It's not just install IRIS, and find webserver and install and configure it.
In addition MergeCPF is not as useful and easy as expected to be, even set a default password for the system users, is quite a journey.
So, let's imagine if I would not install webserver for the IRIS, how I could use IRIS that way. And, I have no idea at all.
- No Web development possible, no even REST
- If you manage to find ODBC/JDBC drivers, you will probably could do something
Development with other languages, and drivers for them can be found in the community GitHub repository, or in WRC
- NodeJS driver is outdated (if you will find out how to install it), for SQL you will have to use ODBC, no other options.
- Java, JDBC only, hibernate as far as I know is outdated
- .Net, not sure, something for ADO.NET and ODBC
- Just IRIS SQL is outdated, missing a lot of new features
- Python
- Embedded python if developed outside as plain python files, not available by default configuration
- DB-API just in beta, with no visible development, not ready for any use
- ODBC if you manage to find the driver
And obviously, if you just evaluate IRIS, and have no access to WRC, your way to finding available drivers is much more complex
- Java, no maven central
- NodeJS, nothing on npm
- .Net, nothing with nuget
- Python, nothing on pypi with pip
Let's discuss this, what do you think?
Just to be clear, the remove of the private web server is just for IRIS and IRIS for Health. IRIS and IRIS for Health community edition still has the private web server.
Then, the question is, what is the cost of this decision for end-developers like most of here.
I would say not that much as you think. The main raison is that most of the developer use the community edition. And the community edition still has the private web server. Then if you have an preinstalled IRIS, you will keep the private server.
The main cost is for the new developer that don't have an preinstalled IRIS and that don't want to use the community edition. I agree that installing a web server is not that easy if you sick on windows. But it is not that hard if you are on Linux or Mac.
For windows developers, may be we can provide simple installer that install a web server and configure it for IRIS.
Now, if we take a step back on the ease of use. I think, this decision is a good one, because it's the first major step of breaking down the monolith. From this point, we can start to make the product more modular. And of course, there is a lot of work to do.
I agree with you that we must improve our client libraries and drivers. Put them in direct distribution, make them more easy to use and with modern features.
Do you mean that in the case of preinstalled IRIS 2022.x the private server would be kept after the upgrade to 2023.1?
Yes, they already mentioned that in another post
But, how knows how long it will last, the later version may remove that support
InterSystems intentionally continues to install a web server with the Community Edition. There are no plans to remove it.
The fact that it's still available in the Community Edition, does not mean that it will not be removed there too. And I'm sure not all developers, can use Community Edition in development, because, not all features are available in Community Edition, and it's very limited by the size of the database and connections (even after increasing). So, for most of the customers, it's rather impossible. But now, InterSystems I would say forcing to use it in development by any developer. So, I see, no reason of pushing Community Edition as an option for developers. It's a good alternative, but useful for a minor part of the developers.
What about HealthShare?
BIG THANKS to @Dmitry Maslennikov for your detailed analysis!
To me, this looks like Retro-Trip.
Back to NMP world (No Mouse Please) with Terminal, Telnet, Console Interface.
It's a big chance for a broad revival of all the old command line utilities
that are still around and working well. (some still using dot syntax).
And thanks also to @Guillaume Rongier to underline the motivation
- "breaking down the monolith"
- "make the product more modular"
Other industries have shown us what that piece-by-piece dropping means.
I also would like to add that the motivations are for sure breaking down the monolith, but also to make the product more secure. The private web server can be security hole. And removing it is a good step to make the product more secure. Because one of the main entry point for a hacker is the web server.
But it should be a bit more gentle way, first of all, remove any dependencies of this, or make them at least optional.
What do you mean by remove any dependencies whitout removing PWS ?
I don't know if removing PWS will be the definitive answer.
If I understand correctly, you want to make it disable by default, and enable it only when you need it. For example with the iris.cpf file.
[Startup] WebServer=1 WebServerPort=52773
I mean, a lot of stuff still really depends on a web server. It's quite difficult for a beginner to do anything useful, having bare IRIS, without any web server. SMP is a dependency, Atelier API is a dependency and so on
I think that installing a web server is not more complex than installing and configuring VSCode. If an Apache (or IIS on Windows) instance is installed prior to the installation of InterSystems IRIS the IRIS installer will offer to configure that web server. From here on forward it is the same as before.
very helpful... thank you @Andreas Dieckow
Seriously?
As you can find below, using IIS can be forbidden by company policy. And I totally agree with that.
Installing Apache on Windows, it's quite a trick. Fortunately, I'm not a windows user, but as far as I know, it's not so simple to find Apache on Windows, there are a few different builds of it.
And Installing nginx which will work with IRIS, even requires building it from source code, according to InterSystems Documentation
So, yes. I'm strictly staying with my position. That even installing a webserver may cause pain. And on top of that, if it will require a production-ready configuration, with restricted access, became even trickier.
not just for beginners.
we develop since >20 years on Caché with Studio.
IIS is disabled by common setup and company directive on developer machines.
As never ending support was promised by IS sales we will stay and stop all IRIS trials
I'll put in my five cents too.
Firstly, Apache for Windows is installed very easily: you just need to unpack the archive and, if necessary (this is done once), register the service.
Secondly, it is not difficult to find the Apache distribution for Windows, for example here: Apache Haus Downloads
Thirdly, I always remove PWS and use my own Apache, so I welcome removing PWS from the IRIS distribution
Yeah, I would not expect less, from such an experienced man. But, I'm mainly worried about beginners.
Offical Apache, does not offer any builds for Windows, it offers using 5 third-party projects, one of them with a dead link. And even mentioned by offering 4 different builds of the same version. And not everyone can easily decide which version is needed.
I like to second Dmitry's concerns. I can somewhat see the reasoning behind removing as much as possible from the docker images. Especially if convenient docker or docker-compose recipes are made available, this could perhaps be of limited inconvenience. But for the Windows installers, I really don't see the point. Especially on a developer system, if/when the internal server is not accessible from the outside world, security is not an issue at all. If it is, an option not to install the built-in apache could be added. Giving us choices, instead of taking them away. I consider removing the built-in SMP server a major inconvenience.
Sorry but I don't understand the problem/issue, starting from 2023 a web server is a prerequisite for IRIS, I's say that is almost mandatory unless you have some very particular use case.
What's the difficulty of installing Apache or IIS in windows?
Providing that IRIS installation properly configure the WEB Server (IIS or Apache), I don't see the difficulty. Or I'm missing something?
Yeah, with docker it will be easier to offer a working environment
And we already have a lot of open-source projects, based on docker. But switching most of those projects from Community Edition to normal now will require additional configuration, on adding webserver container next to IRIS. And I think we should think already about it, and produce new projects, even on Community Edition, with WebServer as well. So, it will be easily switched for any reason.