[–] random3 link

> "I think the reason this paper was accepted is different from the reason the author likely thinks it was accepted."

That's a great perspective to have! I wonder if opinions like these are available online - I'm thinking in a format like Adrian Coyler's morning paper. I would love to read opinionated, yet highly educated material.

reply

[–] srcmap link

Is the goal of the this class teaching student how to re-write the Pi3 's kernel/driver in Rust?

It is not that clear from the course syllabus.

"This course covers the following topics:

Disks, File systems, I/O, Threads & Processes, Scheduling, Virtual Memory, Protection & Security, Interrupts, Concurrency & Synchronization."

In theory, if those are the goals, one doesn't need Rust as part the first week's lecture.

Rewriting the Kernel in Rust sure makes a very interesting (and very tough) way to learn OS in 3 months.

reply

[–] habitue link

It's not writing a new kernel in Rust, it's an OS course, where they touch on all the fundamentals. Instead of assignments being in C, they're in Rust.

reply

[–] bitamess link

dawson Engler, you talking about?

reply

[–] jlebar link

Correct, one of the people listed as teaching this course.

reply

[–] jlebar link

If any Stanford students are reading this wondering if they should take this class:

Engler was one of my favorite professors at Stanford. He's kind, sharp, well-prepared, and consistently delivered great lectures.

One of the things that made him stand out to me are the insights he provided beyond what's in the papers we read in CS240. You can read the papers yourself, but the papers won't tell you things like "I think the reason this paper was accepted is different from the reason the author likely thinks it was accepted."

He's awesome, take his class. Find a good team, and, um, don't underestimate how much time CS140 takes. :)

reply

[–] akhilcacharya link

I really should not have read that resume. Really doesn't help the overall inadequacy problem.

reply

[–] shawn link

On the other hand:

At Google I worked with the Gmail performance team to decrease server downtime by detecting anomalous behavior before server failure. I designed and implemented an original anomaly detection algorithm based on local outlier factors.

Does anyone have any info about anything related to this?

I want to write a program to detect anomalous behavior in my systems too. (Mostly so I can completely ignore the useful information, but still.)

reply

[–] mark_l_watson link

Thanks for that call-out for Rocket. I skimmed a Rust book over the holidays so I could experiment with the Exonum blockchain platform. I had tentatively decided to not pursue an interest in Rust but looking through the docs for Rocket has changed my mind.

Looking through the CS140e class description made me a little envious of students who are both able to take the class live and also have 20 hours a week or so to really get the most out of the class.

reply

[–] mcguire link

