Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Operating Systems Software Linux

GoboLinux Compile -- A Scalable Portage? 366

LodeRunner writes "The GoboLinux team, featured about a year ago for creating a distro that does away with Unix paths such as /usr/bin and /lib and uses things like /System/Settings/X11 instead, just released a new release where they introduce their own alternative to Portage and similar systems: Compile. But is yet another source-based compilation system needed?" Read a bit more below on why the GoboLinux folks think so.

LodeRunner continues "We already have ebuilds, RPM .spec files, and whatnot. The argument for reinventing the wheel yet again was the observation that while developing apps to handle these files is easy, the task of maintaining the ever-growing database of compilation scripts is the real problem -- the huge package collection of Debian comes to mind. Compile took the extreme minimalistic approach, and its scripts ("recipes") are as small as can be: the script for a typical autoconf-based program takes two lines.

Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script (for example, apps that need a separate build directory just add a needs_build_dir=yes line). The plan is to make Compile as smart as it can and the recipes as small as possible.

It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity will prove itself to be limiting or enlightening, but in the ~six months Compile has been in beta test by the people from the GoboLinux mailing list, over 500 recipes were written, ranging from Glibc and GCC up to KDE and the Linux kernel itself."

This discussion has been archived. No new comments can be posted.

GoboLinux Compile -- A Scalable Portage?

