On Fri, Mar 22, 2024 at 8:24 AM enh <e...@google.com> wrote:
>
> On Thu, Mar 21, 2024 at 8:45 PM Rob Landley <r...@landley.net> wrote:
> >
> > On 3/17/24 14:52, Oliver Webb wrote:
> > > On Thursday, March 14th, 2024 at 12:04, enh <e...@google.com> wrote:
> > >> at a high level, it does seem like many/most people interpret "pending" 
> > >> as "almost done" (he says, being part of the problem himself, having 
> > >> several pending things building and shipping on all Android devices) 
> > >> whereas in actual fact it can mean anything from "yeah, actually pretty 
> > >> much done" to "will be completely rewritten" via "still just trying 
> > >> random experiments trying to work out _how_ this should be rewritten".
> > >> sadly i don't have a better suggestion...
> > >
> > > pending/experimental and pending/functional maybe, or something along 
> > > that gist?
> >
> > That would be my "not adding more complexity to manage transient clutter 
> > that
> > should instead go away" objection, already made.
> >
> > > Then again it'd make it harder to track the history of pending commands, 
> > > adding only new ones
> > > to those 2 directories would fix that, but would make the organizational 
> > > problem for the old
> > > ones worse.
> >
> > https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering
> >
> > Stop. No. Halt. Wait. Hold it. Woah. Cease. Desist. Caution severe tire 
> > damage.
> > Klatu barata nikto. Subcalifragilisticexpialidocious.
> >
> > >> a branch would be the usual git option, but that would probably mean "no 
> > >> pending stuff in the main branch"
> > >
> > > Also a problem if you want to switch Version Control systems or 
> > > distribute tarballs without a .git/ directory.
> >
> > I already DID switch version control systems (from mercurial to git), and I
> > already distribute release tarballs. Why do you think these are new issues?
> >
> > > It'd hide these commands too,
> >
> > I want to close tabs. I am not creating additional scaffolding for clutter
> > management:
> >
> > $ ls -d */toys
> > clean3/toys  clean8/toys     github/toys  kl4/toys  kl9/toys      
> > toybox/toys
> > clean5/toys  clean.old/toys  kl10/toys    kl6/toys  kleen/toys
> > clean6/toys  clean/toys      kl2/toys     kl7/toys  kl/toys
> > clean7/toys  debian/toys     kl3/toys     kl8/toys  release/toys
> >
> > I already try not to publish quite as much clutter as accumulates locally.
> >
> > There's some real fossils checked into the tree. I started work on gene2fs 
> > back
> > under busybox, checked in what I had to the toybox repo in 055cfcbe5b05 in 
> > 2007
> > and haven't LOOKED at it this decade because I just haven't gotten back 
> > around
> > to it. Since then they INVENTED EXT4. (I still hope to get back to it, but 
> > at
> > the moment I'm answering email.)
> >
> > > For the first time I checked if there were any special branches in the 
> > > repo because
> > > I didn't bother to think about that in the months I spent working on it.
> > >
> > >> i still struggle between "other" and "lsb" in particular.
> > >
> > > Same here, I can remember the posix commands.
> >
> > Can you? I still have to check some from time to time, and the definition of
> > whether "tar" is a posix command or not is outright eldrich bordering on 
> > quantum.
> >
> > > But I don't care about LSB enough to
> > > memorize everything in wants. And keeping all completed commands that 
> > > aren't in poisx,
> > > lsb, networking or android
> >
> > The "example" directory is important because it's the only other directory 
> > of
> > commands that should not "default y" in defconfig. It has a policy 
> > distinction.
> >
> > Back in 2012, when the number of commands was growing fast and having one 
> > big
> > directory of them all was getting a bit busy, the alternative of sorting 
> > them
> > into directories was annotating them with tags, and THAT was a nightmare 
> > (of the
> > "this command has three tags" variety). And also implied future pressure to
> > extend the existing kconfig implementation to USE the tags, which would be 
> > worse.
> >
> > Moving them into subdirectories, with each command in ONE directory, and a
> > README explaining what the directory was for, with kconfig automatically
> > displaying them in menus and using the first line of the README as the 
> > menu's
> > title, seemed the least bad crowd control option at the time.
> >
> > > in a massive "other" folder sorta defeats
> > > the purpose of these directories which are supposed to reduce clutter.
> >
> > It wasn't really about reducing clutter. I mean yeas, back then some web 
> > viewers
> > wouldn't display more than 250 files in a directory, the way github 
> > truncates at
> > 1000 today:
> >
> > https://github.com/landley/linux/tree/master/arch/arm/boot/dts
> >
> > But the goal was annotating command categories. Posix and pending are 
> > obvious,
> > and I mentioned example. Back when I split them up, LSB was still a viable
> > standard (the Linux Foundation hadn't destroyed it yet), and it STILL kind 
> > of
> > means "this command existed back in Y2K and was considered part of the base
> > system back then, even if posix never caught up". Several commands in 
> > pending
> > get promoted into LSB (such as most of the password stuff, although oddly
> > mkpasswd is NOT in lsb 4.1).
> >
> > Hmmm, possibly instead of a dead standard the linux foundation killed, I 
> > should
> > instead check the $PATH of my old red hat 9 install from the dawn of time...
>
> the BSDs have already done that experiment for us (with bin, sbin,
> usr.bin, and usr.sbin [and contrib!] directories), and it's also a
> PITA.
>
> "if the new organization _still_ means i need to use find(1) for a
> command that's default 'y', we haven't made things any better" :-)
>
> > Hah, it's still on busybox's website:
> > https://busybox.net/downloads/qemu/rh-9-shrike.img.bz2 Login as user busybox
> > password busybox, I believe the root password is also busybox. But that's
> > post-1.0, I'm not changing horses midstream...
> >
> > Anyway, toys/android basically meant (to me), "commands that come from and 
> > are
> > maintained by Elliott which I can't even test because they don't apply to a
> > vanilla linux system that isn't running the full android environment". 
> > Although
> > that's a personally idiosyncratic definition because I lumped selinux in 
> > with
> > that;
>
> (heh. you beat me to it :-) )
>
> > the only other environment I've noticed having a big selinux rule stack is
> > Red Hat. I haven't noticed a lot of selinux in debian, arch, gentoo, alpine,
> > buildroot... Even SuSE used apparmor instead, although they switched to 
> > selinux
> > recently because their business model is to be the Diet Red Hat so vendors 
> > have
> > a second source to solicit enterprise bids from, so there's business logic 
> > to
> > minimizing the delta between them regardless of technical merit (and 
> > spending
> > less maintaining parallel infrastructure just to sign things in triplicate).
> >
> > I admit "toys/net" is a distinction that hasn't really worked out: I didn't 
> > even
> > put nbd_client.c and nbd_server.c in there. I could move all that into 
> > other I
> > suppose, if one less directory was worth making git log history less 
> > obvious...
> >
> > And then everything that ISN'T in one of those groups needed a place to go,
> > hence "other". It's not ideal, but it was motivated by the number commands
> > continuing to increase and One Big Directory getting a bit busy, and 
> > needing a
> > place for "pending".
>
> (tbh, just merging "lsb" into "other" would be a step forwards. wtf
> is/was "lsb" anyway? and while i can _usually_ guess "POSIX or not?"
> correctly, "lsb or other" is impossible by virtue of being
> meaningless.)

(and to be clear, although "lsb" is particularly obscure, i think this
is the same problem busybox's organization has: why do i have to care
whether something is in coreutils or linux-utils or procps? how is
that relevant to me? the best answer i can think of is "because i want
to only use toybox/busybox to replace _that_ package", but i don't
think the _directory structure_ helps there, right? that hypothetical
person actually wants more metadata in the kconfig part of the comment
inside each file?)

> > It's been the status quo for a dozen years now (commit 3a9241add947 in 
> > 2012) and
> > moving everything AGAIN would have costs, so I'd want a reason and assurance
> > that we're not going to change our minds again.
>
> for me the holy grail is "tab complete works and i don't have to think
> about arbitrary partitions". i think "not yet default 'y'" is pretty
> defensible (though the reason we're having this discussion is because
> people _don't_ read "pending" as "danger, keep out!"), but the rest
> seem so arbitrary.
>
> > Collapsing the directories
> > together when the last command is promoted (or deleted) out of pending might
> > make sense, figuring out what to do about example/ (trusting to the demo_ 
> > prefix
> > to annotate the example commands is nice, but hello.c hostid.c logpath.c and
> > skeleton.c would need... something).
>
> no, i think example/ is defensible too. (i'd argue you're only ever
> going to look in there if you have a _reason_ to. or you've done a
> `grep -r` for something you're changing/checking all references to.
> the reason i completely forgot about example/ is that it never causes
> me the "where the fuck is _mount_?!" annoyance :-) )
>
> > I also note I think I've figured out how to replace kconfig: I can just 
> > make a
> > list that scrolls up and down with a highlighted entry you hit space on, 
> > handle
> > help text, search, exit/save, resolve selects and depends and have "menus" 
> > be a
> > label line with its contents nested two spaces further to the right.
> >
> > That's because I don't actually care about visibility the way they do (maybe
> > grey entries out but it just doesn't come up much), and my list doesn't 
> > nest as
> > deep as theirs so spacing off the right edge is less of a bother, and I 
> > don't
> > support modules...
> >
> > But I need to close tabs to get there, and people keep sending me 
> > interrupts to
> > focus on instead.
> >
> > >> `vi toys/foo.c` would save me a lot of thinking/calls to find.
> > >
> > > Eh, keeping all the commands in a massive toys/ directory makes it harder 
> > > to tell what we have.
> > >
> > > A possible solution is to...
> > ...
> > > Then again...
> >
> > I need to stop checking email every time I sit down at my laptop, because
> > bikeshedding can eat an endless amount of time and I've got other stuff to 
> > do.
> >
> > For one thing, I promised to look at
> > https://github.com/landley/toybox/issues/486 tonight. (I did the code change
> > right after reading the commit, it's fluffing out the test suite to make 
> > sure I
> > know what it should be doing and that it's getting it right that's the 
> > headache;
> > "install -dm +x blah" applies the +x to 000 for some reason, and "umask 0;
> > install -d x" still does 755 so the behavior is NOT 777 minus umask...)
> >
> > > In any event, a complete reorganization of the commands would make the 
> > > history of them a lot
> > > harder to keep track of.
> >
> > I believe I've said that every time this topic comes up.
> >
> > Right, enough meetings about the lack of progress...
> >
> > Rob
> >
> > P.S. I never mind people asking "what's the status of" or "why didn't you", 
> > and
> > when people say they don't personally like stuff they can never actually be
> > WRONG about that. But suggesting what I "should" do is... tiring.
_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to