How is Rocket, compared to the others? (I don't know that the one I used before is still going.)

reply

[–] robto link

There's a really good talk from StrangeLoop about it[0], I highly recommend checking it out. I don't write rust, but it made me want to.

[0]https://www.youtube.com/watch?v=QS8mrbAPLJc

reply

[–] Dowwie link

If anyone has looked at web frameworks in Rust, they'll have noticed one known as Rocket (http://rocket.rs). The Rocket project is authored by none other than Sergio Benitez, who is teaching Stanford CS140e.

reply

[–] tzs link

[Report of incorrect link deleted, as it has been corrected]

For the 100 and 1k resistors, I'd recommend something like this: https://www.amazon.com/PIXNOR-Resistor-1ohm-10Mohm-Resistors...

That includes 20 1k and 20 100 ohm resistors, plus 20 each of 54 other assorted resistor values, and it costs slightly less than just buying the 100 ohm and 1k 10 packs that you suggested.

reply

[–] jzoch link

No that is not the correct one, we are using a solderless board.

reply

[–] nafizh link

Thanks. I have updated the breadboard to a solderless one.

reply

[–] godelmachine link

I am quite surprised that registers, LEDs, jumper cables and solders are required for this class. May I ask what are they required for ?

reply

[–] danbruc link

The LEDs you linked to have just two pins and automatically cycle through the three colors in a fixed pattern - is this really what is required? Or did you intend to link to a four pin variant with common anode [1] or common cathode [2]?

[1] https://www.amazon.com/dp/B01C19ENFK/

[2] https://www.amazon.com/dp/B01C19ENDM/

reply

[–] nafizh link

The image of a LED used in assignment 0 has 2 pins. That is why I put those links. But I am not totally sure, I could not find any specification.

reply

[–] tlent link

Would it be possible to use the much cheaper Raspberry Pi Zero W instead of the 3?

reply

[–] wolfgke link

To quote from the slides (Jan 8): https://web.stanford.edu/class/cs140e/notes/lec1/slides.pdf Slide 3:

"A modern approach

- Multicore, 64-bit ARMv8 platform.

- Modern programming languages and tools."

The Raspberry Pi Zero W does not support 64 bit mode, since it uses a BCM2835 instead of a BCM2837. Even more: the BCM2835 does not even support ARMv7 instructions (only ARMv6).

reply

[–] jwmcglynn link

I saved some money by buying a kit that included most of the parts. I confirmed that this setup works and have already completed assignment 0 with it.

1. Raspberry Pi 3: https://www.amazon.com/gp/product/B01CD5VC92

2. CP2102 USB TTL adapter: https://www.amazon.com/gp/product/B072K3Z3TL

3. Breadboard/Cables/LEDs/Resistors kit: https://www.amazon.com/gp/product/B01IH4VJRI

4. microSD card: https://www.amazon.com/gp/product/B001B1AR50

Note that I didn't need a microSD adapter since my laptop already has a SD card port, and the card linked has a microSD-to-SD adapter. Overall, this was $64 vs $98 for the above parts, and it all had free one-day shipping.

reply

[–] busterarm link

Would you mind answering a couple of questions for me via email or signal about assignment 0? Specifically related to phase3/phase4.

reply

[–] nafizh link

I have made a list of all the materials needed for this class with amazon links. Hope this helps people who would like to pursue this course from outside Stanford.

1. 1 Raspberry Pi 3 https://www.amazon.com/Raspberry-Pi-RASPBERRYPI3-MODB-1GB-Mo...

2. 1 1⁄2-sized breadboard https://www.amazon.com/Qunqi-point-Experiment-Breadboard-5-5...

3. 1 4GiB microSD card https://www.amazon.com/Samsung-MicroSD-Adapter-MB-ME32GA-AM/...

4. 1 microSD card USB adapter https://www.amazon.com/Adapter-Standard-Connector-Smartphone...

5. 1 CP2102 USB TTL adapter w/4 jumper cables https://www.amazon.com/KEDSUM-CP2102-Module-Download-Convert...

6. 10 multicolored LEDs https://www.amazon.com/Multicolor-Flashing-Changing-Electron...

7. 4 100 ohm resistors https://www.amazon.com/dp/B0185FCR66/

8. 4 1k ohm resistors https://www.amazon.com/dp/B00CVZ46FM/

9. 10 male-male DuPont jumper cables, 10 female-male DuPont jumper cables

https://www.amazon.com/Haitronic-Multicolored-Breadboard-Ard...

Edit: edited for solderless breadboard link rather than a solderable one.

reply

[–] floren link

As someone who worked on Plan 9 for over a decade, it would be incredibly difficult. The first question out of everyone's mouth, even back in the early 2000s: "So can you run [Mozilla/Firefox] on it?" No, we couldn't and that was with a very POSIX-like system; the browser is the killer app today and it's also an operating system all its own, meaning it's one of the hardest things to port. We had enough of a basic browser that you could read HTML pages, but otherwise you're stuck with 'linuxemu' which only worked up to a certain (old) version of Debian because the Linux kernel changed shit. If you decide POSIX is a bad paradigm, you're going to have an even harder time getting a browser running.

Of course, most of the shit we do with junky web apps today could just be presented as a 9P service with maybe a couple shell scripts in front of it, but the junky web apps already exist and are in use.

reply

[–] sillysaurus3 link

Anyone have links to the plan9 propaganda pictures? Some of them were hilarious. https://imgur.com/a/Q4aMc

"There is no fork."

Apparently they're from 9front, a fork of plan9: https://news.ycombinator.com/item?id=12617036

http://9front.org/img/ is filled with a bunch of random stuff. The diagram of plan9 at http://9front.org/img/fs.png seems useful.

"Plan9 has been forked": https://news.ycombinator.com/item?id=2772718

Note the discussion on rc, plan9's scripting language: https://news.ycombinator.com/item?id=2773275

Maybe someone can borrow some ideas for their next OS.

EDIT: Aha: http://9front.org/propaganda/

reply

[–] pmarreck link

I'll give you a lot of credit for working on Plan9 that long... but yeah, you're correct, a browser port would require a fairly large and well-funded team at this point, on any new OS

reply

[–] Eridrus link

I think that this is kind of backwards, yes, a new user OS must run a browser, but this is a much simpler situation than "Must run Win32 software".

reply

[–] rcarmo link

Yep. I’m on 9fans, and agree wholeheartedly. Porting a browser would be the _one_ thing to do to be able to run Plan9 as a personal desktop, but it’s a monumental task that will never happen.

reply

[–] undefined link
[deleted]

reply

[–] danbruc link

Here is another thought. One has to realize that nobody wants an operating system. People only use them because it is the only way to run the applications the users actually wants to use. If you could run an office suite, a browser and a mail client without Windows or Linux, that is what people would do. At best an operating system is absolutely invisible, realistically it causes additional pains over those inflicted by the applications. I can not really imagine how this could work, but a new non-OS would probably be a better idea than a new OS.

reply

[–] AnIdiotOnTheNet link

Application management, window management, resource management, document management, etc. OSs are more than just the applications they run, they provide the user ways to manage their workflow.

On the other hand, you know what OS was practically invisible? DOS. And DOS was pretty great, so maybe you're on to something.

reply

[–] peonicles link

> Here is another thought. One has to realize that nobody wants an operating system. People only use them because it is the only way to run the applications the users actually wants to use.

That reduces things to almost an absurd level, and literally tries to ignore reality.

---

I want X!

Ok, we need this and that to get there...

I don't want this and that, I want X!

But you need this and that to get to X...

I don't want this and that, I want X!

---

While it's true in essence, and people should always keep the end user and lofty end goals in mind, we should never lose sight of the ground, because that's where we exist.

Besides, different users want their operating system to do different things.

> At best an operating system is absolutely invisible ... but a new non-OS would probably be a better idea than a new OS.

This train of thought can be applied to just about anything. The best product for X would just get out of the way, and assist you seamlessly to do X.

reply

[–] wz1000 link

Linux works exactly like this. Most people who use Linux never directly interact with the kernel. They interact with applications.

The graphical shell is an application - KDE(plasmashell) Gnome(gnome-shell) etc. the console shell is an application - bash,zsh,fish etc. The WM is an application - (KWin, Mutter, i3, xmonad etc.) The file manager is an application - (nautilus,dolphin,ranger, etc.) The package manager is an application - (apt,portage,pacman,nix etc.)

You can choose not use any one of these(or replace them with alternatives). They exist because they do something essential - and the kernel exists because it provides them with a coherent view of the users computer. It is their interface with the hardware.

reply

[–] shalabhc link

I think you've hit the nail on the head here. I would even take this thought further and say people want the features of the apps - but not necessarily segregated into distinct apps. Consider how poor the composition of various apps is today. The prevalent conception of 'operating system' and what it should provide can only result in another plethora of silo-ed apps. We need some major whole-system redesign.

reply

[–] pjmlp link

Easy, that is how we used to program in the old days on systems where the language runtime was the OS.

reply

[–] Eridrus link

Hard Disagree. I am glad Android has GCM so that every application isn't draining my battery maintaining a separate notification channel. I'm glad Android provides a Share facility so that I can easily send deep links to people and the mobile community didn't need to invent and evangelize some IPC based system for achieving this. I'm glad Android provides Accessibility Services. I'm glad Android provides a pluggable keyboard system so that apps don't need to implement their own. Etc.

OSs are not perfect, and they are facing headwinds (as well as some tailwinds like power constraints) but pretending they don't provide any benefits is just not thinking hard enough.

reply

[–] collinmanderson link

I'd just go with ChromeOS.

reply

[–] erikpukinskis link

That is correct. You build the operating system that can woo the kind of developers who you want to do business with.

reply

[–] MisterTea link

Shout out to Plan 9 and Inferno. Two operating systems that were decades ahead of their times and who's distributed partitioning architecture and ideas are desperately needed in a networked world of ever increasing complexity, bloat, and protocols.

And I was a BeOS fan back in the day. Just stumbled across my old R5 box after cleaning out the attic. Very clever design for its time but didn't bring anything to the table in terms of networking, multi-user or distribution. It was a multimedia oriented, multi-threading speed demon and not much else.

reply

[–] otakucode link

Absolutely. But every single new operating system project falls into the trap of following all the same old patterns. It seems to be very difficult to approach problems and realize that the constraints that guided all of the old design choices simply no longer exist. Today different challenges exist and people would rather perpetuate re-creating the limitations of the past and then solving those nice understood problems than they would like to solve the new problems.

For instance, today we don't have text terminals. We have high-dpi displays. So why is the first thing you reach for a text buffer? Stop it. Vector-based fonts should be step zero. Raster graphics ought to come along pretty far down the line when you get to texture surfaces. We don't run with video units with basic memory-mapped framebuffers any more. Our storage also isn't seek-bound in most cases, we have RAM that can bust the limits of even old filesystem designs made for bulk storage. We have more now and just like the physicists say, More Is Different.

But the next revolutionary OS will probably come along and announce their goal of POSIX compliance and people will still trick themselves into thinking its 'new'. I'd rather see an OS that realizes the things the Internet and web have taught us and integrates it. What people want is search and instant-on application functionality. They don't care if it's "an app" or its "a webpage" or whatever. They want it to work, they don't want to "install", etc. And if you can murder the browser and get back to something native and cut the eye out of every company monetizing themselves through user behavior data sales, all the better!

reply

[–] danbruc link

The problem is probably going to be that if you really want to be innovative and not just reimplement decade old ideas then you will break a lot of existing applications. There are certainly hundreds or thousands of nice and well researched ideas out there but if you fundamentally change how you handle address spaces, perform inter process communication, isolate processes, store files or what not you will break applications and have to reimplement or at least adapt them, too. You will also need drivers for hundreds and thousands of components. And thousands of protocols and standards. A billion Dollar and a decade of work will probably not be enough to seriously compete with existing operating systems. Maybe you could build a POSIX layer for compatibility but now you are already building two operating systems.

reply

[–] jm547ster link

Redox is interesting and shows promise https://github.com/redox-os/redox

...but it’s in no way a departure from the status quo, even referring to itself as kernel + GNU/BSD style ecosystem.

I wonder if we will see a new paradigm anytime soon. The Hurd?

reply

[–] elihu link

Yes, and more than that we need a good, better thought-out modern successor to POSIX-type interfaces. For instance: I think a process ought to be able to have more than one current working directory and possibly more than one user-ID at a time. It should have the option to insert data in the middle of a file without having to manually shift the rest down. Shell scripts should be able to interact with the filesystem via transactions that can be rolled back if anything fails. Programs should be able to have typed input and output, checked by the shell and/or OS, which could also enable command-line tab-completion to search installed programs for any that match a desired type.

I have a bunch of other random gripes with POSIX-style OS interfaces and find it a bit frustrating that these interfaces haven't changed much in decades and seem to have attained a lot of inertia of the "we do it this way because we've always done it this way" kind.

reply

[–] axlprose link

Yep, luckily there are definitely a good handful of interesting OS projects around. HelenOS[0] stands out to me the most due to its component-based design. Though I'm also looking forward to seeing how seL4[1] and Genode[2] might be put to use.

[0] http://www.helenos.org/

[1] https://sel4.systems/

[2] https://www.genode.org/

reply

[–] DonaldFisk link

What about EROS and its relatives?

Or Genera?

Or even TempleOS?

Then there are some older systems worth looking at (e.g. ITS, MCP, VME/B, Oberon).

Some ideas: The system language should be the operating system. No need for files if it's image-based, just persistent objects. Atomic system calls. Capabilities instead of access control.

reply

[–] amelius link

Yes. We need new requirements more than we need new implementations of the same.

reply

[–] Razengan link

> Does anyone else think it's time for a new and promising operating system?

iOS is the new and promising operating system.

It challenged and made us review many of the assumptions that everyone considers to be universal for an OS, even though they have no reason to be:

- The need for a user-accessible "file system."

- The need for multiple, customizable windows on the screen.

iOS dared to go against the grain and people rallied against it.

Even though the vision seems to have gotten somewhat muddled post-Jobs, and some of the trademark stubbornness giving way under Tim Cook, and despite the annoying bugs and inconsistencies lately, iOS has actually worked surprisingly well; the iPad is the first computing device that many of the older people in my family can comfortably and confidently use.

It still has some way to go, but if you give it an honest chance, you'll see that an iPad [+ Smart Keyboard + Pencil] can easily perform 70%-90% of the task that most people ever need to do on a computer, without many of the jags associated with traditional desktop operating systems.

With the recent rumors about unifying iOS and macOS while still keeping desktop and mobile user interfaces distinct, I'd like to believe that Apple have some exciting plans ahead for a future OS made up of the best features from iOS+macOS.

reply

[–] perl4ever link

I remember reading about EROS (Extremely Reliable Operating System) [1] years ago. The killer feature was that you could shut the computer off at any time, and it would always recover a consistent state of everything that was running when you restarted. It also had an advanced security system.

[1] https://en.wikipedia.org/wiki/EROS_(microkernel)

reply

[–] pjmlp link

Now even with Microsoft introducing WSL, I fear the POSIXfication of OS architectures.

However there is still hope, when we look at the ongoing userspace transitions on mobile OSes.

I mean, the kernel might still be UNIX or Windows like, but the userspace is quite different.

reply

[–] okreallywtf link

Minix is going to take over any day, just you wait and see!

reply

[–] carussell link

Haiku, Minoca, SPIN, Fuchsia, etc. If you're actually interested in alternative computing, choices abound.

reply

[–] rekado link

It's time for the Hurd to gain more developers. It is a very elegant and flexible system, which de-emphasizes super users and gives more power to regular users.

Thanks to NetBSD/rump kernel and the POSIX persona of the Hurd, it can get a whole bunch of device drivers with relatively little effort.

reply

[–] woolvalley link

There has to be some market need to make a new OS. Right now there isn't much of one. What will it practically accomplish that the current infrastructure doesn't?

The future of OSes is stuff like android, iOS, Qubes (security) or MirageOS (simplicity for security)

reply

[–] rcarmo link

Haiku OS now boots on modern hardware (like my 2015 ThinkPad), and aside from the usual niggles like trackpad support and some browser weirdness it “works”.

Of course, it’s nowhere near polished enough for day-to-day use as macOS or Windows.

reply

[–] bunderbunder link

I do, but I'm not confident that the Linux monopoly will go anywhere.

It's a network effects thing. Everyone demands POSIX compatibility, and it's getting to the point where software doesn't even try to be cross-platform anymore; it just assumes you've got POSIX and a GNU environment. Possibly even specifically Linux -- Docker will run on other OSes, but it does so by launching a Linux VM to run all the containers in.

reply

[–] dnautics link

I used to use beos... Got through college using it. Wrote a web server in it and ported it to Linux for the one CS class I ever took in college and was appalled by greenthreads relative to bthreads. Extra credit was "make it multithreading".. well, already had that done.

I think something interesting would be an os based on BEAM as a underlying threading and memory management model, if you could put in security guarantees.

reply

[–] orionblastar link

I think rather than reinvent the wheel and make an OS from scratch, just get involved with one already being developed.

Haiku is an open source free rewrite of BeOS and they are trying to make an OS that can run BeOS apps. https://www.haiku-os.org/

AROS is an open source and free AmigaOS 3.X rewrite, it can run old Amiga apps.

http://aros.sourceforge.net/

OSFree is an open source and free OS/2 clone. http://www.osfree.org/

ReactOS is an open source and free OS to try and be like XP/2003 in a way and has made some progress recently.

https://reactos.org/

If I was in charge of Microsoft or Apple, I'd look into one of those OSes to fund and exchange code with instead of creating one from scratch.

While they are not ready for prime time if some billion dollar company invests one million USD in just one of them, it could get it to get out of the alpha stage and go beta or retail in a few years or so.

reply

[–] baq link

it'd be certainly nice, but writing a kernel is easy compared to having working device drivers - that's hard enough on windows/linux/macos...

reply

[–] has2k1 link

When it is time someone or a group of people will step up. Then issue will become that of adaptation. Enough people will have to see it through the early and rough stages. Prospective users will have to not get turned off by negative hastily written or outdated opinion pieces.

Most people would not be willing to give a chance to what may be a great product in 5-10 years. So the next great operating system will most likely sneak in through a Trojan horse. My bet would be, containers, something, something, something, operating system.

reply

[–] mamcx link

Weirdly I dream recently about this (all start imaging a relational language, then it get bigger and bigger), with new CPU arch, memory, etc (with full sci-fi capabilities)

The main problem is compatibility. The solution is virtualize. Let's say at least provide headless linux (Docker?). This is enough to start. Imagine that linux run not too bad here (ie: fast enough), just to keep dreaming.

The next is why? Why build for this OS if I "just" can run linux here?

The conventional narrative is that the OS is "boring" "invisible" etc. I think instead that is only true because most OS are boring. If we think as a master integration then is more cool.

Consider the posibility to turn the unix text stream/pipelines as the actual UI paradigm (like react) and have the ability to connect not only apps, but components inside. For example, If I'm in mail and wanna crop the image I just put here, I need to detour a lot to Photoshop then return to mail.

Why?

I think is possible to say "This is a image. Any app/component that could operate on it can do it". So, in short, is a UI manifestation of:

MailApp.currentMail.images | PhotoShop.crop > returnBack

So, like in a REST API, the apps publish their URIs with ACCEPT/HEADERS like "json", "xml", "img" etc and this allow to match to others apps that operate on them.

Having also the apps operate on "docker-like" containers by default (fully isolated) yet communicate as Erlang Actors (send messages) to any other app that "Accept: FORMAT", allowing to express to the USER what we do now on the terminal.

---

Other thing that totally need a revamp is the whole file exploring. Is just not rigth that google answer faster than a local disk search.

Also, why not isolated in containers the files of SYSTEM, APP + CONFIGS + TEMPS/CACHES, USER_DATA so if I wanna do a backup just copy the USER_DATA container and be worry free?

This is just some random ideas. Is about time to think of the OS as APP too, and start doing cool things :)

