TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Industrial Controller? Windows or Linux?

9 pointsby martin_eabout 1 year ago
I am investigating options for the development of industrial control software that will have to run on a ruggedized network-connected tablet PC. None of this requires hard real-time control. It isn&#x27;t a machine controller. It&#x27;s a scheduler for a specific set of applications. It has access to sensors and can issue commands to cause equipment to activate or change states. Also, this isn&#x27;t a situation where people could get hurt if the software fails. However, it could cause business losses or production halts.<p>Developing on Windows is easy for a range of reasons. Customers have people who can work with Windows, which means supporting them can be easier. My greatest concern with Windows are unwanted automatic updates. I think Windows IoT edition might bring this under control. Not sure. Also, I need to call a sales rep to understand their pricing&#x2F;licensing model.<p>The fear isn&#x27;t reboots. That&#x27;s not a problem. It&#x27;s the potential for an update causing our application to stop working correctly.<p>The alternatives are, of course, Linux and Android.<p>At that point we have to consider a multi-platform approach to development.<p>The one requirement is that it has to be a compiled language. The application-specific source cannot be open for a range of reasons, one of them being potential exposure to liability if source is modified and something goes horribly wrong. That leaves out frameworks that are web-centric JS&#x2F;Python based.<p>The options I have considered include:<p>Qt: I am not comfortable with their licensing models and very slimy process. I watched a video presentation where the presenter broke down the license terms and highlighted deceitful language designed to make you believe you have to pay them money. Not for me.<p>Uno Platform: C# is fine. I&#x27;s prefer C++, but that&#x27;s just me. Being able to use .Net UI components sounds like a potential plus. Don&#x27;t need much, buttons, sliders, menus, graphs, etc.<p>.Net MAUI does not support Linux. Other than that, possibly interesting. It does support Android.<p>Xamarin: No Linux but it does do Android. C# &amp; .Net<p>Kotlin. Interesting. Java. No.<p>Wondering if anyone who may have walked this path might have something to share. Thanks.

8 comments

jononorabout 1 year ago
Hardware (and sourcing) is harder than software. So I would heavily weight which OS is supported for the kind of devices you need, from reliable manufacturers with long support times. Always have multiple sources for the type of hardware used.<p>You also need to consider who is responsible for monitoring, maintaining and updating the devices OS and software, and whether it is a pull or push type update model. If it is you, then the fact that customers IT department knows Windows is not a benefit (on the contrary, they might cause problems).<p>When it comes to language and GUI framework, pick based on availability of skills. Having people that know X is more important than what X is. I would try to find a way to solve the modification issue which does not limit your choice of tech. Not being able to use JavaScript&#x2F;web for UI is a huge limitation wrt access to skills. Tamper protect&#x2F;detection using cryptography.
gtirloniabout 1 year ago
If it were me, I would definitely not tie my product&#x27;s existence to Microsoft licensing.<p>It seems the most flexible solution is a traditional web stack: Linux for the OS, a backend in whichever language you desire and a web app served to the user (if your product has a display, load the browser in kiosk mode).
yjftsjthsd-habout 1 year ago
I&#x27;m not sure I understand your constraints. Accepting at face value that your app <i>has</i> to be wholly non-user-modifiable, what exactly is wrong with web&#x2F;JS&#x2F;Python? Putting a web frontend on the system shouldn&#x27;t let the user control anything interesting since the frontend is just a client over the real HTTP control interface. And rolling Python in with Java et al., why does it have to be a compiled language? Most users aren&#x27;t exactly going to pop open the app regardless, and if your threat model includes users patching the program and ex. editing out signature checks, it&#x27;s not like compiled code will protect you from a debugger&#x2F;decompiler&#x2F;hex-editor.<p>(To answer the actual question as posed: If you <i>can</i> use Linux, <i>I</i> think you&#x27;d be crazy to use anything else. It gives you <i>far</i> more control, completely removes the risk of <i>any</i> updates you don&#x27;t want, can allow really slick update strategies (roll forward&#x2F;back, snapshots, A&#x2F;B updates, immutable snapshots...), most likely completely throws out licensing fees for the OS. Like, if your team is familiar with Windows, fine, if you need Windows-specific drivers, sure, but otherwise? It&#x27;s an appliance; Windows was never a good fit.)<p>(Edit: Also, whichever OS you go with, please decouple your stuff from the OS as much as possible. If it&#x27;s Windows, make a real installer or portable app. If it&#x27;s Linux, it depends on your model (do <i>you</i> control the OS, or do customers?) but make a package&#x2F;docker image&#x2F;flatpak&#x2F;static binary&#x2F;appimage&#x2F;self-contained install directory&#x2F;whatever and document the install process. I say this as someone who has had to come in after something was no longer supported; it&#x27;s <i>so</i> much easier to update the underlying OS when it&#x27;s clear how you install the app on a fresh OS image)
评论 #39637847 未加载
simneabout 1 year ago
You definitively looking wrong way. You cannot choose software before you have industrial grade hardware.<p>And sure, you could try to push people to buy non-industrial grade hardware, but I do not advise to go this way.<p>Industrial grade hardware, is essentially money machine, which is designed to work and gather money, so when for some reason happen out of service, client will suffer money losses.<p>So reliability is extremely important for this market.<p>And when you sell system, based on industrial grade components, they usually have in agreement TOS - usually in means of possible unscheduled downtime, for example IBM mainframes have 99.999% uptime (about 5 minutes unscheduled downtime per year, it mean, they will pay money if you will have evidence, that downtime because of their fail).<p>What this mean, if you have development processes certified for regulations and industrial grade hardware, if something happen, you always will have hard guarantees against sues, but if something is not adequate grade, you could lost huge money.<p>In some cases, regulations just prohibiting usage of non-certified hardware and software for specific regulated functions (examples are medical equipment, life-critical building management equipment, for example ventilation controller).<p>And life is complicated. Just few years ago existed huge market niches, where nobody care about non-reliable systems, but last months lot of things changed, now even toys for children are regulated, and I&#x27;m not sure when this trend will end.<p>And you may already understand, exists industrial grade windows, industrial grade linux (even some branch of embedded OS&#x2F;360), but must say, they are extremely different from &quot;civilian&quot; - for example looks like is is still possible to use industrial OS&#x2F;2, when civilian is already subject of ancient history, and industrial linux is also probably very old.<p>Any way, most probably you will not have rights to make significant changes into industrial system (only certified environment, only certified drivers), because if something changed, you will lost TOS guarantees.<p>Looks like in each case you should carefully check pros and cons of specific system to make decision, what is better for you.
评论 #39662901 未加载
Lariscusabout 1 year ago
You might also want to look at AvaloniaUI[0] for a cross platform .NET GUI library. It is similar to WPF but much nicer to work with.<p>[0] <a href="https:&#x2F;&#x2F;avaloniaui.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;avaloniaui.net&#x2F;</a>
评论 #39643602 未加载
smoldesuabout 1 year ago
The GTK library might not be a terrible choice if you end up targeting Linux. It&#x27;s fast to prototype with (in my experience) and very well-optimized for touch&#x2F;tablet interfaces. Well worth checking out IMO: <a href="https:&#x2F;&#x2F;www.gtk.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.gtk.org&#x2F;</a>
评论 #39637372 未加载
mikewarotabout 1 year ago
You could consider Lazarus&#x2F;Free Pascal for your project. I&#x27;ve run it on my Windows machines, and a Raspberry Pi Zero W. It does Linux, of course.<p>I&#x27;ve not yet tried to compile for Android or WASM, but in theory those are possible.
the__alchemistabout 1 year ago
Bare metal or an RTOS.