Submind YouTube summaries
Thumbnail for RSRE Flex: reviving an innovative, remarkably odd British operating system that almost nobody knows

RSRE Flex: reviving an innovative, remarkably odd British operating system that almost nobody knows

Watch on YouTube

Video summary

The video explores the story of RSRE Flex, a remarkably unique British operating system developed in the 1970s at the Royal Signals and Radar Establishment (RSRE) in Malvern. The speaker aims to revive not just the software itself but the innovative spirit that produced it, tracing its origins to a convergence of advanced mathematical concepts and computing theory from that era. Central to Flex's design was the integration of Ian Curry's concept of "praiseworthy procedures," which utilized lexical closures to create private universes for data storage, alongside the security model of capability-based access control. This approach treated resources like files as unforgeable tokens rather than relying on user identities, a paradigm that was far ahead of its time but ultimately limited Flex's widespread adoption due to its complexity and the lack of mainstream support for such features in the 1980s. The technical foundation of Flex relied heavily on the ALGOL 68 programming language, which was known for its orthogonality and powerful features like strong typing and anonymous procedures, though it was notoriously difficult to implement. The RSRE team successfully compiled ALGOL 68 when others failed, leading them to build a custom hardware platform called the PERK computer, designed with programmable microcode that could execute complex instruction sets tailored for Flex. The operating system itself featured an idiosyncratic user interface where data and code existed as typed values within closures, navigated via hyperlinks known as "cartes" rather than traditional file systems. This environment allowed users to manipulate programs directly in memory without dealing with physical files, compiling code through a series of visual transformations that resulted in new references to the compiled output, effectively blurring the line between data and executable instructions. Despite its technical brilliance, Flex remained largely obscure outside of small academic circles and defense research communities, leaving few traces in modern computing history. The speaker recounts the personal journey of recovering original 8-inch floppy discs containing the system from private collectors after decades of dormancy, highlighting the physical challenges of preserving such fragile hardware from the 1970s. While concepts like lexical closures and capability-based security have since become standard or re-emerged in modern contexts, Flex's specific implementation never gained traction due to intellectual property hurdles involving licensed numerical libraries and unclear distribution terms from the original defense laboratory. The talk concludes with a call for assistance in clearing these legal barriers so that this innovative system can be shared more broadly, celebrating it as a testament to a visionary but ultimately isolated chapter in the history of computing.
Read the full video transcript
All right, thank you. Uh, thank you very much. Um, okay. So, uh, as usual, I'd like to start my talk with a disclaimer. And, uh, this time the subject matter is entirely responsible for the caveat. As we sit here in this big tent, I observe that the talk title has the word revival in it. And even though this mainly means the actual recovery and usage of the flex environment itself, I'm hoping today to try and revive some of the spirit of the complicated network of ideas and influences that gave rise to this unusual vision of computing. All to say that we've got a bit of a journey before we get to Flex itself. I'm going to be talking kind of fast to cover the bases and taking cues from a script. And I'll also maybe punctuate chapter markers with an audio effect which I hope is helpful. Uh folks, I'll do my best. Okay. So, for the past year, I feel like I've been using a computing platform from another universe, and I'm very excited to share it with you now. Uh in fact, it's not really from it's not from outer space. Uh going somewhat against this year's EMF theme. It's actually from about 5 miles away that way. At that place in the 1970s, a bunch of interesting threads in computing came together to yield a very different vision of what using a computer could be like. And starting from this intersection, let's begin with that firmst of foundations, the mathematical realm of programming language theory. In in particular, we begin with this humble typewritten technical report from 1982. The author is Ian F. Curry, a name for us to remember. This paper describes a programming language characteristic that Curry found especially pleasing. And in the reading of it, you get a sense that the pleasure itself was as motivating to him as the practical benefits. I'll try to convey the idea as follows. Now, not everyone is a programmer, but I hope we can all see what's going on in this function that takes in a number x and gives back that number plus three. And using this function is very simple. Plus 3 of 12 is 15. + 3 of 20 is 23. But suppose that rather than typing in very similar looking functions for plus five or plus two or plus a million if we wanted them, we want the computer to be able to make these functions to order. All we want to do is give the computer the number we want to plus and the computer should give back the function that does it. This saves us the work of typing very similar functions over and over. And what we're looking for is a function that makes a function like this one. It's called Plusmaker. and it takes in uh this number n and it makes a function that returns x plus n. And let's use it now. So when we make plus two, we say plusmaker of two that gives us this plus two function. Plus maker of five gets us a plus five function. And then we can use those as as shown. Plus 5 of 14 is 19. Plus two of six is 8. All good. Now what Curry's paper is so excited about and what is actually a fairly subtle concept is this. Look back at our plusmaker function factory. The value n that we give to plusmaker is always just called n. But plus five remembers that n was five when it was made. And this doesn't change or get replaced when we call plusmaker again with n equal 2. It's like there's a separate history known to each function uh that plusmaker makes private universes uh enclosed within the hidden memories of plus 5 and plus two. Now programmers and computer scientists in the audience are wondering why I'm not using the official name for this feature, lexical closures. Well, I didn't because Curry didn't. He called functions with these private universes praiseworthy procedures. As you as you may have noticed, this paper is called in praise of procedures. Now, lexical closures had already been described in 1964 by bio icon Peter Landon. I don't know why Curry didn't use the term or reference related work here, but he wasn't exactly a latecomer. It would be another 10 or 15 years before programming languages unabashedly proclaiming this feature emerged into the mainstream and Curry had a wish list in the meantime. Praiseworthy procedures could be very useful for many things. In particular, their private universes could be secure places to store data. Okay. Now, if you were interested in featureful programming languages for large software projects in the 1970s, a few options were of interest. One noteworthy candidate was Al Gol 68. A language [laughter] some fans a language with some in with an interesting past. Most people who know about Alol will be familiar with 1960s Al Gol 60. A language that pioneered a kind of basic block structured form we know well today. For most programmers this simple program is very easy to understand. Well, to make a long and fascinating story much shorter, the people working on the successor language took some huge swings. Reading retrospectives, you get the sense of academic computer scientists gazing out over the broadening intellectual horizon of computing and trying to work out one language that could express every unique grain of the capability and elegance that they were beholding there. And to their credit, their feature instincts were largely correct. Algo 68 has loads of modern features including strong descriptive typing, anonymous procedures and lambdas, first order procedures like our plusmaker uses, array slices, operator overloading, and a lot more. And there are even some things we haven't quite found a use for yet. For example, identifiers like variable names can have spaces in them. And and and look how you can decide which variable you want to assign a value to. This is part of Alol 68's stringent devotion to orthogonality or being able to use most language forms in most settings. But Alol 68's development was famously neither easy nor smooth as described in the excellent a history of Alol 68 by CH Lindsay specifying the language occurred over a series of intense and sometimes acrimonious meetings in these locations. See, Algo 68's advanced features were mooded at a time when computer science did not really have the language to discuss those features that we had today. Moreover, when its inventors attempted to specify these features formally, many people found their notation extremely difficult to understand. Things got to the point where in December of ' 68, several members of the team developing the language authored a minority report that deemed the entire enterprise a failure. Now, ALG 68 did eventually get specified. It's all limited use, notably in the UK and the Soviet Union. Today, there's a very modest revival, including a GCC front end that debuted only last year. You'll almost get the sense that the programming world has caught up to its ambitions. But the conclusion of many during its develop development was that Algo 68 was a programming language so complicated, described by a specification so recendite that nobody could possibly write a compiler for it. But there was one shop that did and it was about 5 miles away that way. Oops, too far. The Royal Radar Establishment was a postmore UK UK mod research lab in Malvin that carried some of that era's momentum in basic and applied science research. Becoming the Royal Signals and Radar Establishment in 1976, the lab made some noteworthy advances in sensing, communications, and solid state physics. Think of a smaller, slightly more defenseoriented Bell Labs and you won't be far off. We we owe the liquid crystal display to them among other things. Just like Bell Labs, RSRE had people working on computing. And you may have caught that you've already met one of them. In June 1970, the same Ian Curry and his colleagues Susan Bond and John Morrison stunned the Al Gol world by demonstrating the first working Alol 68 compiler. People couldn't believe it. They sent code to Malver for them to compile just to prove it. Now, if I'm not mistaken, these developments and later flex took place within the maths and computing group under mathematician and brilliant amateur clock maker Philip Woodward based on an account of someone who was there. The lab sounds convivial, collaborative, and rigorous. Its small, highly talented, and very well-educated membership, all dedicated to their work. The atmosphere was academic with facilities including single person offices, chalkboards, and a common area for tea twice daily and discussions about work and so on. Two more names we must now introduce into this estimable context are Michael Foster and Peter Edwards. Additional Flex inventors and developers, and there were others as well, but by now you have heard many of the central figures. Although the biographical information I found has been limited, I've been able to learn a bit more about their personalities from my witness. I'll lie details since none of those traits seem to have influenced Flex directly. Though I will quote this person in saying I feel privileged to have known them all. Well, for all of its academic trappings, we must remember that RSRE was a defense laboratory and therefore security would have been an acute concern in any computer design originating there. For this reason, we can be pretty certain that one recurring topic in the maths and computing group T-room was two part. These days, most computer security is based substantially on identity. What you're allowed to do is based on who you are. Identify yourself as a specific individual or role, and the computer grants you access to the resources associated with that persona or affiliation. We're all familiar with logging into a computer or website. That's identity based security at work. But there are alternatives. Think of a house key. The security it offers isn't based on who you are, but rather whether you have possession of the key. You can lend the key to someone else and then they have the same access to your home as you do. Well, computer security can work this way, too. And while some of you may be thinking of things like security tokens and UBI keys and so on, those are usually about ways to confirm your identity, a house key isn't like that. It provides access to one resource, your house, uh, for whoever holds it. And there's a computer security approach where, like a house key, resources are secured behind special keys. Present the computer with the key and you get the resource. Without the key, you don't get it. It doesn't matter who you are. The computer doesn't really track identities. These keys are called capabilities. And the paradigm is called capability based security. For programmers, capabilities can be thought of as unforgeable pointers. Versions vary, but it's not unusual for them to be bundled with type information and memory bounds. Well, I think it's a bit of a shame that this approach isn't more popular, partly because the existence and possession of powerful access tokens seems like an excellent mcguffin for sci-fi caper films. But it's not an easy system to set up. You need to make certain that the ability to make a capability is strictly controlled or else anyone can make their own and gain access to anything. So usually this is done with dedicated hardware. And this is what brought us such famous systems over the years as IBM system 38 or Intel's disastrous APX 432 and closer to home Cambridge Cap and the PI system 250. We all know and love all of these. Anyway, finally, oops. Yeah, at last we've laid out some key background and concepts behind Flex. It's now the late 1970s, and Ian Curry is joined by those fellow researchers, Foster and Edwards, in pursuing a vision of computing that combines all of these things and more. What if you had a computer whose fundamental instruction set architecture was ideal for ALOL 68, but not just Alol 68. Algo 68 with praiseworthy procedures and their private universes. Regular Algo 68 for all its features didn't have those and with added security and control of typed capabilities ensuring that resources could only be accessed by certain means and in certain ways. And on top of all of this, Curry Foster at L sought to remove the perceptual distinction between data in memory and data on disk. No files anymore. I'll try to show that later. There had never been anything like it. And that's why the RSRE had a dedicated multi-user minicomp computer made under contract by Logica. They called their concept and the computer the flex machine. And for its time, this was a pretty nice computer and it realized much of what the research team had aimed to achieve. Part of how it did this was that loads of sophisticated functionality was built into the microode that implemented the machine's instruction set. Okay, microode. A sidebar here to explain this important term. Think about how the atoms of your of your physical acts, picking up a glass or standing up or taking a step. Think about how these are actually a symphony of muscle contractions and relaxations that some part of you learned in your earliest years, even though they're probably completely opaque to you now. Well, the atoms of computer programs, instructions like add these numbers, move this data into memory, talk to that peripheral. These two are a subliminal symphony of transactions between numerous discrete elements inside a computer processor. Not all CPUs do it this way, but for those that do, microode is like the orchestral score for these symphonies. And the flex micro flex machines microode symphonies were especially rich and complex. Anyway, I'd say more about the logic built machine, but it didn't last long as flex development moved on to successor systems. This is why I need to introduce Okay. perk. It's 1978 in Pittsburgh and Three Rivers Computer Corporation is a hardware startup that's fed up with Xerox's failure to bring its revolutionary vision of modern computing to market. So instead, they make their own Xerox Altoike computer called Perk. To many, this is the first workstation computer available for commercial sale. It has got a lot of the fundamentals of modern computing. There's a pointing device and a high resolution bitmap display. There's even sound. But most attractive to the flex folks at RSRE, it has programmable microode. You can design and upload your own processor defining symphonies, establishing the set of atomic instructions it can follow. Three Rivers was probably lucky to partner with UK computer giant ICL who helped them make their hardware slightly more practical for commercial sale. Slightly. This plus the UK Science Research Council advocating workstation competing with perk probably accounts in part for how Foster Curry at Al wound up using it as a successor to the bespoke logica computer. Today, there are a few of these systems still knocking about. As a rule, they are very difficult to keep running. The logic is spread out over more than 600 discrete IC's, many running close to their maximum operating frequency. if any goes marginal as they are want to do after about 40 years. The computer ceases to work and hours and hours of intense hardware troubleshooting await you. [laughter] All perks have a numerical counter display for power-on diagnostics. Each increment asserting that another part of the computer is still working. Perk usage includes a good amount of flipping the power switch and watching the number count up in a spirit of silent prayer. So, let's do that now. Okay. 10 past fundamental processor checks, but we're waiting. Where's the hard drive? Can't get to the hard drive. Screen's still blank. 14. 14. Oh no, there's no hard drive. Well, uh, maybe it's spun up now. Hit reset again. Okay, now we're cooking. Memory checks. Okay, waiting for a boot key. And up we go. And yes, Flex is booted. Here it comes. Hey, welcome to RSRE Flex everyone. [applause] So, Flex starts out idiosyncratic right out of the gate. Let's log in. The syntax is a little funny, and that's because logging in amounts to executing a procedure that takes no arguments. a praiseworthy procedure. Your entire user experience and all of your data lives inside the closure, the private universe of a procedure whose name is your name. Now, some weird stuff happens when you execute the call, but once you're in, you're sitting in a text editor. You can type things like normal, and not very much happens, but that little mouse button diagram hints at ways to navigate beyond a single page. There are spe special keyboard keys, too. I'm going to use one now on that bit of text that says tutorial. It's the same one I used when we logged in and it's called the obey key. Okay, not a big change. The word is now surrounded by a box, but it's actually a huge difference. As far as the interface is concerned, the text is no longer there. It's been replaced with what you and I might call a hyperlink, but what Flex calls a cartou. This is an illusion to the ancient Egyptian method of denoting royal names in writing, which was to surround them with this oval shape with a line tangent on to one end. Pointing and clicking with your examine mouse button. I apologize for the panning. It can't be helped. Um, but anyway, what that does, uh, it takes you in this case to the tutorial, which is just one of several online documentation facilities. All of Flex's docs, bar the install install instructions, are online, and they are extensive. The tutorial gets you started with editing and navigation which is unique and can take some practice and goes all the way to developing here. What the keyboard keys do for example. Well, returning now to the starting place. Uh let's do a bit more typing. So let's do that. Okay, I'm now going to type one, two, uh three. You never guess four and five. Okay. Yeah. So, um um yes, as mentioned, we're just in a text editor, but the obey key causes your command line to be evaluated by the command line interpreter. It's not really like a conventional command line, though. In Flex, this facility is mainly for building values like the one I just typed. Watch what happens when we press obey. Cartou is everywhere, just like when we logged in. Uh let me make a duplicate of this and then press a special key. Let's hope I remember how to do that. Yes. Okay. And now I'm going to press the mode key uh keypad one. Okay. Uh here we now see the type or mode of these values. Cartes are typed. But let's go back and examine the structure we typed before. So there we go. Here it's behaving less like a hyperlink. We're instead taking apart the structure and seeing the values inside. So cartes are typed references to values. Be they numbers or text data or source code or what have you. typed references. Cartoues are visual representations of capabilities. Perhaps this is why Flex's principles never cons never never themselves characterize Flex as being hypertextbased. Maybe they felt it was more general than that. Well, enough messing around. We should edit some code. Uh the perk emulator I'm using has some limitations. It can't write data to disk yet. So, I've prepared an example on my real perk ahead of time. It's called my EMF stuff. We're going to obey it. And now we're going to examine it. Okay. In this document, I've laid out a kind of unrolled experience of writing and testing some code. The first cart at the top brings us to the source code. Note that there's no file name here, just a link. You don't really think of files, just values. The text inside the cart is arbitrary. It's not a file name. Anyway, let's give it a quick look. And it's just a simple algo 68 program. It just adds up numbers in a list. Well, uh, very good. We want to compile it. And so to compile something, uh, what you do is, uh, you copy your cartou, or rather you don't copy it because you're not unrolling it. You're just editing it. Anyway, you apply the alol 68 procedure to it. Uh, to the cartou that points at your code. The exclamation point, by the way, means apply procedure. There are a few more steps after that to get a reference to the compiled procedure itself. But note that each step results in a new cartou that refers to the result of that step. Ordinarily, you would replace the text inside to avoid all of this like deeply distracting nesting. Uh but then finally at the very end here, we've copied uh that procedure referencing cartou. Uh and now we can apply it to some arguments. So let's just do that. You've guessed right. We're going to say obey. And off it goes. As always, the result is a cartou. So we have to examine it to see what it refers to. Sure enough, thankfully it's 108. [applause] Okay, one final thing to show. Uh we'll make a new window cuz uh Flex has a tiled window manager as you can see. Uh and we're going to open one final thing. Position that there and say doc and obey. There we go. Time to examine that. Yeah. Uh okay. This is your table of contents of system modules. Code your program can call. And you can inspect pretty deeply. And what I'm hoping to show you is in here. I guess interaction with programs. And this is another list. And we're going to go to split window. Okay. Uh so this is system source code, but but look at the look at the top here. Uh if you want to use code from another module, you don't say include this or import that. You just stick the module's cartou at the top of your program. Yeah. So let's sum up. within the hidden universe of our own praiseworthy procedure. We're using a hypertext editor to construct and manipulate strongly typed values, including programs whose references are represented graphically as type setable visual handles called cartes. And that is scratching the surface of flex. Folks, I'm really not aware of anything else much like it, neither now or in 1985 when it was made. Maybe list machines. I don't know. But let's now give our simulated perk a rest and talk about. So what goes on inside the hardware of a computer designed to realize everything we've just seen? What do the actual bits, byes, and operations look like? Well, here's a taster. Most data is grouped into 32-bit words. Your most basic data numbers all have this one bit at the very end set to zero. That means this word is not a pointer, not a reference to other data. Down at the bottom, we do see a pointer and that bit is there one. Only the hardware is able to see or set this bit. Note [snorts] also that pointers have a handful of bits that say what type the data is. But there's more to capabilities than that. References to vectors and arrays include dimension information, and procedure references are this complicated data structure. Studying this diagram will teach you how Flex makes its procedures praiseworthy in hardware. Here are some of the fundamental machine instructions uh that binary program code in Flex is made of adding comparisons and so on. Now if you look you may wonder what this U business is. Flex uses a stack machine as well as a single register U. It's not like most registers we know. U stands for universal. It can hold basically any data structure of any size. Uh flow control uh flow control instructions are pretty high level. They're a good match to Elgo 68 code, but keep looking and you'll find some increasingly esoteric instructions like these four for interfacing with a laser printer. All of this made for a pretty compact OS kernel. And uh they were proud of this. Well, there's a lot more to show, but I should probably start wrapping up. So, did Flex ever make it outside of our research lab in Malver? Well, the answer is yes. Starting in 1985, you could contact the RSRE and under terms that have so far been lost to time, get an evaluation copy of your own. It came to you on about 15 8in floppy disc, which is what the perk used for uh removable storage. As best I can tell, Flex made it to a few educational institutions, among them the University of York. Flex was relatively absent from the scientific literature, however, and it had little influence on the academic OS community. Flex folks didn't stop with Flex. Meanwhile, Curry and Foster went on to create 1015, a kind of code for programs that's independent of the computer that runs it. Uh, this effort was useful for building compilers and a project called Tendra carries on today in a relatively limited way. But beyond that, Flex left few traces. Praiseworthy procedures are basically expected of any new highle programming language. uh capabilities fell out of fashion in the9s but have started to reemerge as the modern internet and mobile world has revealed the limitations of identity based security. Hypertext obviously became a big deal but Flex had very little to do with it and Curry and Foster have passed away both unfortunately although Susan Bond and a few other uh RSR and Flex people from uh from around that time are still around. Well, it's pleasant to wonder what might have happened if Flex's less popular concepts or its user interface notions made it into the mainstream. I do have a few thoughts on this, but I'll probably have to let you imagine on your own what it would be like. Uh, I will say if nothing else, uh, I'd much rather give uh, an AI a whole bunch of capabilities rather than have it actually impersonate me. Well, for most of the century, Flex was remembered by a handful of RSRE related people and small numbers of fans of the Perk computer. For the latter, it was this little known operating system that some people had maybe heard of or knew someone who had used it. Well, I'm a recently minted Perk weirdo. And as other weirdos urged me into the quest, I managed to find floppy discs containing flex in the hands of a couple of private collectors. After months of preparation and practice, I succeeded in archiving many of these discs using a setup that connects an 8-in floppy drive to a modern computer for low-level imaging. For those in the know, the drive is a Tandon TM848-2 floppy drive, probably from about 40 years ago. And I'm using a grease weasel as my imaging device. This shot and the next are POV images of me finding flex media and artifacts in the back shelves of one of these collections. You can imagine how excited I was about this. But here's another POV image that illustrates some of the things you encounter in a recovery job. There's a beautiful mold specimen right there. Altogether, I think I probably traveled about a thousand miles over multiple trips to get what we have now. And if anyone here has a line on more, I am glad to tack on another thousand. Ding. There's little I would like to do more than share Flex with everyone here. Emulator trouble notwithstanding. It is straightforward to install and experience. But this is where I have to ask people in the audience for help as there are two substantial hurdles all related to IP. We're working now with the Malvin Radar and Technology History Society to try and find anyone who has any memory or details of the terms by which RSRE made Flex available to third parties. If there's the remotest chance you might know anything about this or know somebody else who might, please talk to me. Flex also contains licensed numerical library code made by numerical algorithms group which is still around and trading under the abbreviation NAG. Uh or maybe you say NAGV. Either way, uh some of this library code includes source code. And while there probably isn't much called today for Nag's Alol 68 uh products, numerical code always contains precious magical constants that people can sometimes defend rather jealously. So if anyone here knows anyone friendly at Nag who might be worth reaching out to, I'd love to hear from you. Until we manage to clear some of these blockers, Flex won't easily make it much further than the private universe of my own hard drives and cloud backups. So, uh, so concludes my effort to cram as much Flex as I can into 30 minutes. It's hard not to reach the end of a talk like this without some degree of regret as there's so much more that I know people here would be interested in. And I I it's hard to feel like you've done the topic justice. I haven't covered the write once file store, for example. Still, I hope you enjoyed what little you saw. If you're interested to see more things or try out Flex for yourself, options are limited, but you know, come find me. I'll be at the Q&A tent after this, or uh dial RSRE, that's 7773 to summon me. Uh and you can try it out on my laptop. And uh yes, I must thank these uh very important people for helping me discover and recover Flex and the perk as well. And I must thank you all for your kind attention. [applause]