--

In the area of security is also a lot to do. A minimal thing is to acknowledge that most users perform multiples roles on a system, and the case where exist a dedicated user to be admin or dba is just a special case.

So, is reverse the roles/user.

I'm jhon. Now, I change hat to be admin. Then change to be normal user, then change to be developer. I don't need 3 user accounts to be all of this.

Because I'm all of this.

reply

[–] seanmcdirmid link

OS isn’t that interesting anymore. We take them for granted, and can’t imagine them doing anything more than they do now that can’t be done well enough in user space. BeOS was exciting because it was doing something that other OSes weren’t doing yet, now it would be old hat.

reply

[–] bogomipz link

I'm confused, Beos and Linux aren't that far apart, maybe 4 years at most.

reply

[–] undefined link
[deleted]

reply

[–] undefined link
[deleted]

reply

[–] rohan1024 link

If BCI become mainstream we might need new operating system anyway.

reply

[–] fh973 link

Sure, but how would you solve the hardware drivers problem?

reply

[–] kjs3 link

The L4 ecosystem is interesting and there's a lot of activity going on. If you're just interesting in something 'not OSX/Windows/Linux', there's the IBM Mainframe world (you can use the Hercules emulator to run the software) or the DEC nee HP VMS world (there's a free hobby license). Way out, you can run Symbolics Genera in a VM and see how the world would have been if Lisp had won.