Comments Filter:
  • Emerge (Score:3, Insightful)

    by Anonymous Coward on Saturday June 05, 2004 @03:05PM (#9345725)
    When i first changed to gentoo I was gladly surprised by the power and flexability of portage. If this is half as good it is worthy a place in the linux community, no doubt about it!
    • Yea, I don't understand how the claims they are making mean its better then Gentoo. Those claims are the same one Gentoo makes. Gentoo has the same goals in mind with its OOP-like ebuilds (to make each ebuild as simple as possible). A typical autoconf program takes just a few lines. Ditto for a typical KDE program.

      In reality, most programs aren't typical of course.

      If they're doing away with USE variables, that will make things simpler at the expense of losing a powerful feature.
    • Re:Emerge (Score:2, Funny)

      by prepp ( 465299 )
      all i'm gonna say is this, http://funroll-loops.org , Enjoy Zealots!

  • WHAT? (Score:5, Funny)

    by ajutla ( 720182 ) <moc tod liamg ta altuja> on Saturday June 05, 2004 @03:08PM (#9345744) Homepage
    "Does away with" /usr/bin and /lib?


    BLASPHEMY!!! They're SINNERS! How DARE they mess with the SACRED directory structure! Et cetera! Et cetera! Ad nauseam!


    ...In all seriousness, though, that does sound kind of like an interesting concept--might make things easier for people to understand. Me, I like my three letter unpronounceable paths all the same :)
    • by Moth7 ( 699815 ) <mike DOT brownbill AT gmail DOT com> on Saturday June 05, 2004 @03:13PM (#9345779) Journal
      It's much more difficult to make a typo in /etc than /System/Config. That's one of the godsends of the POSIX structure over that of Windows - /lib is easier to remember/type than C:\Windows\System32. And there are none of those annoying spaces in /usr/bin that exist in C:\Program Files.
      • Non-issue (Score:3, Interesting)

        by brunes69 ( 86786 )
        1. With Linux entering mainstream, hardly anyone uses the command line for things like file management anymore. They use file managers like Konqueror and Nautilus.

        2. Even if you're afraid of X Windows, have you ever heard of tab completion?

        • Re:Non-issue (Score:5, Insightful)

          by Jameth ( 664111 ) on Saturday June 05, 2004 @03:31PM (#9345883)
          Yeah, but who the hell starts them with capital letters?!?!?!

          Even with tab-completion, I just got my time quadrupled! Frickin' shift keys.
          • Re:Non-issue (Score:5, Informative)

            by HishamMuhammad ( 553916 ) on Saturday June 05, 2004 @03:49PM (#9345980) Homepage Journal
            Every modern shell supports case-insensitive tab-completion. And in GoboLinux, this is enabled by default.

            Try it, you might like it: on bash, just add

            set-completion-ignore-case on

            on your ~/.inputrc.
        • 1. With Linux entering mainstream, hardly anyone uses the command line for things like file management anymore. They use file managers like Konqueror and Nautilus.

          Wait, wait, wait, time, time, cut, cut, cut. That's a fucking joke, right? None of the Linux or BSD users I know use file managers for file management, except perhaps mc. And, given your second observation, I don't see why anyone would need to.

        • 1. Speak for yourself. I almost exclusively use CLI for file management the only time I don't is if I'm doing something like sorting several files into subfolders. The reason I like it better is that I don't have to take my hands off of the keyboard. I think a lot of the touch typists would agree that it really slows you down to have to take your hands away and look away from the screen to grab a mouse. So maybe I'm the "hardly anyone" about whom you were talking, but I think there is a pretty major sub
    • Re:WHAT? (Score:3, Insightful)

      by gspr ( 602968 )
      Me, I like my three letter unpronounceable paths all the same :)

      I don't mean to nitpick, but /usr/bin and /lib are both easy to pronounce: "user-bin" and, well, "lib". /etc is really the only hard one.
    • Screw that (Score:5, Insightful)

      by brunes69 ( 86786 ) <slashdot@[ ]rstead.org ['kei' in gap]> on Saturday June 05, 2004 @03:17PM (#9345809)
      Blasphemy my ass. i have been using Linux, BSD, nd other UNIX derivatives for over 10 years now, and all I can say is THANK GOD.

      The /usr/bin, /etc, /usr/local concept is totally outdated. Having apps in their own directories eases maitenence, eases administration, and eases uninstallation. Think about it, if apps were in their own self contained directories, who even *needs* a package manger? To install, you extract the tar, to uninstall, delete the directory. Boom snap, done and done.

      Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

      • Uh, the only system I know that really does that is Mac OS X. The single icon (such as FireFox) you see on the desktop is really a directory called FireFox.app, and is totally self contained.

        And you can uninstall by deleting the directory.

        Windows tries to do this, but the registry prevents simple folder removal as an uninstall procedure, because stuff is left in the registry.
      • Re:Screw that (Score:5, Insightful)

        by McDutchie ( 151611 ) on Saturday June 05, 2004 @03:30PM (#9345880) Homepage
        Other than core system configuration and core libraries the whole system uses, I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.

        Except that many applications install their own DLL cruft under C:\WINDOWS anyway (Microsoft itself being one of the worst offenders), and that the program stops working if you move the application dir around, thus eliminating completely the usefulness of this concept.

        No, the OS that does this right is Mac OS X. Installing an app is as simple as copying the application package (basically just a directory), and you can put and move it anywhere.

        • Re:Screw that (Score:3, Interesting)

          by omicronish ( 750174 )

          Except that many applications install their own DLL cruft under C:\WINDOWS anyway (Microsoft itself being one of the worst offenders), and that the program stops working if you move the application dir around, thus eliminating completely the usefulness of this concept.

          Most of the cruft Microsoft installs in C:\Windows are shared libraries such as msvcrt.dll and mfc42.dll. I agree that it's ugly but there's not really anywhere else they can go, especially since C:\Windows\System32 is on the path by defaul

          • Re:Screw that (Score:3, Insightful)

            by gregmac ( 629064 )
            An interesting thing I've noticed is this shift in some places to installing shared libraries such as mfc42.dll to the program's installation directory, eliminating the need to touch C:\Windows at all and avoiding DLL hell at the expense of file space.

            The big problem here is that if you have a vulnerability or bug in a shared library, you now have to wait for the vendors/maintainers of every package to upgrade everything. With shared libraries, you can just upgrade the library and all is well (obviously t
        • No. The OS that got this right, almost, was Mac OS 3.5-9 (I'm not sure about earlier).

          OTOH, they got it slightly wrong, it should have merely been an invisible directory that was automatically dragged/copied/deleted with the application, but which didn't need special system commands for access. Turning it into a single file (the resource fork) rather than an invisible directory (the resource folder?) was the only mistake, though. And I particularlly liked having file type separate from linked applicatio
        • Actually.. (Score:3, Informative)

          by Junta ( 36770 )
          You should look at rox [sourceforge.net] which advocates and uses an appdir apporach in unices (which is actually really neat and effective, they even provide ROX-LIB which shows how it would work with repect to libraries.

          True, libraries would still have to be in some common area, but at least would have all relevant resources entirely contained in a subdirectory.

          OSX does some impure global resources stuff and some things (particularly Apple packages) are installer based and contribute to tossing things all over the place.
        • Re:Screw that (Score:3, Informative)

          by Chester K ( 145560 )
          Except that many applications install their own DLL cruft under C:\WINDOWS anyway (Microsoft itself being one of the worst offenders), and that the program stops working if you move the application dir around, thus eliminating completely the usefulness of this concept.

          .NET fixes this problem by deprecating use of the registry, preferring systemwide configuration for an application to be in the application's directory, and side-by-side DLL use. They even market the whole idea as enabling "XCOPY Deploymen
      • Re:Screw that (Score:3, Insightful)

        by justMichael ( 606509 )
        I ideally think *any app should be totally confined to one directory level. IMO this is one thing Windows does right.
        You don't honestly believe that Windows apps confine themselves to \Program Files\App do you?

        If you do how do you explain the "Shared file, confirm deletion" during an uninstall?

        If you had said that OS X has it right, you would have been closer, but even some apps in OS X scatter things around during an install.
      • Re:Screw that (Score:4, Insightful)

        by Too Much Noise ( 755847 ) on Saturday June 05, 2004 @03:31PM (#9345889) Journal
        so what prevents your having the app in its own directory (under /usr/bin/local, for instance) and symlink the binaries to /usr/local/bin, the lib subdirectory to /usr/local/lib and so on? then uninstalling only adds the step of removing invalid symlinks after deleting the app directory - you could even make it a script (say, /usr/bin/uninstall).
        • Re:Screw that (Score:4, Informative)

          by stevey ( 64018 ) on Saturday June 05, 2004 @03:50PM (#9345989) Homepage

          And that's exactly what scripts such as GNU Stow [gnu.org] do.

          The 'foo' application is installed in '/usr/local/foo-v1.x', and symlinks are placed into /usr/local/bin so that it can be run.

          This makes installation and removing applications simple - and you can share your applications across NFS if you're so inclined.

      • Re:Screw that (Score:2, Insightful)

        by dindi ( 78034 )
        naah ....
        what prevents you to install your apps with a different prefix if you think it is the good thing ? ./configure --prefix=/whatever/programname

        keeping the /usr or /usr/local does not make a sense maybe on a home linux box ...

        but when you have remote mounted filesystems, and you are organised enough to care about what belongs to the system and what is an application you installed and what belongs to the system ...

        making backups/reinstalls/upgrades is a lot better when you know what belongs to eg
      • Re:Screw that (Score:4, Interesting)

        by BrookHarty ( 9119 ) on Saturday June 05, 2004 @03:51PM (#9345994) Journal
        We use /appl (/opt in a jam) for all our software. And most production software uses its own /etc, bin,log,lib, directories. /appl/oracle with everything in its own directory.

        While this works, I dont care for gentoo's problems with Mozilla and QT3 compiles, you can recompile an application and break 2 others, gets to be a hassle. But you trade the hassle for speed, or ease (I guess)

        Sometimes I just want to rpm -ivvh --force --nodeps and forget about it. And to tell the truth, there is alot of misc stuff on linux/bsd/solaris boxes that could be cleaned up. X directories alone are garbage. /usr/X/lib/X11/fonts WTF, I've always hated how X puts files that are not libs in /lib.

        And this /share directory, how about a simple /fonts directory for the entire system?

        OSX on the other hand is set out clean, they did a good job the personal /home directories. I love how fink is just in /sw for the whole system, and doesnt touch a system file. Even my WinXP box has a cleaner directory structure.

        Think Gobolinux might be on to something. I'm gonna install it later and try it out.

      • This was what /opt was originally designed for. Files associated with a particular package go in /opt/$PKG/bin, /opt/$PKG/lib, etc. Then, in /etc/profile, you have something like:

        for dir in /opt/*
        do
        if [ -d $dir/lib ]; then
        LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$dir/lib
        fi
        if [ -d $dir/bin ]; then
        PATH=$PATH:$dir/bin
        fi
        done
        unset dir

        (Sorry about the indentation, I don't feel like fighting with the tabs inside the <ecode> tags)

        I actually install my boxen like this now, with the base system where it

      • In your haste to rid the world of package management, you quicky forget about dependencies...
    • Re:WHAT? (Score:5, Insightful)

      by Anne Thwacks ( 531696 ) on Saturday June 05, 2004 @03:29PM (#9345875)
      Many years ago, in the olden days I thought about this, and was quickly redirected to the "one true path" - it may be marginally more helpful TO ENGLISH SPEAKERS to have meaningful commands, directory names, etc - but unix is multi-user, and supports multiple locales, and the traditional commands, paths may not be meaningful, but can easily be aliased - each user can provide his own names, in his/her own language, but at least the standard ones are standard.

      You are welcome to alias them to whatever you want, but it wont help you understand your next door neighbour's Unix system, or your next employer's either.

    • Et cetera! Et cetera!

      No in *nix, that would be /etc/
    • Re:WHAT? (Score:2, Interesting)

      by rgmoore ( 133276 ) *

      I realize that it comes as a surprise to many people, but the standard Unix filesystem arrangment is not just a random pile of stuff that's accumulated over time. The directory structure- though not necessarily the names- is the result of a great deal of experience and careful thought. While it might make sense to rename standard directories with more descriptive names, like "libraries" instead of "lib" or even "temp" instead of "tmp", any suggestions to change their basic structure need strong justificat

  • Uhmm (Score:5, Funny)

    by NitsujTPU ( 19263 ) on Saturday June 05, 2004 @03:09PM (#9345750)
    But is yet another source-based compilation system needed?

    Uhmm... I guess not, from now on, we'll do all of our compilations without source code... however that will supposedly be done.
  • A job for ln? (Score:5, Interesting)

    by sweet 'n sour ( 595166 ) on Saturday June 05, 2004 @03:11PM (#9345760)
    /System/Settings/X11
    mkdir /System

    mkdir /System/Settings

    ln -s /etc/X11/ /System/Settings/X11

    Couldn't this also work?

    • Re: A job for ln? (Score:5, Insightful)

      by mercan01 ( 458876 ) <mercan01 AT gmail DOT com> on Saturday June 05, 2004 @03:18PM (#9345811) Journal
      They're trying to replace an arcane directory structure, not mask it.
    • It works opposite to that but, you have the right idea.

      The files are in /System/Settings/X11 and they create a link for backward compatibility the posix directory structure.

      ln -s /System/Settings/X11 /etc/X11
    • Actually, GoboLinux works thanks to symlinks, but the other way around. /etc is a symlink to /System/Settings, in order to maintain good Unix compatibility.

      Each app has its own Settings directory, and /System/Settings is the "global view" of every apps' settings (ie, /etc).
    • Now try doing that with say, Nautilus

      Ooops! It's directories and files are scattered throughout the filesystem :P

      Restricting programs to build into their own trees is an awesome idea IMO.
    • If you RTFFAQ here [gobolinux.org], you'll notice that they still use /usr, /bin /sbin, /etc etc. (hehe) as symlinks to their new, fancy directories.

      It actually is pretty clever the way they've laid it all out, except for that fact that it totally screws up non-English speakers. Three letters of gibberish is a lot easier to learn and remember than fourteen. Also, three is (probably not coincidentally) the magic number past which humans' ability to remember patterns generally drops off very quickly.

  • by scrytch ( 9198 ) <chuck@myrealbox.com> on Saturday June 05, 2004 @03:11PM (#9345761)
    Yes, an autoconf build script contains two lines. And cannot express version dependencies that the autoconf build didn't think to maintain ... and if it did, it doesn't communicate the dependency back to the build system. It has no way to merge config files. It doesn't even have a way to enumerate the installations. But yes, you could build a system that simple, because it's good enough for some, but even slackware isn't that simple. To say nothing of distribution patches, configuration (e.g. to build xchat with gnome support or not?), and so on.

    This isn't to say it'll get to be as complex as portage, but it will probably have to get at least as complex as ports. Which then begs an obvious question...
    • by HishamMuhammad ( 553916 ) on Saturday June 05, 2004 @03:29PM (#9345870) Homepage Journal
      And cannot express version dependencies that the autoconf build didn't think to maintain ... and if it did, it doesn't communicate the dependency back to the build system.

      There is a separate Resources/Dependencies file, which is automatically generated with ldd (but can be hand-tuned). This is further integrated with the GoboLinux fs-oriented concept of dependencies, so if you, say, compiled Allegro "by hand", it will not complain "Allegro is missing" just because it was not built with Compile.

      It has no way to merge config files. It doesn't even have a way to enumerate the installations.

      Could you clarify on those? I really did not get it (and maybe that's why it's not implemented :) )

      To say nothing of distribution patches, configuration (e.g. to build xchat with gnome support or not?), and so on.

      Distribution patches are applied if found in the recipe directory (a recipe is a .tar.bz2 containing a directory and some files). Configuration is being discussed in the mailing list, but currently we rely on configuration detected by autoconf et al: usually, if you have svgalib installed, program foo gets compiled with svgalib support compiled in, and vice-versa. It works well for a surprising number of packages, but yes, we are considering something like that.

      This isn't to say it'll get to be as complex as portage, but it will probably have to get at least as complex as ports. Which then begs an obvious question...

      Yes, we are aware it will get more complex over time, but by keeping minimalism as the #1 goal, let's see how "little complex" can we still be while being reasonably feature-complete for real world usage (and some would even argue we already are).
  • by Wavicle ( 181176 ) on Saturday June 05, 2004 @03:11PM (#9345765)
    I strongly believe in the jungle-evolution style of distributions, so I welcome any new randomness into the population to find out if natural selection will choose it or forget it... but...

    I'm still not seeing what this has over Gentoo, other than the new directory naming scheme (which is, btw, very nice). Portage is a pretty slick system. Ebuilds are fairly simple to write. There isn't much in the way of "unnecessary extra" in them. Is this really that much better?
  • by Badam ( 222642 ) on Saturday June 05, 2004 @03:14PM (#9345788) Homepage
    Having created build scripts in FreeBSD, Gentoo, Sourcemage, and Arch Linux, I think the most important goal is to use/develop a script language that newbies find easy to use.

    If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!
    • by HishamMuhammad ( 553916 ) on Saturday June 05, 2004 @03:32PM (#9345895) Homepage Journal
      If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!

      Exactly! That's our #1 design goal. Most of the more active users in our mailing list have already contibuted at least one build script for their favorite app. That's how the recipe-store has grown so fast.
      • As far as I can see by browsing a few recipes from your repository, you have not developped a special scripting language for it. It's simply bash scripts, with facilities through the usage of common variable and functions that trigger different behaviors.

        If I take Armagetron recipe [gobolinux.org], for instance, it's not really that user-friendly in my opinion. Or, at least, not really more user-friendly than a Gentoo ebuild. Okay, the armagetron ebuild [gatech.edu] is longer, but it also contains more meta-data (dependences, license,
        • Yes, I basically agree with you. The Armagetron recipe shows the "ugly" side of recipes: the support for imperative constructs, which often slip in declarative systems (ask any functional programmer...).

          In this particular example, I think the recipe author could have avoided the pre_build function using a patch instead. I recommend that very strongly to users, because patches are easier to maintain when writing a new recipe based on a existing one: patches make "rejects" when they change from one version
    • Having created build scripts in FreeBSD, Gentoo, Sourcemage, and Arch Linux, I think the most important goal is to use/develop a script language that newbies find easy to use.

      If you're developing a new distro, and you're concerned about giving users a reason to move, focus on making it easy for us to add to the distro!

      For small programs, I can imagine an XML file that describes stuff like possible shortcuts to place on start menus and any file extensions that should be handled by the program. The inst

  • Screenshots (Score:3, Insightful)

    by Stevyn ( 691306 ) on Saturday June 05, 2004 @03:15PM (#9345791)
    I like how they post lost of screenshots running window managers. They could have just said "it runs KDE." It's not like their KDE is anything special, it's the underlying structure that's different. Then again, every distro does this. However, this distro is targetting people who most likely understand this concept already.

  • by mroch ( 715318 ) on Saturday June 05, 2004 @03:19PM (#9345818)
    The descriptive path thing sounds a lot like what OS X does, except that it goes all the way where OS X still has /usr, /etc, etc. although hidden. I wonder if Apple can patent or has patented that?
  • by RovingSlug ( 26517 ) on Saturday June 05, 2004 @03:24PM (#9345844)
    Knowledge for handling common situations is usually added to Compile itself instead of being coded in the script ... It remains to be seen whether this experiment of gauging differently the tradeoff between flexibility and simplicity

    Yes, simplicity is good, but only in the context of the whole system. Here, you're just shifting complexity from the per-package scripts to the overall Compile package itself -- creating a large, central, monolithic service.

    Because it's centralized, over time, this is going to accumulate a lot crap and become opaque, obfuscated, and unmaintainable. Changes and maintenance to Compile will more significantly impact the contemporary set of recipes than, say, changes to Portage and ebuilds.

    It's easy to apply a good idea, like "simplicity", in too narrow of a scope -- to the detrement of the overall design. Better to think about it as balance of "package maintainability", "system maintainability", "barrier of entry", etc.

    • Because it's centralized, over time, this is going to accumulate a lot crap and become opaque, obfuscated, and unmaintainable. Changes and maintenance to Compile will more significantly impact the contemporary set of recipes than, say, changes to Portage and ebuilds.

      That remains to be seen. The implementation so far has been pretty proof-of-concept, more to get the model stress than to get the actual code. After all, code can be rewritten, but redesign is much more costly after you have a large database
  • Unix paths (Score:3, Informative)

    by Too Much Noise ( 755847 ) on Saturday June 05, 2004 @03:25PM (#9345849) Journal
    a distro that does away with Unix paths such as /usr/bin and /lib and uses things like /System/Settings/X11 instead

    For all those thinking "what a nice idea":

    afaik LSB [linuxbase.org] requires FHS [pathname.com] which, in turn, requires the standard directory structure. Does this mean we should throw the whole LSB out now?

    And no, OSX is not LSB compliant - go figure.
    • Conversely, do you mean that there is no room for further change or improvement beyond LSB? Are we to follow LSB without change forever?

      The Gobo Linux system creates its own directory structure using simple descriptive names. It looks loike a very nice idea to me. They also have links in place to allow compatibility with the Posix directory structure. LSB is not threatened. Yet.
    • Not shure about LSB compatability, but they do maintain the appearance of FHS or simular through links and such so that apps see the directory structure they expect while users get a directory structure that is more intuitive.
      It's possible LSB dependant apps could run just fine on this system.
      I hope so, this kind of soulution is needed, the cryptic (to MOST people) unix style directory structure really need to go, or at least be hidden for Joe Sixpack to be able to use it. The only reason for not do
    • Re:Unix paths (Score:4, Informative)

      by sirReal.83. ( 671912 ) on Saturday June 05, 2004 @04:38PM (#9346282) Homepage
      And no, OSX is not LSB compliant - go figure.
      This might be nitpicking, but I think you didn't read what the first letter in 'LSB' stands for - Linux :)
  • My shift key!! (Score:2, Insightful)

    When the poster mentioned
    /System/Settings/X11

    I had thought, he/she was trying to be funny

    But the distro does seem to go this way : /System/Links/Tasks ,as the article mentions

    Despite the intuitiveness, having capitals at the beginning of all the directories, particularly the ones that you are going to replace all the / dirs with, would be a major pain atleast in a case-sensitive *nix world

    The current 'X11R6' in /usr itself pains lazy idiots like me with the capital X; I shudder to think as to what'd
    • Lazy says the one who attempts to be completely correct in his/her post who used mostly correct punctuation and proper use of capital letters. Irony, thy name is vijaya chandra. Now that's hard to type.
  • by dankelley ( 573611 ) on Saturday June 05, 2004 @03:29PM (#9345873)
    Even if you're not interested in 'Compile', the website is well worth visiting. These folks have some new ideas, and they don't seem to be just gratuitously new. (By 'gratuitous' I'm thinking of changes that yield no new power, such as the differences in directory structures between some of the linux distos.) Slashdot readers might find it particularly interesting to consider the alternate ideas about system/application directories used in this system.

    I've recently switched from linux to OSX, and I've learned that the latter has some clever ideas (e.g. bundles) that can leverage developer effort. Given this context of learning by changing, my own view is that this new direction for linux is worth investigating ... not that I'll likely leave OSX anytime soon.

  • by YetAnotherName ( 168064 ) on Saturday June 05, 2004 @03:33PM (#9345897) Homepage
    This is similar to the evolution from ant [apache.org] to maven [apache.org] for Java developers. With ant, you gave the steps necessary to build your system, an imperative approach. With maven, you instead describe the shape of your system, and it figures out the steps.

    Projects become more uniform as a result, and developers spend more time building the projects instead of maintaining build systems.

    My only concern is the knowledge or experience that's lost as a result; larger and larger groups of developers have a smaller and a smaller understanding of the tools, environment, and subtle filesystem dependencies that systems tend to have, putting the experience in in-the-field debugging into a relative tiny number of cutting edge high-priced consultants.

    By the way, I'm [seankelly.biz] available. ;)
  • The current file system setup is mostly standard now. No matter what Unix variant you use its pretty much the same.. ( not exactally, but they are all close enough to get around them ) Why go and change it 'just because we can'. "Better" is relative.
  • From their web site:

    To maintain backwards compatibility with traditional Unix/Linux apps, there are symbolic links that mimic the Unix tree, such as "/usr/bin -> /System/Links/Executables", and "/sbin -> /System/Links/Executables" (this example shows that arbitrary differentiations between files of the same category were also removed).

    The "differentiation" between /usr/bin and /sbin is hardly arbitrary. /usr is often on a separate partition; /sbin must be accessible even without other partitions m

  • The filesystems for the UNIX family of OSs has always been in evoloution. Originally the /usr filesystem stood for /user. All user directories were in /usr and /usr/bin was for user contributed binaries.
    Then many of the binaries in /usr/bin became 'standard' parts of distributions, and we started using /usr/local/bin for user contributed binaries -- and we started putting user home directories in places like /home.
    Now /usr/local is becomming the standard place for 'standard-nonstandard' binaries and we
    • i was also wondering if the concise directory names had anything to do with the smaller hard drives of the past. if so, then it would seem only natural to deobfuscate the file system now that we actually can.
      • vena wrote: i was also wondering if the concise directory names had anything to do with the smaller hard drives of the past.

        No. Directory names (and common commands like ls and rm) were traditionally short on Unix because comm speeds were very slow in the 70's and 80's. When your terminal's running at 110 baud, you don't want to type any more than you have to. Things are a lot faster now, fewer people use the command line, and tab-completion helps those who do--so we could theoretically have /User/Bin

    • Then many of the binaries in /usr/bin became 'standard' parts of distributions, and we started using /usr/local/bin for user contributed binaries ... Now /usr/local is becomming the standard place for 'standard-nonstandard' binaries

      You know what they're really for?

      * /bin is for binaries that you need to use the system in single user mode (i.e. no 'user' involved).
      * /usr/bin is for binaries that a user might want to use, like those of your average set of applications.
      * /usr/local/bin is for binaries that
  • On reading the some of the docs on the website, I see no reference to something like sandbox.
    Sandbox for those of you unfamiliar with gentoo, provides a method for making sure that durring the build no file outside the directory can be written to, so malicious scripts (say someone cracked a project & changed configure for example) & whatnot wouldn't be able to work. It doesn't rule out trickier exploits (backdoors etc actually in the code) but does make it safer.

    Now I saw no mention of something

    • Huh? So it protects you while the package is built but not when you actually execute it... why is that useful?

      I always thought that the Sandbox was there to keep track of all the files the package installs, for the unmerge procedure...
      • As I mentioned: any compromised build scripts. If someone managed to get malicious instructions into a build script (as mentioned: configure) or in the make file, etc.

        It doesn't matter what distro it is for the execution if it's in the source code (as in someone has coded in a back door that hasn't been noticed), because any build system that I know of won't see it or be able to prevent it.

        Now, sandbox does prevent things from happening like build scripts accidentally over writing things if either the w

    • On reading the some of the docs on the website, I see no reference to something like sandbox.

      Yes, Compile uses a sandbox. I am somewhat familiar with the Gentoo sandbox, and our approach is different. Instead of trapping system calls, we install programs using a non-priviledged user which has only temporary access to the program directory it is supposed to work on. You see, this solution uses only the standard Unix permissions system with no ld hacks, and is only possible because of the GoboLinux filesys
  • by Mustang Matt ( 133426 ) on Saturday June 05, 2004 @04:30PM (#9346221)
    While I'm used to the current paths, I have no hard feelings at all about ditching them.

    I don't know if there's a linux standard for what kinds of files go in each directory but everyone I ask has a different answer.

    I think switching to an updated naming scheme for directories and getting a common installation/uninstallation routine for applications that actually sticks items on the menus in the guis, etc. would be a huge move forward.

    Not that I need either feature. I don't even use a linux gui. But someday maybe I will.
  • Directory names (Score:3, Interesting)

    by Brandybuck ( 704397 ) on Saturday June 05, 2004 @07:59PM (#9347583) Homepage Journal
    It doesn't matter what you call system directory names, because at the desktop level and below, the average user just won't care. In other words, the typical newbie will never encounter /etc or /usr/lib. It may sound nice at first glance, but this is not something that will make the system easier for users.

    At the "desktop level", however, it does make sense. And oddly enough, this is an area where the FHS and tradition are completely silent. Do what you want and no one will care.

    The user isn't going to care that system-wide fonts go in /usr/X11R6/lib/fonts, because the user is going to push the "install font" button instead!
  • by ReyTFox ( 676839 ) on Saturday June 05, 2004 @09:53PM (#9348100)
    At least, so long as the system uses shared libraries.

    MS-DOS was the only OS(that needed an install, Atari DOS wouldn't count there) where I really had a "clean" install the whole way through. Programs went in x, drivers in y. Everything using DOS4GW had a copy of it included with the binary, no harm done. Needless to say, configs also went alongside the binary.

    Of course, this falls apart as soon as you have a more complex OS that needs things like scripting languages and windowing systems. There's just no way around shared libraries. And with shared libraries comes other kinds of shared access - to data and devices. So you have to reorganize, create new structures to hold certain kinds of files. Version conflicts, missing depends - all result from this necessity.

    Of course, these structures just won't make any sense to the end user, except as a programmer. It won't matter how much you try to polish it up. A project like this might help, but putting an end to it all would probably need something along the lines of an FS and binary format revision, to include more data like the version number and purpose for each file. Good luck doing that.... :P

What hath Bob wrought?

Working...