5 ms·
Can these project changing words at least agree on a single word to use? We're going to have 10s of different words representing the same thing that for decades
by akerro 6y ago
Can these project changing words at least agree on a single word to use? We're going to have 10s of different words representing the same thing that for decades of evolving technology was known as slave. It will make it confusing and difficult to move between technologies.
- qeternity 6y agoWe already do to some degree: follower, replica, secondary, etc
- dependenttypes 6y agoAll of these seem quite a bit worse than slave to be honest. Why not use server/client instead? Edit: another post in this thread suggested master and puppet, I think that this is a cute yet clear variant.
- qeternity 6y agoI wasn't saying they were worse. I was replying to a concern that we will end up with multiple names that mean the same thing. I mean, this is modern technology...it seems like only the hardware guys can manage consistent naming, and even that is slipping. On the software side? I can only think of rare things which don't have a half dozen synonyms.
- dependenttypes 6y ago> I wasn't saying they were worse I.. know? I would not say that they are worse if you had said it yourself after all.
- geofft 6y agoThat's the funny thing - in almost all contexts I've seen the "master/slave" terminology, it's not actually technically clear. In some contexts (e.g. Jenkins), a "master" tells the "slave" what to do and the "slave" does it. This at least is plausibly connected to the real-world meanings of the term, although given that the "slave" can start and stop work at any time and the "master" needs to accommodate that, the analogy isn't great. "Coordinator/worker" works well here. In some contexts (e.g., MySQL), a "master" sends a copy of all its work to the "slave," and both of them execute it. The "slave" stands ready to replace the "master" if the "master" becomes unavailable, and usually at that point the "master" becomes the new "slave" once it catches up. This makes no sense. "Primary/replica" works well here. In some contexts (e.g., network device bonding, and, I think, ZFS), a "master" is a logical construct, consisting of multiple physical "slaves". All interactions with the "master" are actually algorithmically sent to one or more "slaves," and if all the "slaves" are offline, there's no "master" left. This, also, makes no sense. Terms that would make sense include things like "bond device/bonded member" (the members being bonded to each other), "logical volume/physical volume", etc. In this pull request they seem to use "dependency." In some contexts (e.g. disk drives), the "master" and "slave" are both devices that provide the same type of service to the host, but the "slave" connects to the "master" instead of directly to the host, and while the "master" is communicating, the "slave" can't. This, also, makes no sense. "Primary/secondary" works well here. In pseudoterminals, the "master" is a limited API to the PTY object, held by the terminal emulator, which copies text to the screen, interpreters rendering commands, and sends input. The "slave" is a more featureful API to the same PTY object, held by the shell / the command under execution, which does what it wants. This, also, makes no sense. I don't know of a standard term here, but I'd sort of suggest "monitor" and "application" (or perhaps "monitor" and "session" if you want to keep the initials). All of these are different uses, and you can't generally map one to another. For instance, if you're used to a database where "master/slave" is used in the primary/replica sense, and you see a database where the "master" just coordinates requests for work and all actual data is sent to/from some "slave," your knowledge of primary/replica architecture is misleading here.
- MauranKilom 6y ago> [Jenkins] "Coordinator/worker" works well here. Agreed, although my mind immediately went to "manager" and how that is one of the most useless names. See e.g. https://stackoverflow.com/questions/1866794 https://stackoverflow.com/questions/1866794. Need to be careful with this type of naming. > [MySQL] "Primary/replica" works well here. Agreed. > [ZFS] Terms that would make sense include things like "bond device/bonded member" (the members being bonded to each other), "logical volume/physical volume", etc. In this pull request they seem to use "dependency." These names more than double number of syllables/characters, which will severely hamper adoption. I find "dependency" to be a bad descriptor for individual components fully making up a whole, but I expect that the ZFS people deliberated over that name and that my extremely limited familiarity with the topic(s) is the reason why I find "dependency" weird. > [disk drives] "Primary/secondary" works well here. Agreed. > [pseudoterminals] I don't know of a standard term here, but I'd sort of suggest "monitor" and "application" (or perhaps "monitor" and "session" if you want to keep the initials). I would strongly discourage overloading the meaning of "monitor" in the context of terminals. Otherwise, you all but guarantee confusion.
- geofft 6y agoFor bonding devices I usually say "bond" and "member" at work, or things like "I added eth4 to bond0," which seems at least as clear as "I enslaved eth4 to bond0". For disks I usually write and say "LV" and "PV" for LVM and "LD" and "PD" for MegaRAID, which matches what the respective CLIs use. Re terminals, it's the end that's connected to the monitor (or terminal emulator), just like the other end is connected to the application/session. There aren't two actual pseudoterminals in any sense, just two views of the same thing, so the idea of "the pty master"/"the pty slave" doesn't quite make sense unless you're very careful to realize you're talking about the open FD and not the actual thing. I'd probably say something like "the monitor end" and "the session end" (and continue to abbreviate them as "ptm"/"pts").
- rodgerd 6y agoThank you for the most substantive post in the thread.