reply

[–] pmarreck link

Does anyone else think it's time for a new and promising operating system? The hegemony of OS X/Windows/Linux has basically gone on for a generation.

Shout-out to BeOS (the old geeks will know of it) which was the last promising new OS I encountered... and that was many moons ago

reply

[–] chucksmash link

A wonderful complement (albeit with significant overlap) is Charles Petzold's Code. It's written as prose so doesn't include exercises but the book is infused throughout with the mastery attained by its author. His synthesis of different ideas and the historical context he provides give a very nice perspective on computing. While nand2tetris makes for a good textbook to work through, Code makes for a better subway read.

reply

[–] kaycebasques link

Sounds cool!

Mildly related: I found "Nand To Tetris: The Elements of Computing Systems" to be an amazing, bottom-up, hands-on approach for learning about the fundamental layers of computer architecture, from hardware to assembly to OSs.

reply

[–] jzoch link

I am currently taking the class. Its an embedded systems + OS class that undertakes the challenge of writing an operating system for a raspberry pi 3 in Rust. The lectures aren't recorded sadly, but its the first time offering something like this and both Sergio and Dawson are fantastic professors!

reply

[–] StillBored link

I guess its "experimental" as in your will in a lab setting with experimental (rust!?) code for traditional operations on an rpi.

