WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: Applications and bundled libraries  (Read 13906 times)

Offline bigpcman

  • Hero Member
  • *****
  • Posts: 719
Re: Applications and bundled libraries
« Reply #15 on: April 12, 2010, 01:29:26 PM »
We come to a point of paradox that some users are reporting TinyCore as using 1G of memory fully loaded with applications they use while Zenwalk or Windows XP can run them in 256M...

Loaded into the RAM or using RAM while mounted? Don't tell me that XP is running applications in RAM!

Seems to me there are many reasons users like to dynamically uninstall applications since this is generally supported in most general purpose OS's (with mixed success). However, from the start tc has been successfully optimized to be a small "nomadic" system that users can count on to bootup in a clean known state.

What I wonder about is can application extensions ever be packaged and installed in a way that enables simple and accurate dynamic removal?
big pc man

Offline sandras

  • Jr. Member
  • **
  • Posts: 53
Re: Applications and bundled libraries
« Reply #16 on: April 12, 2010, 01:55:56 PM »
I thought tcz packages were already one-file-uninstalls, if the deps aren't counted of course. I think appsaudit can delete unused deps as well.

Self-contained apps are a security nightmare, and somewhat bigger. They are also bigger in ram, which starts to suck as a thought when one realizes there's 15 copies of gtk2 in the ram :P

What I find frightening, is that ram prices are 3x of what they were ~year ago. Holy crap, the cheapest 2gb ddr2 stick online (in my country, after a quick search) is now 51e.

I don't get why TC could not be made to support both the tcz of today and future "all in one packages".  What's the fundamental technical roadblock? I love the Tinycore Burger King theme "have it your way".
We already do, there's nothing much to add support for. Just either compile things statically or include the libs, and it's a self-contained extension.

