Live data from Hacker News

Oasis: a small statically-linked Linux system

github.com

151–160 of 169 posts

Re: Oasis: a small statically-linked Linux system

#151

I think it's awesome. This is likely another of those passion project that, might draw in some overzealous on-watchers, not really become anything usable in the end, but still be incredibly valuable for the greater ecosystem. It points out how some things has gone unconsidered in the "status quo", but rather then just rant about it, shows how it can be different. It might put some lesser known code bases into the pub…

As an addition, I've been trying their qemu image, and similar to an older, similarly radical distro "rsld" (the old release which was graphical), it's usable in qemu, with kvm disabled, to get a snappy graphical environment that can even browse the web (with all the limitation those simple webbrowser have). Browsing HN (using netsurf), while checking memory usage in a st window uses 56MBs of memory. IIRC rsld, which used dillo on tinyxserver, used ~25MB on something like wikipedia.

Other notable "radical" linux systems are EasyOS, RancherOS, Bedrock linux, Gobolinux, NixOS and Guix.

Re: Oasis: a small statically-linked Linux system

#152

Earlier quoted context omitted.

Yep, you can install firefox via pkgsrc or nix. Due to the complexity of the modern web browser and all of its dependencies, it is unlikely to ever be part of oasis itself.

Is a self-sufficient static build of Chromium or Firefox an impossible thing?

As of now I think it is, but it should be fixable. Something like Oasis might spur interest (and possibly a framework) for such work.

Re: Oasis: a small statically-linked Linux system

#153
post #49
post #46

Earlier quoted context omitted.

> every time there is a bug fix in one of your dependencies you/your distribution would have to recompile everything that depends on it Back in the dark ages, some mainframe operating systems like MVS normally stored executables as object files, and would link the program every time you executed it. Has the on-disk space savings and updateable libraries of dynamic linking, without most of the complexity. I believe th…

I would be surprised if there was not a way to take a dynamic executable, "add in" all the required libraries, and return a fat static executable

My admittedly poor understand of macOS application bundles, is that is basically how they work (modulo certain Frameworks in Library folders)

Re: Oasis: a small statically-linked Linux system

#154
post #124
post #55

Does statically linking everything not lead to much higher disk usage, espcially when you have thousands of binaries? Drew Devault has an analysis[0] that appears to claim otherwise. [0] https://drewdevault.com/dynlib.html

Yes, I would think static linking would lead to higher disk usage for binaries. That analysis doesn't really answer the question re: disk usage and doesn't really quantify how much sharing there is from shared libraries, just how many shared libraries don't get shared... basically "Do your installed programs share dynamic libraries" is answered as "not really" because there s a long tail of libraries that are not wid…

That also depends on how the libraries are structured. As far as I know, if you were to successfully link in glibc, that would include the entirety of it, however musl libc is structured so only the parts (at function level?) are linked in.

Re: Oasis: a small statically-linked Linux system

#155

Earlier quoted context omitted.

> Package management, library management, etc are solved problems when it comes to Linux distros. The only practical improvement you can make is containers (or similar). To me this basically reads as "we added a bunch of complexity on top of the problem without actually solving it". Package managers are supposed to prevent conflicts and manage giant dependency graphs, but they're so shit at doing that while actually…

Nix[1] is a package manager for linux and macos that solves this problem beautifully. You can have any variation (version, build options, dependencies, etc) of a package installed natively without conflicting with eachother because the filesystem path includes a hash of the build instructions. It works really, really well for reproducibility and eliminating the "works on my machine" problem. I've been using it exckus…

I worked for a company that built the same thing in the mid-2000s, and it did not solve all dependency issues, because there's multiple kinds of issues. They're actually kind of unsolveable. I list some of the reasons here https://gist.github.com/peterwwillis/e96854532f471c739983c0b...

Re: Oasis: a small statically-linked Linux system

#156
post #91

Earlier quoted context omitted.

I have used exodus to do this in the past. https://github.com/intoli/exodus

> Exodus handles bundling all of the binary's dependencies, compiling a statically linked wrapper for the executable that invokes the relocated linker directly, and installing the bundle in ~/.exodus/ on the remote machine. You can see it in action here. That isn't really what is being described, or at least not what I'm referring to. It's more like a self-extractor.

You are right. My mistake. I remembered it wrong.

Re: Oasis: a small statically-linked Linux system

#157

Earlier quoted context omitted.

Do you really mean Arch Linux or something based on it like Manjaro? Pretty sure Arch Linux doesn't even come with an installer.

there are plenty of installers of archlinux - I use https://anarchyinstaller.org/ for instance

But do any of those come with the ISO available at https://www.archlinux.org/download/? I don't see how you can say something "just works" if you have to go out of your way to choose an installer for it.

Re: Oasis: a small statically-linked Linux system

#158

Earlier quoted context omitted.

Nix[1] is a package manager for linux and macos that solves this problem beautifully. You can have any variation (version, build options, dependencies, etc) of a package installed natively without conflicting with eachother because the filesystem path includes a hash of the build instructions. It works really, really well for reproducibility and eliminating the "works on my machine" problem. I've been using it exckus…

I worked for a company that built the same thing in the mid-2000s, and it did not solve all dependency issues, because there's multiple kinds of issues. They're actually kind of unsolveable. I list some of the reasons here https://gist.github.com/peterwwillis/e96854532f471c739983c0b...

Thanks for sharing. Agreed that runtime dependency conflicts are unavoidable for most programming languages. Your example of sqlite database format conflicts is also a good one.

I definitely won't claim that nix has solved runtime dependency conflicts, but it does decisively solve build-time conflicts.

Similar to containers like you describe, but reproducible and don't require storing and shipping opaque binary images around. Reproducibility is really the killer feature, IMO. I inherited a bunch of containers that don't build anymore because the build instructions weren't reproducible. Having an old container image that still runs is just tech debt if yiu can't edit the build instructions and genrrate a new one.

Re: Oasis: a small statically-linked Linux system

#159
post #31

Earlier quoted context omitted.

This right here is what's wrong with the application space. The idea that this could be true leads to terrible software design and slow, bloated applications. In the current landscape is it perfectly possible (and I'd say even usual) to do most of your work and processing on local system binaries (that aren't a browser or a browser with a different name).

It’s no one’s fault really. As long as people pirate software, it is economically Darwinian / inevitable that all commercial software will migrate to centrally controlled subscription gated servers. This includes open source software, if you correctly count how much of it is repackaged and sold to people this way.

It has nothing to do with pirating. That sort of predatory mercantile behaviour has happened basically ever since humanity invented money. It happens because unscrupulous people are allowed more power than they should have. Stop blaming everyone else for their bad decisions.

Re: Oasis: a small statically-linked Linux system

#160
post #113

Earlier quoted context omitted.

As a primarily Linux developer I'm super jealous of COM. It reminds me a lot of dbus with more legacy cruft but also a lot better designed.

As a former Windows developer, I am thankful that I never have to touch COM ever again.

Damn, guess the grass isn’t greener.
Post reply on HN