Not that you will be experimenting with new OS concepts.

Which is sort of a shame because it seems much of OS research might be turning back to concepts that haven't been explored since the "RISC/unix" revolution in the late 80's early 90's proclaimed that multiple privilege level machines, capabilities, full ACL controlled operations, message passing kernels, and dozen's of other concepts wern't "fast" or fell to the wayside because the RISC and traditional unix model couldn't support them, while we continue to pay a huge hidden tax for the flat address/paged memory model...

reply

[–] wcrichton link

Note that the "e" is inspired from CS107e [1], the experimental version of "Introduction to Computer Systems". 107e also uses a Raspberry Pi to help students incrementally build up a working knowledge of basic system components including the processor, memory, and peripherals.

[1] https://cs107e.github.io/

reply

[–] sigjuice link

I'm afraid I disagree. An OS course needs to at least cover virtual memory, processes and filesystems. Doesn't look like "Baking Pi" does.

reply

[–] pjmlp link

That one is in straight Assembly, but actually quite interesting to follow.

Thanks for the link.

reply

[–] kissiel link

Looks similar to "Baking Pi" from Cambridge. https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/

reply

[–] pjmlp link

That would be Redox.

https://www.redox-os.org/

reply

[–] raverbashing link

Will this become the Rust's era Minix (which encouraged a certain student to do an improved version?)