About including lib's to extensions and ram usage. I think, making an extension a self contained package would only take it to include all it's dependencies (lib's binaries and so on) in to it. That means, that when you boot and TC loads extensions, there would be link's made from TC's file system remaining in ram to the needed files (libraries or binaries or anything else) in one or another extension, if there's the same lib/bin/etc in two or more extensions. Basically, this approach would eat more hard drive space and provide a user with that drag'n'drop type of installation. But still, it would require the same amount of ram. Am I right or am I missing something?

One more thing. I wonder what takes more time - the dependency resolution? There would be no more dep's this way so we would save some time on that, but if the links were to overwrite each other that would also add some time. Just my two cents.

Offline tclfan

  • Sr. Member
  • ****
  • Posts: 286
Re: Applications and bundled libraries
« Reply #17 on: April 12, 2010, 02:06:45 PM »
Loaded into the RAM or using RAM while mounted? Don't tell me that XP is running applications in RAM!
No, XP does not run in ram. it is not TinyCore, nor SliTaz nor Austrumi. But arguments against the self-contained application architecture used ram requirement, so here you have: If this measure is used to evaluate against, rather than combination with merits of running in ram, then these run-in-memory systems will have higher memory requirements than traditionally run such as Ubuntu or Windows...
My point was that measure of memory requirement alone is not deciding factor in self-contained applications architecture, but rather the huge advantage of simplicity and keeping system away from rot resulting from installing and uninstalling applications and other pollution and desease.
TinyCore as it is now achieves this goal very well by preserving pristine state on reboot and is very close to expand this modular architecture to include self-contained apps and unloading applications from memory.

Repository of such self-contained apps exists already and growing. It is used by Igelle. Igelle however does not have the TC advantage of running from memory.
TinyCore being flexible and modular can advance to combine the best ideas in its architecture...

Offline curaga

  • Administrator
  • Hero Member
  • *****
  • Posts: 11044
Re: Applications and bundled libraries
« Reply #18 on: April 12, 2010, 02:21:13 PM »
About including lib's to extensions and ram usage. I think, making an extension a self contained package would only take it to include all it's dependencies (lib's binaries and so on) in to it. That means, that when you boot and TC loads extensions, there would be link's made from TC's file system remaining in ram to the needed files (libraries or binaries or anything else) in one or another extension, if there's the same lib/bin/etc in two or more extensions. Basically, this approach would eat more hard drive space and provide a user with that drag'n'drop type of installation. But still, it would require the same amount of ram. Am I right or am I missing something?

With this approach, the versions included in different extensions would very likely differ. Even if the change was insignificant, copies of the lib are loaded to ram when an app uses them.

Dynamic vs static, having a ton of copies of the same lib dynamically makes no sense. It would just introduce app starting overhead. If going to the self-contained road, linking statically everything not in the base would be the better path.

Quote
One more thing. I wonder what takes more time - the dependency resolution? There would be no more dep's this way so we would save some time on that, but if the links were to overwrite each other that would also add some time. Just my two cents.
Dep resolution time is negligible.
The only barriers that can stop you are the ones you create yourself.

Offline bmarkus

  • Administrator
  • Hero Member
  • *****
  • Posts: 7183
    • My Community Forum
Re: Applications and bundled libraries
« Reply #19 on: April 12, 2010, 02:23:35 PM »
There are cons as well. For example if you are updating a common library, you have to rebuild all extensions, while using shared libs only once. Most of the applications with GUI are GTK+ based. There are many small progs where their dependency is larger than itself in regards size. Just installing few small tools will increase storage size and RAM usage when loaded into RAM unnecesarily. Also, using multiple copies of the same library without virtualization may cause other conflicts and system wise problems.

I can imagine applications and environment when this is a must have, but too much price for a typical TC/MC application suite.
Béla
Ham Radio callsign: HA5DI

"Amateur Radio: The First Technology-Based Social Network."

Offline bigpcman

  • Hero Member
  • *****
  • Posts: 719
Re: Applications and bundled libraries
« Reply #20 on: April 12, 2010, 03:08:09 PM »
Although there has been a lot of good discussion on library usage problems in an "all in one" application package system, I still wonder if it's possible to handle dynamic application removal of applications that are things like system services or drivers. The problems I can foresee have to do with how to handle applications that modify things like system configuration files. How are the changes tracked back to the source. (I don't mean simple menu entries) This is one of the problems with the windows registry, it ends up filled with useless entries.

Perhaps there has to be classes of applications some of which can be "all in one" and some that can't.
« Last Edit: April 12, 2010, 03:14:55 PM by bigpcman »
big pc man

Offline tclfan

  • Sr. Member
  • ****
  • Posts: 286
Re: Applications and bundled libraries
« Reply #21 on: April 12, 2010, 03:27:16 PM »
There are cons as well. For example if you are updating a common library, you have to rebuild all extensions,...
I do not think so. Not the way I understand this concept of self-contained apps is, at least not the way it is implemented by VMware ThinApp abd Zenwalk. Self-contained apps are self-contained in their own containers. Different extensions (Apps) are using DLLs with which they are designed. If you update a dll someplace, it does not affect other extensions - would not break them with upgrades, etc. You can run together applications that are normally conflicting or have conflicting dlls. E.g. on Windows where previously you could run (have installed) only one version of Internet Explorer, now you can run several versions and even simultaneously! Not that I need to do it, not being a developer, but it shows the power and flexibility.
Thanks to flexible modular architecture and the way extensions are implemented, TinyCore is already close to this concept...

Offline tclfan

  • Sr. Member
  • ****
  • Posts: 286
Re: Applications and bundled libraries
« Reply #22 on: April 12, 2010, 03:33:32 PM »
Although there has been a lot of good discussion on library usage problems in an "all in one" application package system, I still wonder if it's possible to handle dynamic application removal of applications that are things like system services or drivers. The problems I can foresee have to do with how to handle applications that modify things like system configuration files. How are the changes tracked back to the source. (I don't mean simple menu entries) This is one of the problems with the windows registry, it ends up filled with useless entries.

Perhaps there has to be classes of applications some of which can be "all in one" and some that can't.
The way it is implemented by VMware ThinAPPs and Xenocode is that applications are fully virtualized. Any system changes, such as registry entries are also contained in the application containers. No true such system change occurs.

Offline curaga

  • Administrator
  • Hero Member
  • *****
  • Posts: 11044
Re: Applications and bundled libraries
« Reply #23 on: April 12, 2010, 04:46:07 PM »
If you update a dll someplace, it does not affect other extensions - would not break them with upgrades, etc. You can run together applications that are normally conflicting or have conflicting dlls.

This is a big downside as well. What if there's a security issue in libfoo? Or a bug in the file handling of libxyz?

You'd have to update every single one of the extensions with that lib.
The only barriers that can stop you are the ones you create yourself.

Offline tclfan

  • Sr. Member
  • ****
  • Posts: 286
Re: Applications and bundled libraries
« Reply #24 on: April 12, 2010, 05:29:20 PM »
In home or experimental environment - yes.
In a non-production environment, where changes can cause impact on other applications can be done without much regression testing. In environment which demands stability, such as managed environment extensive regression testing must be performed before changes like this can be implemented in production. That is why ThinApps (Self-contained apps) are making big news in corporate environment, where maintenance of desktop systems is managed. Upgrading apps will no longer be such a big project, as to test whether this would not cause conflict or impact on other applications.