10 ms·
There was a strange and mutually self-supporting pair of ideas in the Plan 9 community at the time: 1) "Shared libraries are bogus." 2) "Anyone who likes norm
by glangdale 8y ago
There was a strange and mutually self-supporting pair of ideas in the Plan 9 community at the time:
1) "Shared libraries are bogus."
2) "Anyone who likes normal-looking user interfaces rather than plain boxes with text in them is a poopipants."
Both of these propositions are contentious to say the least, but what bothered me was that two propositions were mutually supporting while being (to my mind) orthogonal. The obvious and most compelling example of a shared library on the Unixen at the time were all the various UI libraries (Motif and various other abominations; all of them huge and unwieldy). It seemed necessary to accept that these libraries were obviously Completely Unnecessary to buy into the Plan 9 idea that shared libraries didn't do anything worth mentioning.
I'm sure it's possible to design a better UI library (or maybe even a wacky user level file system for user interfaces; in fact, my honours project in 1993!) but at the time the way people made interfaces that looked vaguely like what other people expected computer programs to look like was to use big-ass shared libraries on Linux.
This was also the way (dragging in one of those godawful blobs like Motif etc) that anyone might have exerted themselves to port across a (not completely pitiful) web browser, but the degree of aggressive disinterest in supporting Other Peoples Code was extreme (Howard Trickey's "ANSI POSIX Environment" or "APE" didn't get much love as far as I could tell).
It was quite undignified to watch people struggling with text-based web browsers or firing them up on non-P9 boxes because of the inability to support the web at the time.
- sprash 8y ago> 1) "Shared libraries are bogus." Starwman, nobody said that. Shared libraries make sense when a program wants to load additional code at run time. A classical example is loading and unloading plugins. For everything else, not so much. 2) "Anyone who likes normal-looking user interfaces rather than plain boxes with text in them is a poopipants." Most people I know use a tiling window manager with terminals. So plain boxes with text in them seems to make sense for many people.
- glangdale 8y agoIt's hard to recall conversations from 1994, but I came away with the overwhelming sense that the Plan 9 guys thought shared libraries were bogus - certainly that they were bogus for the non-plugin use case (which is the one that pertains to this discussion; libraries like Motif were not plugins). So you've accused me of raising a strawman (actually a "starwman" - "he'd like to cwome and mweet us, but he thinks he'd blow our mwinds") by raising a point absolutely not germane to the discussion, but you when refute my point with this devastating rebuttal: "For everything else, not so much". Most people I know also use the web and menus and buttons and dialog boxes and so forth and expect all this stuff to look vaguely like other computers do. The fact that the Plan 9 folks were trundling over to non-P9 machines to read the web seemed to suggest that they also liked seeing things that weren't just text in plain boxes. The point remains that these two propositions are both at the least contentious, and only by combining these unrelated points could anyone really seriously take Plan 9's approach to shared libraries (at the time) seriously.
- pjmlp 8y agoIf Plan 9 guys really thought shared libraries were bogus, they wouldn't have created the follow up version heavily based on dynamic packages for Limbo.
- theoh 8y agoHere's a page which contains some authoritative discussion of the Plan 9 attitude to shared libraries: http://harmful.cat-v.org/software/dynamic-linking/ http://harmful.cat-v.org/software/dynamic-linking/ Your "most people I know" comment is bizarre: even hardcore terminal users need to browse the web, and it's been years since lynx or w3m could be claimed to be adequate for most web tasks. But the Plan 9 folks consciously made it difficult to write or port web browsers and other consumer software. I think I remember Tom Duff stating that writing a web browser was a "fool's errand", which I guess captures the sense of heightened seriousness, privilege, and lack of concern for the average mainstream user that informed Plan 9's design.
- mwcampbell 8y agoOn the subject of web browsers, I wonder if Plan 9 aficionados would appreciate edbrowse [1]. As the name suggests, it's a combination ed-like editor and web browser. It includes the duktape JavaScript engine. The project even distributes a statically linked binary for Linux using musl. [1]: http://edbrowse.org/ http://edbrowse.org/
- rhabarba 8y agoIn theory, that could even be ported to some versions of Plan 9. I remember that the Jehanne OS dev had said something along the lines of "Netsurf (another Duktape browser) could be ported soon".
- AnIdiotOnTheNet 8y agoKinda funny that history has proven him right, in a way. It certainly would be a fool's errand to try and write a web browser in 2019.
- icebraining 8y ago> I think I remember Tom Duff stating that writing a web browser was a "fool's errand" Well, he wrote a browser for Plan9 (Mothra), so if he said that, it's not for lack of experience.
- amalcon 8y ago> Most people I know use a tiling window manager with terminals. So plain boxes with text in them seems to make sense for many people. As my human-computer interaction prof said back in undergrad: You are not normal. There is a reason that no modern operating system outside the "Other Linux/BSD" bucket ships with this as a default.
- adriveatrain 8y agoI found during my ten years in Plan9 it was the most usable OS I have experienced in my 35 years of computing. My only problem with it is every other platform is now ruined because I gnash my teeth and say "would have been easy in Plan9".
- jolmg 8y ago> my ten years in Plan9 Using it primarily? I would find that very difficult with today's dependence on the web, especially with how complex the web has become today.
- adriveatrain 8y agoyes, and I was a website devops during that time. that's my desktop in wikipedia https://en.wikipedia.org/wiki/Acme_(text_editor) https://en.wikipedia.org/wiki/Acme_(text_editor)
- gcb0 8y agowhat did you browsed the web with? or as relevant at the time: how did you communicate via msn/aim/yim/icq? I hope you're not one of those condescending Unix types that only had online interactions on irc :P
- jolmg 8y agoNo need to be rude, and not everyone uses chat software. Googling for the web browser options online, it seems Links[1] and Abaco[2] are the best options right now. There are others listed in Wikipedia[3]. I wonder if there's someone out there that has put in the effort to improve their Plan9 environment. I wonder how difficult it might be to port something like Chromium, Firefox, or Webkit to Plan9. Maybe it's not as tremendously difficult as I imagine it, but maybe I'm dreaming thinking this. [1] https://en.wikipedia.org/wiki/Links_(web_browser) https://en.wikipedia.org/wiki/Links_(web_browser) [2] https://en.wikipedia.org/wiki/Abaco_(web_browser) https://en.wikipedia.org/wiki/Abaco_(web_browser) [3] https://en.wikipedia.org/wiki/List_of_Plan_9_programs#Web_browsers https://en.wikipedia.org/wiki/List_of_Plan_9_programs#Web_br...
- brianberns 8y ago> "Shared libraries are bogus." Are you implying that "shared" = dynamically linked? Was there not a version of Motif that could be statically linked? In the 90's, the most popular UI library for Windows was MFC (Microsoft Foundation Classes), which could be linked either statically or dynamically.
- mwcampbell 8y agoFor the most part, MFC was and is a thin wrapper over the user32 and comctl32 libraries that ship with Windows. So the true Windows equivalent of statically linking Motif would be to statically link user32 and comctl32, and that's impossible.
- pjmlp 8y agoActually it was OWL and VCL, until Borland lost their way and we were forced to migrate to MFC.
- dguaraglia 8y agoReally? I have no numbers to back it up, but it felt to me that Visual Studio (and Visual C++/Basic before that) were more popular than the Borland tools.
- pjmlp 8y agoNot on my geography. Worldwide, no idea.
- int_19h 8y agoBack in those days, Visual Studio was priced a lot higher than Borland offerings - this goes all the way back to DOS, actually. Borland had always priced its developer tools very aggressively compared to the state of the market, and they reaped the benefits. Thus, Turbo Pascal or Turbo C++ used with Turbo Vision was by far the most popular DOS TUI (as opposed to, say, VB for DOS), and OWL/VCL was the most popular Win16/32 framework, if you discount raw Win32 API (of which it was a wrapper). Visual Basic ate a considerable chunk of Delphi's lunch in the enterprise area, where price was less of an issue, and large dev shops would buy an MSDN subscription anyway. But it was never more popular than Delphi for desktop apps.
- gameswithgo 8y agoyou can statically link a ui library.
- astine 8y agoIt seems to me that the issue isn't between shared code and no shared code but between statically and dynamically linking that code. It's a question of bundling dependencies. You can generally statically link a GUI toolkit; you just have to deal with the extra disk and network usage. You can dynamically link the same library but then you just have to deal with all the familiar dependency issues you've probably dealt with. (DLL hell and related issues) It's a trade off, but in either case you're still sharing code.
- erik_seaberg 8y agoDLL hell happened because Windows used to lack a package manager, leaving apps to bundle their dependencies and overwrite other versions (without semver names!) in common directories.
- astine 8y agoYeah, Windows has traditionally been worse than Linux in this capacity, but my point is that dependency management is a non-trivial problem. My experience is that package managers usually work but not always (I've had occasional issues on Arch) and the fact that you need a package manager, and how sophisticated they often have to be, shows how tricky the problem can be to solve.
- pjmlp 8y agoAs if Linux is any better, specially regarding glibc.
- jiveturkey 8y agoit is better. (Unix/ELF generically, not linux). versioned symbols are a YUGE improvement over DLLs.
- pjmlp 8y agoHence why I explicitly mentioned Linux. Also Aix uses the same model as Windows. Finally, .NET Assemblies are versioned, and Microsoft has introduced Application Manifests around Windows XP. https://docs.microsoft.com/en-us/windows/desktop/sbscs/application-manifests https://docs.microsoft.com/en-us/windows/desktop/sbscs/appli... So it a matter of actually taking the effort of specifying the versions that the application works with.
- erikpukinskis 8y agoAs a UI person, I think shared UI libraries are bad for usability in many ways. They lead people to design UIs that happen to be made of the widgets that are available, rather than designing something truly suitable to the user task. This is one of the reasons the web eclipsed native applications. The web only provided the most basic common widgets, so designers were forced to reimplement the UI toolkit, but also given the freedom to have their own take on it. I personally would prefer to see a UNIX-like UI library made of many composeable parts. With idependant codebases. In that world, having a single giant dynamically linked UI blob doesn’t help. I’m not saying standardization is bad, just that forced standardization at the architectural level is bad.
- pizza 8y agoJust so I'm following properly, do you mean something like how you have {React | React Native | React VR} + a cornucopia of community-supplied custom components? imo it's a system that works well - you have a common system + easily extensible custom bits. (take my experience with a grain of salt, I've only used React on side-projects, never anything complicated or that I was forced to develop on because of work, and never ran into any perf issues)
- flatline 8y agoNot the person you replied to, but that's what I imagine he/she is getting at. What I think of when someone mentions a Unix UI library is something like Qt, which provides a number of conventions, such as: - Standard layouts - Standard input and display components - Standard event and message handling - Standard user interactions - Standard color themes Which is great for developers to set up an initial UI, but makes every application look the same and takes a lot of work to customize in a way that's consistent with the defaults. On the other hand, building a complex, feature-rich UI requires a lot of skill both in terms of implementation and design, which is less than common. So that Qt UI will be functional and predictable to users, even if it was not very well thought out, and the broken web UI will be useless to everyone.
- 8y ago
- Q6T46nT668w6i3m 8y agoI’ve assumed the 2018 version of the dynamic library view is bad is that non-operating system dynamic libraries are bad (and operating systems should provide a GUI library), use a web browser, or use the command-line.