reply

[–] atak1 link

You don't really need the lectures - I took the main version (cs140) with ousterhout. His notes are condensed and give you a good summary of the basics. They're also open to the public:

https://web.stanford.edu/~ouster/cgi-bin/cs140-spring14/lect...

reply

[–] ozanonay link

Berkeley's CS 162 is great, and recordings are available on internet archive. There are some decent undergraduate textbooks these days too: OSTEP is particularly accessible and free online, and the Tom Anderson _Operating Systems: Principles and Practice_ book is solid.

reply

[–] lalwanivikas link

It looks like you need to be a Stanford student to be able to watch the lectures. Can anybody here recommend a good OS course(video preferably) for beginners?

I am a self-taught developer and would love to learn it in my free time.

reply

[–] 2_listerine_pls link

Sadly, Stanford isn't as commited as MIT to open their courses. Only a handful of them can be found on Coursera/Lagunita.

reply

[–] polskibus link

I hope they turn this course into a MOOC.

reply

[–] woodrowbarlow link

Assignment zero lists the following parts:

    1 Raspberry Pi 3 (Model B)
    1 1⁄2-sized breadboard
    1 4GiB microSD card
    1 microSD card USB adapter
    1 CP2102 USB TTL adapter w/4 jumper cables
    10 multicolored LEDs
    4 100 ohm resistors
    4 1k ohm resistors
    10 male-male DuPont jumper cables
    10 female-male DuPont jumper cables

