[Info-vax] Compatibility, Porting, Migration
Stephen Hoffman
seaohveh at hoffmanlabs.invalid
Mon Jan 29 17:35:29 EST 2018
On 2018-01-29 21:43:05 +0000, DaveFroble said:
> Stephen Hoffman wrote:
>>
>> TANSTAAFL
>
> True
>
> IIABDFI
>
> (If It Ain't Broke, Don't Fix It)
"Ain't broke" is unfortunately a moving target. It's a target that's
seemingly moving faster in recent years, too.
More than a little not-broken code is really broken code whether that's
on OpenVMS or otherwise. The far-too-efficient-to-calculate Purdy
Polynomial password hashes being an example de l'année. There are
plans to replace the Purdy hashes with Argon2 hashes after a migration
period, but that'll break some existing apps and source code.
Itemlists and the old calling standard only get you so far. That's
very part of why Microsoft started down the path toward .NET, too. As
for other related issues, there are no OpenVMS valgrind tools and no
fuzzers — heap analyzer ain't all that and a bag of chips,
unfortunately — and there are no tools to scan for synchronization
coding errors in apps, and no standard way for the compilers to suggest
better choices to developers for problematic or deprecated or insecure
constructs. Developers are expected to know all that. Which often
leads to a wonderful combination of increases costs and more holes.
Apps and operating systems get in trouble as end-user expectations
change, and as security requirements change.
I've seen more than a few OpenVMS apps and servers headed out the door
because the user interfaces are somewhere between poor and atrocious,
too. The app might be functioning as designed, but not as might be
increasingly desirable. Whether that's the user interface,
manageability, deployment efficiency, security requirements, developer
tools, whatever. Or just an ugly terminal session window or an
error-prone user interface; designs that are expensive to train folks
for and/or hard to maintain and modify.
Dependencies cause problems, too. I've seen more than a few audits
fail due to TLS support requirements and down-revision Apache
installations. Or somebody's left a down-revision libxml2 somewhere
deep in an externally-accessible part of the processing chain, and...
surprise.
VB6 was very popular and quite effective for many folks. But .NET was
where Microsoft was investing.
More than a little existing commercial code just isn't sufficiently
popular to be funded by and profitable to the vendor, and more than a
little open source isn't sufficiently popular to be staffed and funded.
Or the vendor wants or needs to head in a different direction. I'm
soon to be separately dealing with the fallout of a vendor decision to
focus their product offerings elsewhere, too. It happens all over.
If you're a platform vendor, solving enough of these issues — really
solving them — is a very hard problem. Particularly if you're on
OpenVMS and stuck with traditional OpenVMS APIs and itemlists. It's
impossible, if you're further saddled with a requirement for complete
upward compatibility.
HAVGRFBC.
Have A Very Good Reason For Breaking Compatibility. Once you do make
that decision to break an API or framework, make certain you have a
very good reason, and a migration plan, and a deprecation and removal
plan. Definitely don't dribble out breaking changes in the same areas
of apps, too. Re-do the whole of the hash-related security APIs all
at once, and not just for the current password hashes but for other
current and planned changes. Move everybody to ACME or whatever might
replace ACME, and make ACME far easier to use and far better
documented, and provide simple routines for the common tasks. Try to
ensure that the next password hash migration to replace Argon2 will be
transparent, for instance.
--
Pure Personal Opinion | HoffmanLabs LLC
More information about the Info-vax
mailing list