#torvalds

canoodle@nerdpol.ch

The Unix philosophy - simple and beautiful (so it "just works")

“The Unix Philosophy in One Lesson”

“All the philosophy really boils down to one iron law, the hallowed ‘KISS principle’ of master engineers everywhere:”

https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s07.html

https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s07.html

src: https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s07.html

“Keep It Simple, Stupid” or “Keep It Super Simple” (less offensive)

The Unix philosophy emphasizes building simple, short, clear, modular, and extensible code that can be easily maintained and repurposed by developers other than its creators.

This is what allows a system to “boom” “it just work” as Mr Jobs puts it.

The Unix philosophy favors composability as opposed to monolithic design.

Later summarized by Peter H. Salus in A Quarter-Century of Unix (1994):[1] This is the Unix philosophy:

would add:

  • Keep it as simple as possible and as complex as ABSOLUTELY necessary (more moving parts = more problems)
  • simplify & agree on common standards & automate:
    • design standards together “open standards”, so they can take care of (almost) all required use cases
  • software minimalism
    • only run as little software on a system (even if it has plenty of resources) as absolutely necessary
    • for example: don’t run full blown desktop guis on servers that do not need them
      • a lot of admins rely on the “html gui” webmin, and virtualmin
        • if that helps to keep a system in well working secure shape, that’s fine but… it is not optimal for two reasons: - less software = always better - at least enhance security with a ssh-tunnel, meaning the port to access web-console (80 or 443) should only be accessible by localhost via ssh-tunnel (if there are zero-day exploits against latest OpenSSH (aka OpenSSH hacked) it’s “all internet offline doomsday” anyway… so this very very critical piece of software needs relentless testing and fast updates/patching) - gui-admins using this software, know “the gui buttons” but not the bash commands - thus: the gui-admins do not really know, what the software is actually doing in the background when they click a button, thus they might be unable to debug the problem, if things fail (that is where this “monitor all logs” bash script comes in handy)
  • genius: “the genius is in control of chaos” (maybe true for a while, but long term it’s deadly wrong)

  • standards:

    • to standardize is a good thing, imagine a world, where every electronic device would have it’s own power plug… nobody could plugin anywhere without adapters… adding adapters increases complexity (fire hazard?) and decreasing simplicity
    • https://dwaves.de/2019/02/26/usb-cable-salad-of-madness-usb-3-0-and-wifi-interference-micro-usb-usb-c-mess-has-finally-arrived/
    • what existing standards are there?
    • can they be adapted? (try to identify & contact the creators)
      • instead of everyone making a new standard -> mess-of-standards (maximum incompatibility to each other)
    • is it really necessary to create a new standard? (e.g. one fine day, someone might decide to use /config for config files and not /etc, because what does etc stand for? (it stands for “all other files that do not fall in the /bin /dev /lib /usr /sbin… category” it stands for “et cetera” (lat. “the rest”))
      • it evolved into “the directory where config files are stored” and everyone knows that, so it has “grown” into a standard
      • it is agreed, that things should be called what they are and the naming of this directory is just bad (not self speaking)
      • but changing that standard would mess up this “grown-into-standard” and get a lot of users and programs confused… worth it?
      • imho THE worst idea is to add another directory and place another network config file, so that there are 2, 3, 4, 5 different places to configure network = complete mess

Malcolm Douglas McIlroy: “Everything was small… and my heart sinks for Linux when I see the size of it. […]

The manual page, which really used to be a manual page, is now a small volume, with a thousand options…

We used to sit around in the Unix Room saying, ‘What can we throw out? Why is there this option?’

It’s often because there is some deficiency in the basic design — you didn’t really hit the right design point.

Instead of adding an option, think about what was forcing you to add that option.” (src: https://en.wikiquote.org/wiki/Doug_McIlroy)

https://archive.org/details/DougMcIlroy_AncestryOfLinux_DLSLUG

Ken Thompson and Dennis Ritchie, key proponents of the Unix philosophy.

“we are trying to make computing as simple as possible – in the late 1960s Dennis Richie and I realized that the then current Operating System where much way too complex – we attempted to reverse this trend by building a small simple operating system on a minicomputer” (Ken Thompson)

“What we wanted to preserve was not just a good programming environment in which to do programming – but a system around which a community could form – fellowship – we knew from experience that the essence of communal computing – as supplied by remote access time sharing systems – is not just to type programs into a terminal instead of a key-punch – but to encourage close communication” (Dennis M. Ritchie)

https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html

https://en.wikipedia.org/wiki/Unix_philosophy

“As a programmer, it is your job to put yourself out of business. What you do today can be automated tomorrow.”

Doug McIlroy

Damn this guy is a philosopher.

Working in IT seems to be just like capitalism itself: working to make one’s job obsolete. “great” outlook.

There need to be alternative lifestyles that make sense and are sustainable.

https://ytpak.net/watch?v=JoVQTPbD6UY

[video width=”586″ height=”436″ mp4=”https://dwaves.de/wp-content/uploads/2017/05/Ken-Thompson-and-Dennis-Ritchie-Explain-UNIX-Bell-Labs.mp4″\]\[/video\]

what happens if companies can not agree on standards:

  • probably the best example:

    • Apple and the “one button vs two button mouse”
    • “Steven P. Jobs, once said that one was the obvious answer because that made it impossible to push the wrong button” (src)

      • turns out: two button mouses are “easy enough” for users that used them for more than 3 days straight
      • by now, approx 99% of Apple’s one-button mouses are in the (recycling?)trash and got replaced by at least two-button mouses (what a waste of resources, right?)
      • GNU Linux users would want a 3 button mouse (the middle button is for pasting stuff)
      • Why Apple hates USB?

        • probably: so Apple can sell more power adapters
        • turns out: shipping iphones without adapters while charging the same price makes even more money
        • finally in 2020 (after aprox. 10 years?) they came along and adopted USB-C Macbook ARM M1 CPU

          - they are still refusing to make the iPhone charge via USB-C
          - [![https://dissectiontable.com/best-chargers-iphone-12-pro-mini-max/](https://dissectiontable.com/wp-content/uploads/2020/10/Best-chargers-for-iPhone-12-iphone-12-Pro-12-Mini-iphone-12-pro-max.jpg)](https://dissectiontable.com/best-chargers-iphone-12-pro-mini-max/)
          
                    > <https://dissectiontable.com/best-chargers-iphone-12-pro-mini-max/>
          - so the user STILL in 2022 needs a special Apple cable to plug into “everyone’s else’s” chargers 
                    - it is… 
                                - 1) truly ridiculous
                                - 2) wasting resources (in 2022 the electronic trash recycling quotas are still pretty bad, only [13% to 35%](https://duckduckgo.com/?t=ffab&q=how+much+of+electronic+waste+get%27s+recycled) of disposed electronics becomes new electronics)
                                - 3) #wtf Apple seriously?
          

#linux #gnu #gnulinux #opensource #administration #sysops #unix #philosophy #m #mcilroy #philosophie #torvalds #itsec #cybersecurity #security #kernel #thompson #ritchie #apple #jobs #standards #standard #gnu-linux #simplify #open #source #openstandards

Originally posted at: https://dwaves.de/2017/05/02/the-unix-philosophy-simple-and-beautiful-so-it-just-works/

canoodle@nerdpol.ch
canoodle@nerdpol.ch

Rst vs Go - Open Source is about enabling users - Rust lang will complement C around the GNU Linux Kernel (for better safety) "Amazon, Microsoft, Google" and the White House, want to make Open Source more secure

Open Source is about enabling users

“Amazon, Microsoft, Google” and the White House, want to help make Open Source more secure…

https://www.youtube.com/watch?v=U-8KopUKMzA

https://www.youtube.com/watch?v=U-8KopUKMzA

so far so good eh?

How will this exactly play out? What will be the “modi operandi”? (Pentagon & JP Morgan Bank, are interested in making the software supply chain more secure, as the IT of banks (!!!) not very good (say the banks THEMSELVES (that fired a lot of IT staff to save on money))

Just an idea for the govs & big corps with the money:

  • put up a “Open Source” “kickstarter” like website
    • where companies & gov can put up their requirements
    • Open Source developers either accept to tackle those requirements
    • or:
      • post their own projects & investors can allocate their resorces to Open Source
      • ABSOLUTE transparency is critical here, not a “pay to play” “taking power” “taking over” “Open Source” “influencing” sealing deals behind closed doors.

https://en.wikipedia.org/wiki/Star_Trek:_First_Contact

https://en.wikipedia.org/wiki/Star_Trek:_First_Contact

long version:

https://peertube.co.uk/w/jKvQozs7xDqpQvbwQFdKbF

The Star Trek economy: will it ever exist?

Afaik Dutch historian Rutger Bregman confirms in his book “Humankind: A Hopeful History” (BE WARNED: it is a realist’s thriller!), that “the nature” of humans (also under constant development), is as such, that only a small percentage are reckless “psychopaths”,

the majority of mankind rather wants to help each other, than shoot each other.

Rust “second in command” around the GNU Linux Kernel

https://en.wikipedia.org/wiki/Rust_(programming_language)

https://en.wikipedia.org/wiki/Rust_(programming_language)

https://en.wikipedia.org/wiki/Rust_(programming_language)

https://en.wikipedia.org/wiki/Rust_(programming_language)

https://foundation.rust-lang.org/

https://foundation.rust-lang.org/

Because Rust lang promises improvements around cyber/itsecurity (no more buffer over/underruns), it might become “second in command” around the Kernel.

The cons: Rust is more C++ than C, which might be a problem for the (long term) C nerds.

Unless (Linus?) & Greg (or someone else) wants to develop a brand new “C” “2.0” lang + compiler designed around security…

Unless Google wants to change it’s Go lang licence…

…Rust it is.

Is Go (a more C like) alternative?

https://en.wikipedia.org/wiki/Go_(programming_language)

https://en.wikipedia.org/wiki/Go_(programming_language)

(2018: developer Voit wrote a Network driver (GNU Linux kernel module) in Go)

https://www.net.in.tum.de/fileadmin/bibtex/publications/theses/2018-ixy-go.pdf

C ixy vs Go ixy: performance (only) “10% slower then the C implementation under optimal circumstance” (optimal meaning: system’s CPU needs fast single threading)

“One of the biggest problem during development was low-level memory management.”

“Specifically register access has proven itself to be difficult in Go

“On the other hand we were surprised about the garbage collection.”

“Originally named as the reason why Go is nor suited for systems programming, our analysis has proven otherwise”

“easier to read and does not require much understanding of the language itself in order to understand the code, especially compared to some C constructs like function pointer, pointer casting and other more intricate operations” (src)

the Go lang licencing MumboJumbo:

“Copyright (c) 2009 The Go Authors. All rights reserved.”

“Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

* Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

“AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.”

that’s not all… there is more licencing mumbojumbo for all those Free Software Foundation & lawyerzzz:

‘Additional IP Rights Grant (Patents)’

‘”This implementation” means the copyrightable works distributed by Google as part of the Go project.

Google hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section)

patent license to make, have made, use, offer to sell, sell, import, transfer and otherwise run, modify and propagate

the contents of this implementation of Go,

where such license applies only to those patent claims,

both currently owned or controlled by Google and acquired in the future,

licensable by Google that are necessarily infringed by this implementation of Go.

This grant does not include claims that would be infringed only as a consequence of further modification of this implementation.

If you or your agent or exclusive licensee institute or order or agree to the institution of patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that this implementation of Go or any code incorporated within this implementation of Go constitutes direct or contributory patent infringement,

or inducement of patent infringement, then any patent rights granted to you under this License for this implementation of Go shall terminate as of the date such litigation is filed.’

src: https://raw.githubusercontent.com/golang/go/master/PATENTS

While the sources of the Go lang are indeed accessible via github, it’s licence is neither GPL 2.0 nor GPL 3.0 nor Apache licence nor MIT licence and thus questionable if:

  1. Google can be trusted (?)
  2. the Go lang licence is “compact” but (currently) not at all Open Source compatible (not a word about if modifcations are allowed)
  3. why did Google not simply pick a “well known” Open source licence? https://opensource.org/licenses

One fine day, Google might to decide, to change the licence, and from this to:

Next problem: Rust (src here) was started by Mozilla, is used by Mozilla for Firefox, but Mozilla has build up financial dependencies to Google.

(Rust in contrast is licenced under MIT & Apache licence https://www.rust-lang.org/policies/licenses)

While this is all not really: K.I.S.S (the UNIX philosophy of Keep it Super Simple)

No dispair, just do your best.

Sticking to the default?

The problem is that systems designed & “Made in the 1970s” (C compiler, Phones, Mail), were not designed around security (because it was not really a problem in those days).

So…

  • unless Google won’t change the Go lang licence to something Open Source compatible
  • unless Linus & Greg or someone else wants to build a C 2.0 around security, Rust is it.

The Go lang licencing problem is the ZFS Oracle licencing problematic all over again:

https://dwaves.de/2022/01/20/the-most-controversial-filesytem-in-the-known-universe-zfs-so-ext4-is-faster-on-single-disk-systems-btrfs-with-snapshots-but-without-the-zfs-licensing-problems/

In other words: Licences (money) have more than once, instead of enabling developers & users, have hindered developers & users.

Another company that M$ successfully killed by buying it…

Another example how Microsoft successfully made this planet worse:

Ever heared of Video2Brain?

IT WAS AN EXCELLENT learning platform, with high quality video learning courses with…

  • 2000 courses in German
  • 1200 courses in Spanish
  • 1300 courses in French
  • 500 courses in Japanese (as of September 2017)
  • 0 in English? (a bit strange, but this company was from Austria and has focused on the EU market, that might be one reason)

Microsoft bought it up… now it is… dead? MS killed it. #wtf?

Now a high quality Video2Brain Rust videos would be needed (luckily – again – Youtube volunteers are chipping in THANKS! (MS maybe transfer some money to them? eh? thanks!))

PS: so that’s my take, could not ask that question via…

stackoverflow.com and serverfault.com suck and DESPERATELY needs competition

stackoverflow.com and serverfault.com suck and DESPERATELY needs competition

#linux #gnu #gnulinux #opensource #administration #sysops #dev #c #development #rust #go #google #security #itsec #cybersec #cybersecurity #kernel #linus #torvalds #mozilla #licence #licencing #patents #patent

Originally posted at: https://dwaves.de/2022/05/16/rst-vs-go-open-source-is-about-enabling-users-rust-lang-will-complement-c-around-the-gnu-linux-kernel-for-better-safety-amazon-microsoft-google-and-the-white-house-want-to-make-open-sourc/