[Info-vax] OpenVMS Development Annoyances

Stephen Hoffman seaohveh at hoffmanlabs.invalid
Tue May 7 13:49:56 EDT 2019


On 2019-05-07 16:46:40 +0000, Dave Froble said:

> Oh, I see it Steve.  There is a part of me that asks why there isn't:
> 
> TCP$Create_Connection_Socket( ,,,,, )
> 
> Where I can pass required arguments and get back a completion status.
> 
> And many times more so:
> 
> TCP$Negotiate_Certificate_Handshake( ,,,, )
> 
> Many, many times more so ....

That's part of the effort.  The other part is just the API clutter that 
is the itemlist and related baggage.   Most of us are so accustomed to 
writing and reading the glue code, we simply become inured to it all.  
Really seeing the baggage code was an epiphany.    Folks new to 
OpenVMS?  They'll tell you about this baggage code.

> Will there ever be such a routine, for VMS, and not C specific?  I 
> don't know.  As you say, VSI is quite busy.  And there is the 
> possibility some might say "do it in C".
> 
> One of the problems is that TCP/IP came from Unix, and things in Unix 
> seem to be rather tied to C.  Thus, we have HP TCP/IP which really 
> doesn't fit in VMS and the VMS way.
> 
> What is the VMS way you might ask?  Well, for starters, there is LIB$ 
> and STR$ and ....
> 
> Perhaps a TCP$... set of routines might be nice?
> 
> But my point is, if I'm using VMS, I use what's available, and it's not 
> quite as bad as you say it is.  Sure could be better.  But, today is 
> today, and we can't wait for wishes.

Of course.

Many folks probably won't be familiar with OpenVMS, and may well choose 
different platforms.

None of us wants to slog through sockets and TLS. Not if we can avoid it.

Trade-offs can be that our apps are also either more expensive or less 
capable, too.

We're busy re-inventing.  Or we're ignoring.  Or we're creating 
exploitable code.

And VSI is buried in work, not the least of which is the x86-64 port.

> As for your example, if I understand it correctly, yeah, it might be 
> "easy" to use a tool that "does everything", but it looks to me like it 
> also might be a bit rigid?  As an example, and yes, from using VMS, if 
> I already have a channel open, why can't I just use that instead of 
> "re-inventing the wheel" by having the OO tool do work that is already 
> done?  Or, maybe I didn't understand the example well enough.

The knobs are available.  We just don't have to deal with the knobs 
until and unless we need to.

> I agree with your thoughts, and nowhere more than in the use of certificates.

Here's an ~hour-length presentation video of explaining and developing 
an app for UDP live streaming of video, using a recent network 
framework intended to abstract a bunch of the coding and API baggage 
we're all dealing with.

https://developer.apple.com/videos/play/wwdc2018/715/

The source code is written in Swift as is Apple's wont of late, though 
the structure and operations of the sender and the listener should be 
clear, as well as some cases which long-time server apps are only just 
starting to deal with; proxies, IPv6, etc.

Whether VSI ever creates an API like this?   Understanding various 
solutions and better understanding OpenVMS itself—better understanding 
the parts that many of us no longer notice, or that we take for 
granted—goes a long way toward improving our apps and our products, and 
toward understanding what new developers are experiencing, and what is 
costing time and effort to create and maintain for existing developers 
and existing apps.  And toward an understanding of some parts of the 
mountains of work ahead for VSI.

Is this API one to use?  Unclear.  I do know that mistakes are easy 
with sockets and TLS, that certificates are an unmitigated mess on 
OpenVMS, and that the socket-related work I've been doing hasn't had to 
deal with proxies, and that few of the apps have had to deal with IPv6 
as few of the OpenVMS servers have moved to IPv6.  Yet.



-- 
Pure Personal Opinion | HoffmanLabs LLC 




More information about the Info-vax mailing list