Jonathan Blow on how an operating system should work

Поделиться
HTML-код
  • Опубликовано: 16 июл 2024
  • A clarification on drivers:
    • Jonathan Blow on Drivers
    If you have questions, you can come to one of Jon's streams:
    / j_blow
  • НаукаНаука

Комментарии • 363

  • @AN4RCHID
    @AN4RCHID 3 года назад +1349

    Once Jon has finished his language, his OS, his chipset, fixed production line manufacturing of components, solved global supply chain inefficiency, invented renewable computing resources, and resolved the problem of labor exploitation, then his next game is really going to run like greased lightning

    • @swifton
      @swifton  3 года назад +170

      LOL, greased lightning is quite a picture.

    • @Liam-pf7ih
      @Liam-pf7ih 3 года назад +4

      Yes

    • @yosmo78
      @yosmo78 3 года назад +42

      And it will all be live streamed :)

    • @5Gazto
      @5Gazto 3 года назад +37

      If people were smart, they would collaborate for it.

    • @mendelovitch
      @mendelovitch 3 года назад +32

      I now want and need a Jon Blow musical running on broadway and across the world for 40 years.

  • @___Hermitage
    @___Hermitage 3 года назад +386

    After the death of King Terry, is Jon the man chosen by God to rebuild the temple?

    • @outofranger
      @outofranger 3 года назад +47

      Temple OS 2: Electric Bug a lot

    • @_rcs
      @_rcs 3 года назад +8

      SerenityOS

    • @jamesevans2507
      @jamesevans2507 3 года назад +1

      @@_rcs Is SerenityOS even good?

    • @_rcs
      @_rcs 3 года назад

      @@jamesevans2507 I am not sure. I don't know anything about it actually.

    • @Radgerayden-ist
      @Radgerayden-ist 3 года назад +10

      @@jamesevans2507 it's one of the most well made hobbyist OS out there for sure

  • @matthew314engineering7
    @matthew314engineering7 2 месяца назад +17

    "I don't fail at this kind of things anymore"
    I love this energy

  • @JensDoll
    @JensDoll 3 года назад +92

    Oh well. We did this like a decade ago. The L4 is a mirco kernel. It used shared memory to do synchronized IPC in a very efficient manner. It used namespaces and capabilities instead of absolute paths to resources and there are neat tricks like user level page handler. It was a very great time, but it made me a bit depressed since the major players like MS and linux - even now are not able to pick up those advances. If you want to look up those things, I think the L4 project page is still up (although it might be a bit dated now). Another OS to look at is Fuchsia (which I think borrowed at least the user level page handlers from L4)

    • @kelownatechkid
      @kelownatechkid 3 года назад +3

      Fuscia isn't GPL. Step backwards.

    • @SimonBuchanNz
      @SimonBuchanNz 2 года назад +20

      @@kelownatechkid the kernel is MIT and user space is BSD or Apache. Obviously the reason is that they want to support phone providers developing closed hardware drivers, which isn't great, but that's already the situation in Android for various dumb reasons (the TIVO box situation)
      So no, not really a step backwards.

    • @happygofishing
      @happygofishing Год назад

      ​​​@@SimonBuchanNzything less gpl is still Talmudic

    • @laughingvampire7555
      @laughingvampire7555 Год назад +1

      @@SimonBuchanNz so because there is something already badly done that it means is ok to keep tolerating in the alternatives?

    • @tapwater424
      @tapwater424 10 месяцев назад

      @@SimonBuchanNz You can accomplish that with the GPLv2 no?

  • @ChaosPootato
    @ChaosPootato 3 года назад +31

    "Come on bro"

  • @blehbleh9283
    @blehbleh9283 2 года назад +51

    The high number of processes is due to the Unix philosophy. Maybes it's less than 100 on stock Ubuntu but you can easily move that number down or up depending on what you use or what daemons or services you enable

    • @mennovanlavieren3885
      @mennovanlavieren3885 Год назад +12

      But one thing that is missing from that philosophy is a standard reliable way to start small background tasks and have data pre-fetched and cached out side of it in a configurable way. To many processes are just waiting on some event like a connected USB device which might never happen. I don't need all those deamons running (sleeping) and requiring precious boot time. But the OS must have a way for the process to quickly start up when an event happens. Processes need to be really light weight again. The biggest problem there is processor cache invalidation upon context switching.
      I mean, lots of boot time is spend to load state into memory that is the same every time. It amounts to a couple of MBs of important data which could be pulled from disk in less than a second if the OS (or Init) had some more knowledge of what all those deamons need. It is the same problem with JVM like virtual machines and script languages. They need to compile the same code over and over again. And they also have various solutions bolted on to solve these problems. These might be generalized.

  • @jaysistar2711
    @jaysistar2711 2 года назад +34

    If you think about it, if the operating system is done in this way, and metadata is kept in the binaries, there could be multiple operating systems that all use the same apps. "Drivers" are apps that know machine specific things, and comunicates with mmaped pages, so drivers could still exist to smoth over the differences between kernels.

    • @danight33
      @danight33 Год назад +10

      treating the OS like a virtual device is a nice idea, but it would drive him ballistic (which I would like to see)

    • @RenamedChannel
      @RenamedChannel Год назад +1

      This has already been implemented in MS-DOS, PC-DOS and other DOS variants.

    • @jaysistar2711
      @jaysistar2711 Год назад +3

      @@RenamedChannel I grew up using DOS, and I worked for GameTap on the DOS games emulator, so I'm pretty familiar with DOS internals. Yez, it does work this way to some extent; DOS and DPMI work through software interrupts, which can switch contexts to the driver when needed. File system process sharing and isolation isn't something that's done in DOS, unfortunatly. Allocating memory through DPMI and talking to the hardware was nice, but it wasn't technically part of the base OS. DesqView (without X) was one of the best user interfaces that I think I've ever used becides Plan 9's. You open a new window, and whatever command you gave can own the window or pass the window to the next process. You could open another Window with a different command, also.

  • @KilgoreTroutAsf
    @KilgoreTroutAsf 3 года назад +52

    Coming soon: Blow OS

  • @scottanderson2871
    @scottanderson2871 2 года назад +17

    I love the way this dude thinks.

  • @fleaspoon
    @fleaspoon 3 года назад +7

    thanks for these videos man

    • @swifton
      @swifton  3 года назад

      Glad you liked it!

  • @m.p.jallan2172
    @m.p.jallan2172 3 года назад +72

    i would love to see the complete interrupt cue and cycle for a modern OS, even an old OS like XP. I get the feeling there must be thousands of interrupts going on, before your code even gets a sniff, if the OS gives it time.

    • @jeyko666
      @jeyko666 2 месяца назад

      You can see it in a profiler i think? At least i can see other apps in Tracy in my gl engine

    • @sub-harmonik
      @sub-harmonik Месяц назад

      ever try to SIGINT a running application and have it take a couple seconds to stop? this is what thread priorities are for
      almost every modern app you use in practice will sleep, aside from command line pipelines

  • @whatiactuallywanttowatch8802
    @whatiactuallywanttowatch8802 4 года назад +22

    Thank you for upload, very interesting topic.

    • @swifton
      @swifton  4 года назад +3

      Glad you liked it!

  • @willlogs
    @willlogs 3 года назад +7

    "Come on bro" -Jonathan Blow

  • @Longlius
    @Longlius Год назад +4

    Looking forward to the inevitable JBlow vs cat-v showdown.

  • @flyLeonardofly
    @flyLeonardofly 3 года назад +10

    "I mean cmon bro!" haha love it!

  • @khaoscero
    @khaoscero 3 года назад +61

    He is gonna like Temple OS :p

    • @franciscofarias6385
      @franciscofarias6385 3 года назад +3

      I don't know if you're being sarcastic Temple OS does a lot of things the opposite way from what he's saying.

    • @pleggli
      @pleggli 3 года назад +4

      @@franciscofarias6385 IIRC TempleOS does run HolyC functions from the command line though which seems to be what Jon was mentioning in this clip. TempleOS was never meant to be any kind of mainstream OS, because it's written for fun it doesn't do pointless things like security, you have to see it for what it is.

    • @ViktorHJ
      @ViktorHJ 3 года назад

      @@pleggli Tempel OS was never meant to be anything but the delusions of a sick man. Don't get me wrong, Tempel OS is very entertaining, but it's not a serious tool.

    • @acles7937
      @acles7937 3 года назад +22

      @@ViktorHJ Wow we have a serious professional here guys beware. (Literally nobody markets TempleOS as a "serious tool" stop being such a tryhard)

    • @julkiewicz
      @julkiewicz 3 года назад

      @@Borgilian That_escalated_quickly.gif

  • @elieichner
    @elieichner Год назад +3

    This video get better and better with time.

  • @ivanpozdnyakov3690
    @ivanpozdnyakov3690 3 года назад +39

    Yes, totally agree. Im terrified with the complexity of OC. Sometimes its seems ridiculous. Tiny Linux requires MB to do stuff!

  • @henrykkaufman1488
    @henrykkaufman1488 2 года назад +3

    Anyone tought of the fact that with CLI in library you could easily (unit?) test it diffing output with the expected one without programming, on any machine, using a compiled binary?

  • @TheBrickLayer00
    @TheBrickLayer00 3 года назад +2

    Does anyone have a link to the Hacker News post he's mentioning? I'd be really interested in taking a look at it

  • @samuellourenco9526
    @samuellourenco9526 2 года назад +9

    Some guys criticize userspace, that things like peripharicals should not use userspace. But the fact of the matter is that userspace saved me a lot of times. I don't have to build a driver each time I want to talk to a USB device. And just using libusb makes the code much more portable and easier to compile (and install). Jonathan has a good point, and I'm glad he thinks that way. Only people that never had to communicate with and control USB devices think that everything should be done at the kernel level. It is just ludicrous.

  • @GeorgijTovarsen
    @GeorgijTovarsen Год назад +5

    CLI and library being the same thing would be quite usefull but I'm afraid it may be a problem becuase it would mean that scripts need to be written in one lnanguage that accepts that library so it raises the question: what programming language should these libraries be designed for?
    Or maybe we should all agree to a protocol that all programs agree on for "output of programs" so writing CLI and/or wrapping libraries becomes easier (imagine, just for the sake of making example, using JSON for CLI output, representing JSON types in each language and making every library work that JSON type for data that needs to be passed around)

    • @sergeysmyshlyaev9716
      @sergeysmyshlyaev9716 2 месяца назад +1

      In TempleOS all HolyC functions you write are loaded in global executable memory and you can call any HolyC function from CLI.
      I don't know for sure, but I assume old Lisp Machines did the same with Lisp functions.

    • @sub-harmonik
      @sub-harmonik Месяц назад

      the thing is now JIT compilers are pretty fast and every serious programming language has APIs for filesystem and files and time etc.
      As for interface an 'object' interface like powershell/nushell is a good modern choice

  • @bigdizzle8120
    @bigdizzle8120 3 года назад +27

    I'm not sure I want each process talking directly to network card, there needs to be some intermediate system to controll access to the device, tell other processes when it is busy, etc.

    • @pleggli
      @pleggli 3 года назад +2

      But it would be even better if that was done in hardware and we are somewhat getting closer to that in some areas. There already exists ways to share PCIE devices transparently between multiple consumers (SR-IOV). The networking interface simplu appears as separate devices for each consumer. It's just one thing that could be leveraged by a forward looking OS kernel.

    • @Q0T0J
      @Q0T0J 3 года назад +4

      @@pleggli and a moment of silence for intel based systems with shared IOMMU groups killing the dream of virtualized hardware sharing.

  • @rp627
    @rp627 22 дня назад

    it's incredible to see what one man can do.

  • @malteborgmanm2626
    @malteborgmanm2626 3 года назад +48

    I now want a talk with Jonathan Blow and Linus Torvalds. It seems liek those two just might be able to communicate clearly and have an argumentative but productive discussion.

    • @Sergeeeek
      @Sergeeeek 3 года назад +10

      Yeah, all Linus does is develop the kernel, so their experience gap in this field is too big

    • @malteborgmanm2626
      @malteborgmanm2626 3 года назад +10

      I believe that a user developer dialogue could be enlightening for both though.

    • @Sergeeeek
      @Sergeeeek 3 года назад +4

      @@malteborgmanm2626 yeah, that would be interesting

    • @simonfarre4907
      @simonfarre4907 2 года назад +10

      @@Sergeeeek right, Jon doesn't have remotely enough experience to produce a decent and qualitative discussion.

    • @robinpage2730
      @robinpage2730 Год назад +7

      Terry Davis blows them all away. Dude wrote a whole os, with drivers, file system, kernel, shell, graphics, and apps, and did it while fighting insanity. Torvalds wrote a kernel? Pretty good, but not true greatness.

  • @makowiec2k
    @makowiec2k 17 дней назад

    "Every program should be sandboxed" then proceeds to "User space dekstop environment"
    Title should be "Jonathan Blow on fever dream"

  • @ilyabykov2437
    @ilyabykov2437 2 года назад +26

    I see, he'll write his OS next, after he's finished with his game engine. And after that, he'll design his own properly working computer

    • @robinpage2730
      @robinpage2730 Год назад +5

      RISC-V looks good for facilitating that

  • @hermantcherdakli2053
    @hermantcherdakli2053 Год назад +2

    So basically an immutable OS with containerized apps running in userspace like suse microOS or fedora silverblue?

  • @syzygy6
    @syzygy6 3 года назад +5

    I’m curious how he feels about the Hurd, it sounds like a lot of his opinions are in line with its design.

  • @timseguine2
    @timseguine2 9 дней назад

    I often agree with him. And even when I don't he has a very good reason for his idea, and I feel like I could have a productive conversation with him.

  • @cozyfog
    @cozyfog 9 месяцев назад

    that man just speaks it out

  • @pleggli
    @pleggli 3 года назад +23

    He want an OS with fewer processes yet he wants drivers to run in user space which I don't disagree with but it will probably results in more processes. Ok 400 is maybe a bit much, my Linux boots to the window manager below 100 processes and at least 20 of them are development related stuff that isn't really needed for a generic user. When I start chrome though I quickly get 70 new processes.

    • @OpenGL4ever
      @OpenGL4ever 4 месяца назад

      # A simple:
      ps -A | wc
      # gives me:
      272 1109 10851
      on a Debian 12 system used by only me.

  • @Lestibournes
    @Lestibournes 4 месяца назад

    So should each app ship its own device drivers?

  • @luminousmonkey4512
    @luminousmonkey4512 3 года назад +4

    Sounds like an exokernel design.

  • @cranknlesdesires
    @cranknlesdesires 3 года назад +7

    Plan 9 is a step in the right direction

    • @digitalspecter
      @digitalspecter 3 года назад +3

      I wonder what would've happened if Plan 9 had been open source before Linus started writing his kernel...

  • @SharunKumar
    @SharunKumar 2 месяца назад

    5:23 you can kinda sorta do this in powershell but you need to write the lib in c#

  • @FrankHarwald
    @FrankHarwald 26 дней назад

    If anyone here is interested in OS design of the likes that Jonathan Blow just lined out, I can seriously recommend having a look at the design of the L4 micro kernel, because that's literally a kernel which considers & implements all of these aspects: the kernel is only supposed to be a small piece of code doing basic hardware ressource management (adress space, i/o space, cpu & affinity time allocation while enforcing basic access rights & privilege separation of processes but doing nothing else other then that). The only three problems L4 has are a) hardly anyone ever used it because b) hardly anyone ever knew about it because d) its code base is an outdated & semi-abandoned academic project & e) it's just a (micro)kernel, without either driver or user space libraries or programs, so someone would need to build (modern) driver infrastructure, basic system admin tools & basic ui to even being able use it.
    However, if anyone's planning on build an entire new OS using the aforementioned concepts, then at least there already IS an exceedingly well designed kernel which you could use, either directly or more likely at least rewrite it in a more modern & up-to-date way (using modern language & tool sets) - which in the specific case of L4 is NOT a big undertaking because the entire original source code of the entire kernel is just ~5000 lines of C code - absolutely tiny compared to other software projects.

  • @WIImotionmasher
    @WIImotionmasher Год назад +3

    I don't wanna trust my applications with network security. I feel like the network should be OS controlled. Atleast to avoid.... developer tomfoolery

  • @sub-harmonik
    @sub-harmonik Месяц назад

    at work we use RHEL and it uses way fewer than 400 afaict. I haven't counted but I think it's more like 30 by default
    It's true that that's for a server where it doesn't need a bunch of 'daemons' for the user, but using a minimal distro won't use that many.
    isn't one of the big tradeoffs between dynamic vs static partially not having to reload big commonly used libs/functions in memory?
    Also things like plugins have to be linked at runtime so those seem like they have to be dynamic by definition.. unless you want to call those 'executables' (but that's more of a semantic difference)

  • @malcolmvernon6808
    @malcolmvernon6808 2 месяца назад

    it seems like that gummy bear you were eating at the beginning gave you most of the insight to this

  • @friedrichmyers
    @friedrichmyers 4 месяца назад +1

    FreeBSD and Mac are really good OSes. But they can't be ideal OSes. We can only come as far as Mac for general usability but that too is hard for some users.

  • @yash1152
    @yash1152 10 месяцев назад +2

    it always feels to me like "[Jonathan] [blows] [on xyz]" which is super funny. rather than "[Jonathan B.] [on xyz]"

  • @m4rt_
    @m4rt_ Год назад +6

    I wonder if he will actually make his own OS after he is done with the compiler...
    If he does, I think I would at least test it out, and follow the development.

    • @CianMcsweeney
      @CianMcsweeney 4 месяца назад

      Probably depends on how his next game does financially, he's already had to spend a lot on their current game and the Jai language. Hoping he gets to make that is though

  • @VenturiLife
    @VenturiLife Год назад +48

    You know he's a good programmer because he's always trying to simplify things, and use less resources. A lot of our OSes etc. were not developed from the ground up with good security or even good architecture, they just kind of evolved and things were bolted on. Because of backwards compatibility etc. and hidden OS features, the NTFS filesystem has some crazy amount of attributes for file access control, I think it was close to 30 different ones.

    • @michael1
      @michael1 Год назад +20

      The problem is, starting over from scratch only this time doing things right just results in another pile of code that's been upgraded, maintained etc etc. There's no such thing as "ground up, secure, great architecture" for any serious, big software product.
      Blow has no clue about shipping products that billions of people use. He's sold a few non-mission critical games. And that small bit of success has gone to his head to the point where he then deludes himself he has all the answers to every computing problem from programming languages through to OS. He doesn't. You know thousands of people have spent thousands and thousands of hours actually developing OSes. Often, even in spite of this, people still don't want it on their desktop. So, you know, it's easy to talk about how an OS should work but much, much harder to get to the stage MS, Android etc are at with an OS that billions are actually using. Similarly for servers etc etc. Thinking you know better is the sign of a moron (or perhaps like the guy who wrote templeOS, mental instability)

    • @samhsmith
      @samhsmith Год назад

      @@michael1 They say you can't have genius without a scoop of madness. And I say that as someone 2 years into making the OS described in the video become reality. Why do nearly all the successful tech founders have some form of autism? Because everyone who doesn't gets talked out of their creative and innovative ideas.

    • @MrLordFireDragon
      @MrLordFireDragon Год назад +3

      ​​@@michael1I mean, touche, but let's not talk about this like it's just 'a little business success'. In terms of surpassing technical challenges, Jai seems to do a lot of incredibly impressive stuff, and part of why it's impressive is Blow's approach to developing it - what he thinks a programming language should or shouldn't do.
      Now, just because his theories seem to have accomplished something here doesn't mean they're going to accomplish something in the OS space, but I think it would be very easy before Blow made Jai to say "Thousands of people have spent thousands of hours making programming languages, get off your high horse."
      So while I agree he's getting a bit ahead of himself, he's also demonstrably done some amazing things I that I don't think should be ignored. I think seeing whether Jai gets more widely adopted after this game ships is going to be a very interesting test of its viability as a product, and Blow's ability to sell it.

    • @laughingvampire7555
      @laughingvampire7555 Год назад +1

      @@michael1 well, you don't even have the "few non-mission critical games"

    • @revimfadli4666
      @revimfadli4666 11 месяцев назад

      ​@@michael1if these people do know better, hopefully that means they'll start fixing the problem where input is only processed after the display updates(which can be a long delay nowadays) resulting in misclicks

  • @dickpiano1802
    @dickpiano1802 8 месяцев назад +1

    This guy is really smart

  • @ethicalrevolution3294
    @ethicalrevolution3294 3 года назад +18

    I've played around with Linux From Scratch a few times. It's a lot of fun. I really like LFS and Gentoo as my favored Operating Systems, but sadly I have spent most of my life on Windows systems. It's a pain to have to have multiple operating systems to use certain software or games, but I think that is what I'm going to do sometime soon with my new 1TB M.2 drive when I get around to it, and then just have a separate Windows drive, or maybe see how WINE has come along, for games and other software that relies on Windows.

    • @robinpage2730
      @robinpage2730 Год назад +2

      I can build an exe on one PC, save it to a flash drive, plug that drive into another PC, install it, and it'll run. That's Windows. You can't do that with Linux.

    • @shallex5744
      @shallex5744 Год назад +6

      @@robinpage2730 who asked? and yes you can do that with linux, and there are plenty of programs that don't work between different versions of windows lol

    • @keeganm9184
      @keeganm9184 Год назад +12

      @@robinpage2730 Wat. What makes you think that a precompiled binary can't run on different Linux computers? Do you understand how programs work?

    • @drygordspellweaver8761
      @drygordspellweaver8761 Год назад

      @@robinpage2730 Are you joking or are you really this dumb?

    • @nieczerwony
      @nieczerwony Год назад +2

      ​@@robinpage2730 Go and educate yourself , then speak.

  • @magicponyrides
    @magicponyrides 10 месяцев назад

    Interesting musings but I really don't understand what's wrong with 4500 executables on a filesystem.

  • @ivanbraidi
    @ivanbraidi 2 года назад +5

    I love this man. And I want his OS.

  • @joshuamurphy75
    @joshuamurphy75 5 месяцев назад

    The energy and manufacturing sectors would love that OS.

  • @rabbitcreative
    @rabbitcreative 2 года назад +1

    7:00 Amen.

  • @wisnoskij
    @wisnoskij Год назад +3

    note that on linux chrome/firefox can show up as hundreds of processes for some reason. its stupid becuare it makes taskmanagers like unusable as you have to scroll over 9 pages of just chrome. I have ~500 firefox processes/threads/entrys on Htop and and 15 processes on btop (8 tabs).

    • @slavko321
      @slavko321 Год назад +1

      I used to think 32GB would be enough for anything. That damn chrome monster proved me otherwise.

    • @ConfuzedFx
      @ConfuzedFx Год назад

      Is this not resolved by using tree mode in htop? I'm not super sure but I assumed this one process per tab design was to make it easier to isolate and terminate tabs with errors. I'm sure that leads to a lot of bloat though.

    • @wisnoskij
      @wisnoskij Год назад

      @@ConfuzedFx Hmm, I was unaware of this tree collape setting but it looks like it would have solved the issue. But strangely, either FF has changed how it makes processes, or my system is just bugging out, but htop now shows zero Firefox processes (with tree enabled or not), and btop shows 12.

    • @tablettablete186
      @tablettablete186 5 месяцев назад

      Chrome does process isolation, so you have many processes for a single purpose.
      You may have:
      - Main process
      - A rederer process
      - A site process (each tab)
      And so on. Many resources are shared using IPC mechanisms.
      This is why you see many chromes in htop.

  • @platin2148
    @platin2148 Год назад +2

    I don’t get how he does access control without someone to control work? And how does he think how nvme and pcie stuff works..

  • @ArkDEngal
    @ArkDEngal 8 месяцев назад

    I feel like he is describing CubesOS (particularly about sandboxing) or micro kernels

    • @palgaming6848
      @palgaming6848 6 месяцев назад

      micro kernels are as my OS teacher said just horrible to work with. He pointed that most of networking features are from OS development, which made me conclude that microservices are horrible.

  • @wisnoskij
    @wisnoskij Год назад +6

    Can we get the suckless guys to develop the core utils so that we can have some pompous guys fight over if it should be called Suck/Blow OS or Suck plus Blow OS.

  • @drew-et1mm
    @drew-et1mm 5 месяцев назад

    i dont understand how he says in one sentence that 400 processes running is too many but then suggest drivers should run in userspace. would this not also result in a huge number of processes?

    • @CianMcsweeney
      @CianMcsweeney 4 месяца назад

      He explicitly said that drivers should not be a thing

  • @davidjohnston4240
    @davidjohnston4240 3 года назад +4

    Plan9 got the path thing right. Union dirs.

  • @jamesgardner2101
    @jamesgardner2101 2 года назад +2

    Most of the points I heard him bring up made me think "OK, MS-DOS".

  • @sergeysmyshlyaev9716
    @sergeysmyshlyaev9716 2 месяца назад

    5:20 - that's one of the biggest issues I have with Jon's ramblings: he uses words 'simplicity' and 'complexity' a lot, but doesn't give any definitions to them.
    The only actionable definition of 'simple' and 'complex' in context of SW dev that I know of, are the ones given in "Simple Made Easy" by Rich Hickey. And according to those definitions, making the library and CLI tool the same would be an example of complecting 2 things together.

  • @yash1152
    @yash1152 10 месяцев назад +1

    4:15 link-time agnostic libraries statically linked retaining their info so can be patched with updates.
    woahhhh

    • @yash1152
      @yash1152 10 месяцев назад

      4:59 CLI & libs shouldn't be separate; some interface fxns extra
      5:20 e.g. grep & libgrep
      ohwwww, ohkayh.... yeah, that makes so sense. i never thought about it why it wasn't the case.
      one contradiction in small case with previous point: u cant achieve both statically linkes libs & cli executable libs at the same time -- but yeah, thats easily solvable by dynamically linking the common system shipped utils/libs (liko say GNU utils)

  • @spinthma
    @spinthma Год назад +2

    Use Oberon System instead done by Nikolaus Wirth in the 80/90s written in the Oberon language, reducing complexity.
    The very odd thing about the command shell cmd.exe is the implementation of the shell language, its the worst thing of software i used so far

  • @friendlyfripptit2228
    @friendlyfripptit2228 2 года назад


    on windows is from like the digitalised typewriter era or something, shit sticks!

  • @PabloGnesutta
    @PabloGnesutta 2 года назад +2

    I'm an astronomical noob in the subject bur I don't quite get why disallow programs to access the file system?? Don't programs need to access the file system to write files? I'm sure he is meaning something else I can't quite grasp.

    • @swifton
      @swifton  2 года назад +3

      Probably allow each program to create and read its own private files, like in mobile apps. And maybe save something into a dedicated "downloads" folder. There are not that many programs that need to have a read and write access to all files on the computer.

    • @MurtagBY
      @MurtagBY 2 года назад +2

      @@swifton same as processes can't look up in memory of another process.
      Most of the programs don't need access to your whole computer

  • @knetic491
    @knetic491 3 года назад +19

    This discussion happened decades ago with the Tanenbaum-Torvalds debate. What he's arguing for is similar to Minix, with elements of powershell mixed in. Neither gets far.

    • @swapode
      @swapode 3 года назад +13

      I think you have to go a step further than that to get to something fundamentally better. Linux's advantage wasn't really the more monolithic approach (and Tanenbaum wasn't wrong about the drawbacks) but that it was open for hobbyists and that it stayed with POSIX. As history has shown that was the right call to get successful.
      That doesn't mean there couldn't be something fundamentally better that throws a bunch of old ideas overboard. Whether or not such a product could successfully be pushed onto the OS market is another question. Although I think there still might be room if you go via mobile devices. A mobile OS that doesn't push you into the hands of Google or Apple, respects both your ownership of the device and your privacy, isn't completely defined by the availablity of commercial software and runs on a device that on average gets replaced every other year anyway might conceivably have a chance right now.
      And speaking of mobile devices: Some of the things iOS brought to the table, even if just on top of unix, are worth considering on a more fundamental level. Like apps generally running in tight sandboxes with strictly limited communication (be it access to files, certain hardware, networking, other apps or whatever) controlled by the user.
      It reminds me of C++. It's obvious for anyone willing to look that there is aspects at every level that sucks to a degree that it's constantly flirting with having to be declared plain broken but everybody argues that that's the best it can be and you just have to throw layers and layers of makeup over it and sell those as revolutionary. And then along comes Rust and proves that most of those assumptions were bullshit if you were just willing to throw enough of them out and tackle things from a fundamentally different perspective.

    • @swapode
      @swapode 3 года назад +9

      ​@@juliuszkopczewski5759 It's certainly more challenging to make fast, especially on x86, since you'll have additional context switches. But if L4 can reach 90-95% of the official Linux Kernel's performance while maintaining compatibility it probably wouldn't be unrealistic for something bespoke to be on equal footing.
      With that being said, my bigger point is exactly that there might be an architecture to be figured out that's fundamentally outside the box of current common wisdom about how things should be done. That's why I made the comparsion to Rust and what it did for systems programming. It turns a couple of basic assumptions from half a century ago on their head, reintroduces a couple concepts that completely fell out of favor, adds a couple of original ideas and allows to approach programming on bare metal with a completely different mindset.

  • @simjans7633
    @simjans7633 3 года назад +56

    There are probably hundreds of people that have developed operating systems just as Blow describes. Those operating systems are used exclusively by their creators.
    When more people start using the operating system and adding things to it to meet their requirements, it will almost inevitably get more bloated.
    The features Blow describes are great, but I'd be surprised if an operating system used by many has them any time soon.

    • @Muskar2
      @Muskar2 11 месяцев назад

      I don't think he was talking about an OS that should be used for anything else than his game(s). I think it's basically just a new way to launch a platform-independent game that is more performant. I'm not experienced enough to imagine the realistic possibilities, but I'm hoping he has better user experiences in mind than rebooting the computer, manually changing BIOS settings and making a hardware partition, to play the game.

  • @steve16384
    @steve16384 6 месяцев назад +7

    I always find it amazing that on Windows, any program can delete valuable system files.

    • @tablettablete186
      @tablettablete186 5 месяцев назад

      I don't think this is entirely true, since many of those files are read-only for non-admin users.
      It still leaves the user profile accessible though (don't delete or you may lock your user).

  • @Ryan-in3ot
    @Ryan-in3ot 11 месяцев назад

    bro but like if my program cant access files then how do i save and load data. Or use my config file, or include my header files.

    • @SquigglyP
      @SquigglyP 5 месяцев назад +3

      You would have access to files, just not any file you want. You'd get a folder where your executable lives and whatever subfolders you have in there. You don't get to just jump to the user's home folder or path out into the wider filesystem. Or maybe you'd also get some User/.appdata/PROGRAM_NAME folder where you can store files or write configurations or something. Any other file saves would require user permission and would therefore be file access initiated by the user, not just because you want to access some files.
      This is a sane way to do things if you want to give users more power and force developers to play by the users rules and not the other way around. There's a reason Microsoft would never design an OS like that...

    • @sub-harmonik
      @sub-harmonik Месяц назад

      @@SquigglyP OSes already do that but all changed where their 'user program data' folder was over the years.
      And it's true that they get access to other folders, but that's because the user might want to save files to a specific directory. And the user running the program either does or doesn't have access to that directory, which the OS knows.
      But it's true that there could be some 'entitlements' key for saving to non-application directories

  • @prognition970
    @prognition970 3 года назад +1

    Your resemblance to Hunter S. Thompson is striking. Wouldn’t be a bad Halloween costume choice.

    • @swifton
      @swifton  3 года назад +3

      This is not me, this is Jon Blow. I'm a different person, I just edited and uploaded this video.

  • @robrick9361
    @robrick9361 10 месяцев назад +5

    This guy should leave computing to the experts and get started on the next Smashing Pumpkins album.

  • @MH_VOID
    @MH_VOID 6 месяцев назад

    What does he even mean by installs?

  • @FlavioMOliveira35
    @FlavioMOliveira35 5 месяцев назад +2

    Your talking sounds like a ancient language for web developers. Inter process comunication, named pipes, user space, kernel space, long gone words I remember from my past 😂😂 Now everything is http request, response, EF, Cloud yada yada. Just trivia stuff I see devs doing over and over again

    • @friedrichmyers
      @friedrichmyers 4 месяца назад

      Web Dev caused a whole lot of brain rot for me too lmao

  • @VanderJamesHum
    @VanderJamesHum 2 года назад +1

    Winblows

  • @kenamreemas3295
    @kenamreemas3295 9 дней назад

    I think we tried this idea with micro kernel architecture and I dont know why, but it did not work out! I think it is a logical solution but it did not work for us!

  • @dingbatfpv
    @dingbatfpv 3 года назад +3

    Can we pls get Blow-S or BL-OS

  • @BrentonWoods774
    @BrentonWoods774 3 года назад +2

    BlowOS

  • @JatinSanghvi1
    @JatinSanghvi1 2 года назад +11

    App developers would want to develop on top of abstractions. If you build an operating system so simple where applications need to deal with bare metal to get anything useful done, someone will need to build an abstraction that sits on top on this OS and supports these apps, at which point it will not make a huge difference between a complex OS and (a simple OS + abstractions).

    • @VirtuousSaint
      @VirtuousSaint 2 года назад +3

      not necessarily. your app would just need to have low-level developers on board to design that part of your app, which enables your app to run better than other similar apps without having to rely on a third-party vendor to supply you with the required intermediate layers. I really like Casey Muratori's idea about having games be shipped with small OSes that talk to the hardware directly and don't require you to have any OS on your PC to run games.

    • @MurtagBY
      @MurtagBY 2 года назад

      Good point.
      I think that he framed it in the way, that it is OK for apps to talk with hardware without leaving user-space and not entering kernel-mode as it is expensive operation.
      So this could be solved by "libs/drivers" being available as basically libs in any programming language.
      The security and shared use of hardware is not clear in this model, right now it is the system who resolves race conditions and keeps mutexes and buffers.
      All above in my limited understanding of Python dev

    • @marcossidoruk8033
      @marcossidoruk8033 Год назад +11

      @@VirtuousSaint "your app would just need to have low-level developers..." Wich makes your app more expensive and time intensive, nothing is free.
      OPs point stands.

    • @Muskar2
      @Muskar2 11 месяцев назад

      ​@@marcossidoruk8033How would it be more expensive? Perhaps you could argue that there's fewer programmers today who know low -level stuff, but a high-level developer can literally become sufficiently qualified in less than a week. And developing software that touches low-level aspects may be categorically faster than traditional programming taught in CS. So I'm curious what your specific reasons are for that claim

    • @marcossidoruk8033
      @marcossidoruk8033 11 месяцев назад +4

      @@Muskar2 because you have to write more code that is significantly harder to get right, wich means more man hours and thus more expensive, duh.
      Also what you just said just shows you have no idea what you are talking about. "Developers could become qualified in a week" not even a chance. Most developers are just straight up bad at their jobs, they couldn't get qualified in 10 years if they tried. Also there is a difference between writing low level code and writing low level code that is actually any good and efficient, the fact that you even suggest that you could learn that in a week shows you have no idea what you are taking about.

  • @UNATCOHanka
    @UNATCOHanka 12 дней назад

    An OS needs to do 2 things:
    1) Boot up and stay up
    2) Have a web browser that keeps up with porn (i.e., the pinnacle of web tech)

  • @user-pw5do6tu7i
    @user-pw5do6tu7i 5 месяцев назад

    quotes from this vid i though were hard, and showed experience.
    "To start I would just not support graphics accelerators because they are terrible to deal with, and I would just hope that by the time we had the os running in a reasonable way that something in the graphics adapter space would have changed enough that we would be able to do something better"
    "thats another way of saying you bet that I will fail because its too hard, I don't fail at this kind of thing anymore, like when I was young i would fail at this kindof thing because I would give up and move onto a different project but i know how to succeed at these kinds of things now and once you know that it's, its not that hard [...] but making an operating system, we can do that, come on bro"

  • @StanislavStratiev
    @StanislavStratiev Год назад

    What's the status of this 2 years later?

    • @swifton
      @swifton  Год назад +1

      I don't think anything happened. He's probably busy with the language and the games. As far as I can tell.

  • @bigdizzle8120
    @bigdizzle8120 3 года назад +2

    Most of the kernel is driver code, if not drivers then what?

    • @swifton
      @swifton  3 года назад

      You can ask him on the stream. I don't know the answer.

    • @IshIKoara
      @IshIKoara 3 года назад +2

      I think he wants drivers but running them in Usermode.

    • @Sergeeeek
      @Sergeeeek 3 года назад +1

      @@IshIKoara yeah, I think once his hypothetical os reaches the same level of hardware support it will have the same number of processes, except they're gonna be user space now.

    • @IshIKoara
      @IshIKoara 3 года назад

      @@Sergeeeek Making more space for exploits is always good ^^

    • @Sergeeeek
      @Sergeeeek 3 года назад +1

      @@IshIKoara well, it's always a trade-off isn't it? Afaik if you run drivers in user space you still eventually have to do a syscall to access the hardware and syscalls are slow.
      Moving all drivers to user space could be a huge performance hit.

  • @GorillaDev417
    @GorillaDev417 5 месяцев назад

    The ideal OS would push the average user away from any type of personal computing fast.

  • @Almostbakerzero
    @Almostbakerzero 3 месяца назад

    Okay, i think this just doesn't make sense. He makes it sound like having a lightweight system somehow goes hand in hand with also having features like virtualization/application isolation. When in reality the latter is actually a really sophisticated mechanism. if you want a very simple system, it has to be bare metal, compiled for exactly your hardware. Without any additional layers of abstraction or virtualization. A system with a whole lot of process separation and stuff will always be one that has to take care of a lot of stuff in the background, and for that to happen it will have to run a bunch of processes in the background.

  • @felixrabe
    @felixrabe 2 года назад +1

    JaiOS!!!

  • @rrr00bb1
    @rrr00bb1 10 месяцев назад

    instead of "everything is a file", everything is a... websocket?

  • @tutacat
    @tutacat 8 дней назад

    So, just run everything in a virtual machine.

  • @erikitter6773
    @erikitter6773 Год назад +3

    Cool. The first buggy software (there is no other software that does anything interesting past very few pieces like on space probes) used (no install needed, just run and also share the memory with no OS partitioning) will blow up the whole OS and everything with it. There will be a huge user base for that. Why talk security after that?

  • @SamuelKarani
    @SamuelKarani 8 месяцев назад +1

    Clone this guy! More of him in the world.

  • @OLApplin
    @OLApplin 3 года назад +1

    13:27
    Dec 18, has he done it yet

    • @swifton
      @swifton  3 года назад +2

      He actually said recently that he won't even play with it this year because there are too many projects.

  • @RetroEcoChicken
    @RetroEcoChicken 9 дней назад

    shared libraries, depend on who is allowed to upload. if f.eks only linux staff is allowed to upload to them then its a great idea but if its open freely to anyone then its a horrible idea.

  • @fluffy_tail4365
    @fluffy_tail4365 Год назад +2

    I don't get how he thinks drivers should work, is he gonna promote random parts of programs to Ring0 using tokens? the only way for a process to access a hardware resource is from there and once there it has kernel-level priviliges

  • @MVPhurricane
    @MVPhurricane 3 года назад +2

    well, let me know if you *do* start working on this-- i'd like to help! =^D

  • @ronmc1677
    @ronmc1677 5 месяцев назад

    I didn't understand a word this man said. But I'm sure he knows what he's talking about...

  • @bluecircle56
    @bluecircle56 3 года назад +23

    The moment when someone you really respect start to talk nonsense with a lot of confidence about a subject that you know a lot about: 😣

    • @KyleLuce
      @KyleLuce 3 года назад

      Hubris is a definite blocker for collaboration and learning, that's for sure. Especially when folks can't recognize there are experts in these other fields, that could help clarify why things exist and paths to improve.

    • @youtubesuresuckscock
      @youtubesuresuckscock 2 года назад +9

      Honestly that's pretty much everything he talks about. He's pretty embarrassing, frankly.

    • @MurtagBY
      @MurtagBY 2 года назад +1

      Well, tell me where is the nonsense part to start with?
      I doubt your expertise here tbh.

    • @bluecircle56
      @bluecircle56 2 года назад +3

      @@MurtagBY I was curious what was the discussion about after 1 year that you decided to reply. Not too long I needed to wait until he said "why do you have 400 processes running".
      There is alot to unpack why this statement is nonsense (and probably more after I stopped watching), and I don't want to waste more than 5 minutes on some youtube reply. But the actual number of processes is really not an issue to a modern OS and HW (modern meaning from 2000). From scheduling, memory management, space and even security.
      The problem is not the number, the problem is bad design and accountability from developers.

    • @bluecircle56
      @bluecircle56 2 года назад +13

      ​@@MurtagBY So I watched until the end, some notes:
      - At the beginning he describes some very logical and right way of how an OS should work: everything is sandbox, kernel should be thin layer, most in user.
      - But that contradicts his assumption that there should be very few "processes".
      - Every IPC should be just memory map and the user is responsible to parsing. That is very hard to do right without breaking basic security assumptions, and would not increase performance as most of serialization logic happens in user anyway and you still need a kind of sync logic that's go through the os.
      - No drivers or gpu?
      - No dynamic libs? well how do you expect the user parse your standard ipc? make them static? how would you update all execs with new ipc security fix on the system without installers? you can't update only some, that would break ipc.
      - No path? home directory? basic app place? he basically described path as he tried to figure what he means. just with some restrictions on path usage (sandbox?)
      - Every time he tackled with how to solve a real problem, he said he did not really think about it.
      Here he really confuses "I think I know how it should be" with "That is clearly how it should be". This is a clear case of the dunning kruger effect.

  • @Jkauppa
    @Jkauppa 3 года назад

    why do you need to cramp all to shared cores

    • @Jkauppa
      @Jkauppa 3 года назад

      your solution is already there, bare metal hypervisor

    • @Jkauppa
      @Jkauppa 3 года назад

      bios interfaces

    • @Jkauppa
      @Jkauppa 3 года назад

      hardware hype.. um, kernel

  • @dizphunkt
    @dizphunkt 6 месяцев назад

    Damn Jonathon, do it! Please release an actually useful OS!

  • @rp627
    @rp627 22 дня назад

    wow, had to implement an OS... for school? uc berkeley is rough.

  • @kAs1m360
    @kAs1m360 Год назад

    He's quite an enthusiast, I see... Jokes aside, I'm really his fun after Braid And The Witness.

  • @DooMWhite
    @DooMWhite 5 месяцев назад

    Some of what he said, NixOs does.

  • @FuegoJaguar
    @FuegoJaguar 3 года назад +26

    These are the words of a man who is neither an OS nor an exploit developer...

    • @Radgerayden-ist
      @Radgerayden-ist 3 года назад +14

      I keep wishing he makes his own OS so he can shut up about Linux already

    • @IshIKoara
      @IshIKoara 3 года назад +10

      yea, he makes it sound so easy but in reality the design decisions serve a purpose. Many ppl thought about those decisions before doing them, i dont want to say everything is perfect but acting like everything is wrong and he could easily do it better is just wrong.

    • @IshIKoara
      @IshIKoara 3 года назад +1

      @@Borgilian you seem alittle bit rude, you talk so much and prais him but why is no one acting? If he is our lord and savier why does he not make an os so we all can besaved from the 400 process os...

    • @FuegoJaguar
      @FuegoJaguar 3 года назад +10

      @@Borgilian He is def not in the top 30 of the field of computing. There is no Blow normal form. There is no Taniyama-Blow-Shimura conjecture. He is not even close. I feel like you have no conception of the depth of the field dude...

    • @cagefury3789
      @cagefury3789 3 года назад +10

      @@Borgilian Top 30 in the field? Ha, that's hilarious. I like Jon, he is extremely knowledgeable and talented, but you're absolutely clueless if you think that is even remotely true.

  • @gabrielkwiecinskiantunes8950
    @gabrielkwiecinskiantunes8950 3 года назад +4

    11:50

  • @ujin981
    @ujin981 2 года назад +20

    1:07 "if you're gonna talk to the network card that should not go through the operating system at all" HELL YEAH!!! Write your own driver for it!!! Write the whole stack of network protocols!!! Write your own firewall!!! Manage sockets in your application!!! By that time your app *IS* the operating system. Show him TempleOS, he'll like it. Better yet, show him TETRIS OS.

    • @ivanbraidi
      @ivanbraidi 2 года назад +4

      And you totally missed the point. You don't need anything of the shit that you listed. ;)

    • @HrHaakon
      @HrHaakon Год назад

      I mean, you'd use something like Java which pretty much layers a minimalist OS on top of the JVM to run the applications at.

    • @0ia
      @0ia 10 месяцев назад

      You must live by an airport because you didn't even notice the roar of the point flying over your head! ;)