Dean Roddey
Senior Member
Any interface should be a purely 'on the wire' protocol. The vendor can always provide platform specific helper wrapper libraries around that protocol if they want and support both schemes.
I haven't tested it, but Elk did claim that this could be installed on/run from a portable installation like a USB stick. In that sense, if could be used on public computers if you really wanted (assuming traditional firewalls don't get in the way, which I'd imagine they would).True, however the downside of M12go and other manufacturer's products that are similar...it requires the installation and download of software onto the host computer, which isn't practical or possible on a lot of machines...like say a user is using a public or company computer.
I'm sure they would too. An option would be to run SSH in portable mode as well and tunnel all traffic over port 443 since that won't be blocked.I haven't tested it, but Elk did claim that this could be installed on/run from a portable installation like a USB stick. In that sense, if could be used on public computers if you really wanted (assuming traditional firewalls don't get in the way, which I'd imagine they would).
An important point to remember is that supporting multiple platforms isn't just a one time cost, it's an ongoing cost and the increase in ongoing development cost isn't linear to the number of platforms supported, it's closer to multiplicative. Your development and testing gets far more complex. Unless you are willing to completely separate out a lot of the code into platform specific chunks, then you end up with orders of magnitude more ifs, ands and buts in the code, and developers who can only be sure they aren't breaking anything on their own platform that they understand. You have to now deal with multi-version quirks and limitations across multiple hardware platforms, OS versions, compiler versions, etc..., not just one. You have to have testers and docs people who understand both platforms, not just one. Your testing lab has to become X times larger and more complicated hardware wise, and you need people who can keep it stable and controlled so that your testing is meaningful. You probably now need version control that is cross platform, not something that's tightly and conveniently integrated into your development tools, and all the complexities that setting up and maintaing that requires. Even if you hire people who know the new platforms, you can't just let them run rough shod, you still have to set policies about development, on a platform they understand better than you.
And of course it means that development of new stuff inevitably slows down, possibly quite a lot. You go from a fairly small, tight group working in a single, well understand environment, where they can probably do their own testing a lot of the time, and they understand the code intimately, to a much more ponderous ship that gets a lot harder to turn in any given direction.
Add in that some of those new platforms probably now have to get an official release blessing before it can get on the store to be available to download, and it gets a lot worse. The people who decide that's required have good intentions but in the end I think it turns out to just makes things a lot slower and doesn't make the product any less bug free, because the people who bless the product for release don't know it from a hole in the ground, whereas the people who do can't get to it until it's blessed. And changes made on other platforms can't just stop while the blessing process is going on. So, if it doesn't get blessed, you have to either fork the code to fix whatever is ailing that platform, or go back and deal with changes that might be disruptive. Both of which will further slow down progress and increase the odds of bugs.
And on and on. The complexities are legion and well known by folks who have worked in cross platform development before. If it's a trivial app it's not that bad, but if it's non-trivial, and most useful software is, the complexity scales up very non-linearly to support multiple platforms, unless perhaps you are willing to use some very compromised cross platform scheme that pretty much guarantees it won't feel like a native app on any platform. And even that will get harder now with the gross differences between how desktop and tablet apps fit into the platform.
The C++ XML parser I wrote for the Apache project is probably running on 20 platforms now, from IBM mainframes to embedded systems. But, it's just a sub-system. So no GUI, no requirement for fine grained access to system services or system specific services, no need to support a fancy installer/uninstaller, etc... Once you get beyond that sort of (usually back end) helper subsystem type thing and need to do full applications with GUIs, it just gets vastly more complicated. Once you get into GUI stuff, it can get stupidly complicated because the differences in platforms begin to diverge rapidly.