Hello, everyone! I've been coming to this website for some time now but haven't posted very often. I hope to be more active on this website now though.
What I was wanting to ask is a question about application installation and management in operating systems. What is the best way to do it? Windows applications usually use their own installers, Mac uses application bundles which you can drag to your applications folder, and some Linux distributions use package management systems like Debian, RPM, Pacman, etc.
I recently bought a Mac, and I like the idea of application bundles that you can just drag into your applications folder, but it bothers me that all they are are folders with the .app extension. Maybe they could be archives of some sort? That would probably make it slower though.
The only thing that I don't like about package management in most Linux distributions is dependencies. Where I live, I can't get high-speed Internet yet, and I can't get a modem driver working in Linux. Trying to install an application with 20 dependencies without Internet isn't very easy.
I hope to start working on my operating system soon, but I was just wondering what you think is the best way to install and manage applications.
Application Installation And Management In Operating Systems
- Firestryke31
- Member
- Posts: 550
- Joined: Sat Nov 29, 2008 1:07 pm
- Location: Throw a dart at central Texas
- Contact:
Re: Application Installation And Management In Operating Systems
I, personally, would like to see a system with a combination of the package system and the installer system. I like the installer system because it gives you everything a program needs to get running, and I like the package system because it is a central place for program/dependency management and updating (i.e. no visiting 100 websites to download patches, just start up the package manager and choose "update all"). I would suggest trying to make it so an application programmer has to be able to handle updated versions of dependencies so you don't have 20 versions of some library installed.
Owner of Fawkes Software.
Wierd Al wrote: You think your Commodore 64 is really neato,
What kind of chip you got in there, a Dorito?
- NickJohnson
- Member
- Posts: 1249
- Joined: Tue Mar 24, 2009 8:11 pm
- Location: Sunnyvale, California
Re: Application Installation And Management In Operating Systems
@firestryke: I don't see how you couldn't have both - in my mind, a package manager is just a superset of a installer: an installer that is able to install dependencies separately and update them. My suggestion would be to have packages be able to install, update, and safely remove themselves, but with a *very* well defined interface (see 90% of Windows software for what not to do), and a way to officially check and request dependencies, instead of installing them themselves. That way, you don't have to use a centralized package manager, but avoid messy installation and "dll hell" or equivalent.
I do very much like the Mac approach of putting a fully functional application in one directory/package. However, the lack of a required, centralized location for applications makes use of a command line very hard, as well as searching for libraries. It also lends itself to large, monolithic applications, instead of small, discrete filters or tools. It depends on what you want the system to be like in the end.
I would put off thinking about package management until a much much later stage of OS development - you will probably forget about whatever you had thought was a good plan by that point anyway. If you want to test installation system ideas now, try just making a Linux distro with a new package manager/installer/filesystem structure.
I do very much like the Mac approach of putting a fully functional application in one directory/package. However, the lack of a required, centralized location for applications makes use of a command line very hard, as well as searching for libraries. It also lends itself to large, monolithic applications, instead of small, discrete filters or tools. It depends on what you want the system to be like in the end.
I would put off thinking about package management until a much much later stage of OS development - you will probably forget about whatever you had thought was a good plan by that point anyway. If you want to test installation system ideas now, try just making a Linux distro with a new package manager/installer/filesystem structure.
-
- Member
- Posts: 153
- Joined: Sun Jan 07, 2007 9:40 am
- Contact:
Re: Application Installation And Management In Operating Systems
To a degree, Windows Logo compatibility applications (the 'Made For Windows' logo) must use MSI installers (At least that was the case last time I looked at logo compliance.) MSI installers are a form of versioning database and installation script that describes the components, their version and what versions they upgrade. This information is stored in the system registry and is used by various sub-systems to load the appropriate 'latest version' implementation of an interface. It's actually a nice way to go but could use some changes just depending on your likes and dislikes. The concept is pretty standard, implementation is of course very specific.AusZero wrote:Windows applications usually use their own installers
Re: Application Installation And Management In Operating Systems
Hi,
For installing applications, I think the OS should do the installing and the application shouldn't need it's own installer (basically, the OS's standard installer is part of the OS's "standard base"). Applications should go in a specific directory - "/apps/<manufacturer_name>/<application_name>/<application_version>". For e.g. if a company called "mega-hard" creates an application called "foo-bar", then the only place that "version 1.23" of this application can be installed is in the "/apps/mega-hard/foo-bar/v1.23" directory. The installer mostly just unzips the application into the right directory. The application's global configuration files go in the same directory as the application (e.g. "/apps/mega-hard/foo-bar/v1.23/config"), and the "per user" configuration files go in "/home/<user>/apps/<manufacturer_name>/<application_name>/<application_version>" (e.g. "/home/Brendan/apps/mega-hard/foo-bar/v1.23/config").
I also think that, for the purpose of file permissions, applications should be treated as users. For example, if you install an application made by "mega-hard" then "mega-hard" becomes a special type of user. The file permissions give "mega-hard" read/write access to the "/apps/mega-hard" directory and nothing else. When a user starts an application they give that application temporary additional permissions. For e.g. if "Brendan" starts using mega-hard's "foo-bar" application, then that application can access anything that "mega-hard" has permission to access and anything that "Brendan" has permission to access.
Cheers,
Brendan
For dependencies, I like the idea of providing a "standard base" that is guaranteed to be present and guaranteed to comply with a set of specifications; where all applications have no dependencies that aren't part of this standard base. Dependency checking would be a little like "if(standard_base_version < required_version) { printf("You need to update the standard base before using this application\n"); }".AusZero wrote:The only thing that I don't like about package management in most Linux distributions is dependencies. Where I live, I can't get high-speed Internet yet, and I can't get a modem driver working in Linux. Trying to install an application with 20 dependencies without Internet isn't very easy.
For installing applications, I think the OS should do the installing and the application shouldn't need it's own installer (basically, the OS's standard installer is part of the OS's "standard base"). Applications should go in a specific directory - "/apps/<manufacturer_name>/<application_name>/<application_version>". For e.g. if a company called "mega-hard" creates an application called "foo-bar", then the only place that "version 1.23" of this application can be installed is in the "/apps/mega-hard/foo-bar/v1.23" directory. The installer mostly just unzips the application into the right directory. The application's global configuration files go in the same directory as the application (e.g. "/apps/mega-hard/foo-bar/v1.23/config"), and the "per user" configuration files go in "/home/<user>/apps/<manufacturer_name>/<application_name>/<application_version>" (e.g. "/home/Brendan/apps/mega-hard/foo-bar/v1.23/config").
I also think that, for the purpose of file permissions, applications should be treated as users. For example, if you install an application made by "mega-hard" then "mega-hard" becomes a special type of user. The file permissions give "mega-hard" read/write access to the "/apps/mega-hard" directory and nothing else. When a user starts an application they give that application temporary additional permissions. For e.g. if "Brendan" starts using mega-hard's "foo-bar" application, then that application can access anything that "mega-hard" has permission to access and anything that "Brendan" has permission to access.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re: Application Installation And Management In Operating Systems
I like unzip and run or unzip, compile and run version of program installation. Also i like to be informed about the dependences and needs of a program in 'FILE_ID.DIZ'. To remove the program nothing more should be needed as removing the folder.
50₰
Re: Application Installation And Management In Operating Systems
Thank you for all of the suggestions. I won't be getting to that part of my operating system any time soon, but I was just wondering what people think about application installation and management. When I do get to that part of my operating system, I'll probably use a package manager.