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.) > 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