reply

[–] undefined link
[deleted]

reply

[–] g051051 link

I'd love to follow along, but I don't see a parts list to get the matching parts.

reply

[–] anocendi link

Sweet! I have been looking for a good opportunity to build something with Rust in a domain I already know, and this looks like a right mix of everything!

reply

[–] steveklabnik link

Yeah, with the caveat that Rust in 2014 was a very different language; we had a runtime back then!

http://rust-class.org/0/pages/final-survey.html was very instructive to read at the time.

reply

[–] lgessler link

See also: http://rust-class.org/

(Note though that this uses Rust as it was in 2014.)

reply

[–] jzoch link

Its an alternative. Rather than using a virtualized environment, you build everything yourself for a raspberry pi 3. No scaffolding, nothing. and its in Rust!

reply

[–] capkutay link

Is this supposed to be a replacement for using PINTOS to build an OS in C? I remember the PINTOS projects as one of the most rewarding things I worked on in my college career.

https://web.stanford.edu/class/cs140/projects/pintos/pintos_...

reply

[–] krat0sprakhar link

Well, the lecture notes and assignments seem are available online, so one can follow at your own pace

Assignment 0: https://web.stanford.edu/class/cs140e/assignments/0-blinky/

reply

[–] WaxProlix link

If you follow the pre-registration survey link, it asks for a SUNet ID, and if you try to register via Piazza, it asks for an @stanford.edu email address. So it seems likely the course proper is just students.

reply

[–] vardhanw link

FWIW I created a subreddit [0] for folks (not from Stanford) wanting a forum to study, follow and discuss on this course.

[0] http://www.reddit.com/r/cs140e

reply

[–] neduma link

Interesting. Can anyone take this course or Stanford students only?

reply

[–] sprayk link

Plan 9 sorta does 3. Can execute on one device, display on another, play sound on two others, and store wherever. This was always my pipe dream w/ that OS.

reply

[–] rcarmo link

I’ve been moving towards this for a couple of years. Right now a minimal Linux with Firefox and an RDP client will do 90% of what I need, and I would run the whole thing off a Raspberry Pi 3 if it supported dual monitors.

Ironically, Windows Home also qualifies, and new low-end fanless PCs can drive 4K displays, so I’ll likely be running a setup like that by Summer, with zero local data except remote connection settings.

reply

[–] Jupe link

It seems the 2 biggest hurdles of creating a new OS (aside from designing and actually writing the damn thing) is software support and driver support...

Silly idea, but how about a "super" terminal OS... that does a few primary things:

1. Responsive clients for various UIs (X, VNC, RDP, SSH, Powershell, etc.) - Having a full UI to use my smart phone would be awesome. 2. Run VMs (which can run docker, etc.) 3. Uses some mechanism (wave hands here) on the remote machines to facilitate storage, computation?, graphics, audio, clipboard and printing on the local terminal. 4. Strong support for a few devices. Pick a few network cards and graphic cards to support, perhaps a few other basics, and leave it at that...

I know it would still take years of writing a LOT of code, but this could reduce the lack of software support. Drivers are still a sticky issue...

(Yeah, like I said, a silly idea!)

reply

[–] conradev link

Here is the original link – it was made by Raph Levien:

https://docs.google.com/presentation/d/1q-c7UAyrUlM-eZyTo1pd...

reply

[–] _nalply link

Have a look at the cheat sheet, it's extremely illustrative for intermediate Rust programmers:

https://web.stanford.edu/class/cs140e/notes/lec3/cheat-sheet...

reply

[–] vardhanw link

For anyone interested in following up on the course, I have created a cs140e subreddit [0] as I think it will be useful for those interested. Feel free to join.

[0] http://www.reddit.com/r/cs140e

reply

[–] edcarter link

Wow, I would have loved to take this class in my undergrad. This looks really cool!

reply

[–] chillydawg link

Golang isn't generally suited to real time or near real time systems (like operating systems) because of its garbage collector. It will pause (not for very long) whenever it likes to tidy up and that can cause problems when interacting with hardware where timings are potentially critical.

reply

[–] baumbart link

Could someone explain to me how Golang would compare to Rust for this purpose? I'm a Golang newbie and I always wondered if it would be possible to write an OS in it (+ some assembly).

reply

[–] dmitrygr link

Same as C. Rust is basically C with hardcoded checks enforced and put in by compiler that good programmers already know to put in.

reply

[–] adamnemecek link

I'm pumped too see the new OS architectures Rust will allow for.

reply

[–] peonicles link

Rust + Rpi interests me and I might wanna follow along. Are they using an available kit from an online retailer ? Getting/shipping individual parts is a pain where I'm from.

reply

[–] juanmirocks link

I wonder: is there room for a new OS to truly surpass Linux/Windows ?

I would love to see more commercial success for micro/nano-kernels (vs. the staple monolithic kernels)

reply

[–] nafizh link

Can someone point to a reliable website where I can buy the required materials? I think this is going to be a big question for beginners.

reply

[–] wemdyjreichert link

Welp. I dont even go to Stanford, but applied anyway cause it looked good. Wish me luck getting in :)

reply

[–] clw8 link

UV actually had a Rust based OS class four years ago! The language was at something like 0.7 so I'm really excited to have this course with up-to-date Rust.

reply

[–] foobaw link

I'm glad they transitioned into Rust. OS classes I've taken before were nowhere this cool.

reply

[–] emh68 link

Rust + OS design seems like the sweet spot for teaching future systems programmers. Nice idea!

reply

[–] trisimix link

Seems the chances of a non stanford student getting this class is pretty slim. Super lame.

reply

[–] godelmachine link

Can anyone from any corner of the world register for this class?

reply

[–] steveklabnik link

HN usually prefers the <title> of the webpage, in this case, that's "Stanford CS140e - Operating Systems". However, it's already a link at stanford.edu, so the first half is redundant, but "Operating systems" is a zero-information title, so "An Experimental Course on Operating Systems" was used instead, as it's the sub-title of the page.

I'm not a mod, so I can't say for sure, but I bet that was the thought process.

reply

[–] jzoch link

Yeah I figured the original title I put was more informative, but oh well. Hopefully people click it and see its a pretty modern and interesting take on an OS class!

reply

[–] ihuman link

Why was the title changed? It used to be "Stanford CS140e: Writing a Raspberry Pi OS in Rust"

reply