What Kind of Application Packaging?

I wanna write such this article since I know the concept of dynamic library in Linux as a contrary of static library in Windows. Why I wanna? Because this difference made Linux disliked by most users in the world. Hey, I want you to use Linux as me too. I don’t have interest to explain technical-style what is library concept, but I only need people understand. Surely, this article contains purely my opinion. Concepts of new installation system in Linux.

Windows Application Installation

  1. You take one EXE.
  2. Double click it.
  3. Installed on system.
  4. Although happen redundancy (duplicating install) some parts of another applications.
  5. But you don’t care enough because your HDD is in 100++ GB or even TB.
  6. Freedom along with users to install.

Linux Application Installation

  1. Too many ways.
  2. Too many options.
  3. Installed on system.
  4. No redundancy but your head could become sick.
  5. Too many another things should be installed along even just wanna install Marble Globe Application.

Problem Example

In Linux, we can make an example. Simply take Marble. Marble is an application focused for education (good aim, Dude) and it is a part of KDE Education Package where it was focused on Geographical teaching. Now, we can make a scenario:

  1. I wanna install Marble.
  2. I select it from Synaptic and apply.
  3. Wow, it looks like many another applications following Marble to be installed. Time felt so long for install (read: download).
  4. Marble has installed successfully.

Advantage: if you install another application from KDE Education Package such as Kgeography or Kalzium or Kturtle, you don’t need to repeat what anything together with Marble has downloaded. As short I know, this is named dynamic linked library style.

Disadvantage: usually users don’t need another. User often just need 1. Okay if user has MB/s connection at home plus Synaptic plus enough fast server. But how if the user belongs to poor country where is no fast connection? So user should download one by one Marble and another applications along it (Linux advance usually call them dependencies)? User should go to one page, then follow instruction “this program needs program C” then follow again “program C needs program D” then follow again “program D needs program E” and next until infinite? No. It is unsmart installation system.

Comparison (for clearing):

  • In Windows, imagine, imagine if you want IDM application, you will also install 100 another applications (dependencies) have to be installed in one time. But, you enough download 1 EXE contains 101 things.
  • In Linux, imagine, imagine if you want Marble application, you will also install only 50 another applications (dependencies) have to be installed in one time. But, you should download them 51 things separately. They are not packaged in one compact installer.
  • I ask you: which is easier? Which is simpler?

Problem: What I typed in disadvantage paragraph is the origin installation system of Linux. Users often love Windows ways. Although it will eats many spaces, okay. Please let user gets all in one packet. It is compact. It will ease user.

Solution?

Maybe Windows style of installation is better. Remember, user should go to a web to download Marble along all dependencies (too many programs to be downloaded) this way: download one program, next “this program needs program A”, next “this program needs program B”, next “this program needs program C”, next until crazy. Look at simplicity of windows:

  1. Install IDM? Accept EULA.
  2. Bla? Next.
  3. Next.
  4. Next.
  5. Finish.
  6. You can use IDM directly.

Enough with one single download. You should download the single installer only. Then the next-next-next system only happen after the program download finished. So, there is no headache. It is should no too many next words in the web, just package them only in single installer, and let the installer verboses in our machine. Don’t let user becomes sick on downloading what he doesn’t know (majority of users don’t know programming).

So, how if the Linux application installation system changed to Windows-like? Or, how if there is a new distro apply this installation system absolutely? Surely complete with a repository contains packaged applications? So you just download a file only from repo to install an application that before you should download too many different items? It is simple for user, Dude. I feel many users from Windows will agree with me 🙂

Solution number 2?

I know when I said this to an advance man in Indonesia, he told that such Linux installation system have been standardized. I think somebody else will give me same reasoning at future. I feel Linux experts don’t want to change this unsmart installation system to one simply and absolutely simplify users. They refuse to change. So I type this for goaling my idea 🙂

How if we keep the origin system with adding this new system? How if there is a new distro provides you old installation system (you will find too many dependencies to be downloaded) and the new one (enough with one installer). You can choose between the old if you want and the new one if you prefer with 🙂

Solution number 3?

Hah? There is solution yet? Oh, alhamdulillah. All praises to Allah. I life with Linux users for some times. I learn from them that solution is always exist. Now hear.

How if we reject my idea but add ‘Give a Friend‘ feature to Synaptic? So, what you installed yesterday in your Ubuntu, you can give the installer (the DEB packages) in one folder to you friend? The system is simply creates one folder in your USB Flash Disk and copy what you program + all dependencies needed to the folder. So your friend just do sudo dpkg -i *.deb. At least, he doesn’t need to download anything. It is smart enough or stupid? You can give a value 🙂

Sure, this solution generates some problems again.

  1. The Ubuntu version must be same → okay.
  2. How if he absolutely doesn’t know Terminal? → go to solution number 4.
  3. How if my Synaptic didn’t save yesterday downloaded program? → avoiding better than curing. Set this at Preferences > Files TAB > check at first radio button.
  4. So on.

Solution number 4?

You should not force anyone to learn Terminal. Will you force me to learn abacus if there is a calculator in my table? I am a terminal user too but please don’t do that to anyone just join. So, we can modify the Synaptic:

How if we reject but inject that system at Synaptic? So when you “Give a Friend”, Synaptic will create one single installer for you? It is simpler than change whole Linux sistem, right? Or this is silly? You can also give a value 🙂

We can imagine this system like this:

  1. Open Synaptic.
  2. Check what program you want to give to your friend. Say: Testdisk.
  3. Click on Give a Friend button beside Apply button.
  4. Choose your folder to save.
  5. Wait for seconds. Synaptic is making single installer. Successfully created at /home/you.
  6. You can copy it to your friend’s machine. And if you want, you can give it to 10.000 friends.
  7. Install it. Simple.

My solution number 3 and 4 are orders for you developers who wanna keep your security awareness or something called ideology. It is your right, Dude 🙂 Nobody forces you.

For who?

I hope somebody feels unsatisfied with Canonical or Red Hat or any major Linux makers, will take this ideas for creating new Linux distro. A “waiting for so long” distro which is dreamed by many users. Dream which is never be attended by most Linux developers.

I believe!

I believe that someday such this distro will be created. Portability, simplicity of installation system, are important! More important than security. Users need your program, not your security awareness, nor your dependencies. They always think simply. They always do 1 thinking at 1 time. Your users are single tasking humans, not multitasking machines. So I imagine someday I will take only one installer from the net and install it in 1000 Linux mahines without any downloading again 🙂

Who will realize this idea someday? I don’t know. Temporaryly, I have satisfied with nowaday Linux system. Ahamdulillah.

Seed…

You know, there is a hope. Apparently, some users be creative by doing something like I imagine about. Look at Indonesia Ubuntu Forum. Look at portablelinuxapps.com. But we are waiting for a new distro 🙂 If Ubuntu have this system, I will be glad. If Fedora, I also be glad. If Blankon, whoa, glad also 🙂 Another, still glad. Let the seed’s growing. And you can see these links:

  1. Offline Installer for Ubuntu 12.04.
  2. Cara Singkat Membuat Offline Installer Ubuntu 12.04.

If you don’t understand Indonesian, you can use Google Translate. You know, what the seed I mean? It is Keryx. An application for downloading app completely with dependencies. If you have not know yet, simply think Synaptic in Windows for downloading applications only and save them to a folder. Aha, that is Keryx. This application runs in Windows (innovative) for helping Linux users in slow connection country. So, in internet cafe (in Indonesia, internet cafes serve majority users who don’t have internet connection; and most internet cafes in Indonesia use Windows) we can run Keryx and download all applications via Keryx, save to flash disk, and install them at home. This app simplify installation in Linux. We can make .run file contains all apps downloaded by Keryx. And this single .run file can act like .exe in Windows. Wowowo, future! I have not use Keryx until now but I feel it is bright way for future Linux installation system.

I admit that Keryx has not meet all my imagination criterias. But this app seems will inspire many new developers to build new comfortable installation system. It is okay. And hope is still flying 🙂 Thanks for reading!

12 thoughts on “What Kind of Application Packaging?

  1. Please no. I don’t think you understand the whole idea behind distributions.

    The distros are made to prevent users from having to download each component and application of various sites or directly from the author. Of course you can do it if you want, but it is always better to use the distro package that is optimized to work as it should be in your system and you do not have to compile in case the author only distribute source code. And if you use a source based distro like Gentoo (for greater customization) you still have the advantage of having a huge number of programs stored in a single place and ready for you to install. Distros also mean a big security gain, because community maintains and checks what is being uploaded to repositories. Have you ever heard of someone inadvertently installing malware for her GNU/Linux or BSD machine? Has a package installed you crappy toolbars on your web browser? I bet the answers are both ‘no’.

    Distros can also be classified according to their release model. If you choose traditional point releases you can get incredible stability that is impossible to achieve with the way you install stuff in Windows or Mac (take for example Debian, which is one of the most stable and bug-free distros, with over 40000 packages ready at your fingerprints) . But there is also the possibility of choosing a rolling release distro like Arch, which let you get the very latest updates for all your system at any time issuing a single command!, and without the need to reinstall or migrate from one release to another!

    You say having to so many things when you just want a program is a disadvantage. Well, that’s impossible to avoid, because they are dependencies needed to run the program you want. No matter if they are dynamic or static, you must download them. Even if you installed that same software for Windows you would have to download all those libraries; but the GNU/Linux approach is much better, since you download only once and then different programs make use of the same libraries. In fact, dynamic libraries save you bandwidth, and storage capacity, and are less likely to fail, unlike the WInbugs case where you have hundreds of different and usually outdated versions of the same library bundled within the installers.

    Conclusion: There are many reasons why free and open source operating systems are the way they are. The main driving force behind them is a strong (and somewhat fragmented) community of mostly hackers (in the good sense) and power users who make distros the way they think is best; not a company which only seeks profit and doesn’t give a heck about real convenience for users. It is no coincidence that all major GNU/Linux distros use package management instead of installations “á la Windows”. As it is no coincidence that newer platforms such as the mobile ones prefer app stores, which are basically bad rip-offs of FOSS distributions that have existed since the early 90’s. ( See https://en.wikipedia.org/wiki/Application_Store ). Still, application stores suck because they only manage application software (that’s what the name stands for), and there is much more software underneath that can’t be managed using them: kernel, drivers, daemons, libraries, shell, etc. Although companies like Apple have found an extra motivation for app stores: total control over consumers. https://www.eff.org/deeplinks/2012/05/apples-crystal-prison-and-future-open-platforms

      • You’re welcome, and thanks for this article. I think it got me over-inspired, because now that I’m reading my previous comment I’m realising that some parts are messed.

    • Interesting.
      On one side, I’m agree with Ritchie’s opinion. Linux way of managing software is far better than Windows. Especially, when we talk about efficiency, security, flexibilty of developing & maintanance, patch/bugfixes, etc.
      But on the other side, I’m also understand Malsasa’s point of view. It is very difficult to managing software in Linux when we have no internet connection. APT, yum, and other Linux package managers are pretty useless without internet, and solving dependency hell manually is no fun.
      As the solution, I think it will be great if Linux keep its way of managing software, while providing another realible way to automatically solve package dependencies in offline computers.

      • I’m not very used to those package managers, just a bit of apt and my impression when I read the –help output is that it is kind of limited; but with Arch’s pacman offline work is exactly the same as online.

        I can’t imagine why apt, yum and the likes are unable to manage dependencies without internet connection. That sounds stupid.

      • Then you have try it.
        Disable your internet connection, and try to find a way of installing software. You’ll know what I mean 🙂

      • @nn

        Man, you should know what the great you have said:

        “…Disable your internet connection, and try to find a way of installing software. You’ll know what I mean …”

        Crazy! I never think as smart as this to express what I mean in Linux installation system. I admit that I have difficulty in language expression. You are smart in this point! Thank you. And all of you can use my friend, nif, innovation named apt-id. You can read it here apt-id : asisten apt-get untuk komputer offline. It is great, it helped many users (as short I know, they said that to me). And maybe nn, you are him, I don’t know 😀

        And also, I admit the advanced thing, very advanced thing, in what apt does. Same with pacman, same with yum, zypper, rpm, dpkg, gdebi, and whatever I don’t know yet. Linux is turbo jet aeroplane, or stealth bomber, but if we take it down for walk in town, we get many trouble. We should adapt the great power of stealth bomber if we want it walk in the town 🙂 My friend Baru Nyoba Linux Baru in facebook group Ayo Belajar Linux has said that. So I say, the stealth bomber should be modified hardly for offline usage. That is maybe the best way to image what my essay was talking about 😀

    • Okay. Now I have time to reply completely your comment. It is amazing to know my writing has commented by someone like you. Someone who write GNU/Linux instead of ‘Linux’ only is different. Usually a hacker (in good meaning, like your statement) or at least someone with hacker’s ethic. I hope you are not Ritchie Blackmore.

      Preambule…

      Something to say, that one of critical point made me wrote this essay is: I am Windows user in Indonesia for 7 years. I know the condition of users in Indonesia well. So, whatever reality on FOSS community, whatever hackers have made for Linux software installation system, those all made me unsatisfied. I live at Indonesia and I can life 7 years without internet connection. But with Linux? I can’t. I should draw more bandwidth and more effort. Different with your statement: “dynamic libraries save you bandwidth”. Why? The Linux application installation system. Dynamic system will save Indonesian user’s bandwidth if their Linux always connected directly to the internet. But the reality was different. Man, as an Indonesian, I am facing reality now 🙂

      Windows and Linux

      Yes actually in Windows I must download one by one dependencies, same as Linux. But Windows has a smarter way (now I call it smartest –for Indonesian). They package all dependencies into one single installer. Most Indonesian (you know, 200.000.000++ people at total) doesn’t have internet. Read it: their computers are not connected to internet. It is easier to install anything if the installer is offline and just 1. Just ask your friend or buy a magazine with bonus DVD, or download from internet via internet cafe. Simple. Keep it simple. I don’t see anything about technical packaging system, I see only the simplicity for user. Yes I use Linux now and daily, but I must admit Windows simplicity on this point. And this is great point, great point Linux didn’t have until now. It is the greatest feature missing (I think) for Indonesian users.

      If Wanna Take More Users…

      I know there are many reasons in case of open source community always on their way. But if they wanna get more users, wanna give advantages more to user who never touched before, they should care with users who don’t have internet. See: apt-offline, Keryx, apt-web, apt-cache, Synaptic script, and how many more? So much! But is there meets my Indonesian criterias? No one. They still depend on a big problem: dependency. Only one system nearest of mine: Portablelinuxapps. When I know this a few days ago, I feel an euphoria, I use directly my server at 2freehosting.com to mirror the apps and now you can use it at http://otodidak.freeserver.me. One bad point is, the community and the hackers don’t see Portablelinuxapps greatest solution. Look at the softwares version available. I hope this system can be the official system on Ubuntu, at least number 3 option after apt and dpkg.

      About Dynamic System…

      I feel it is important and need to be cleared. Now, HDD is in terabyte. We can’t say “we must avoid redundancy” again. User doesn’t care about it. User cares only “I sould get one installer and install it on my system”. They don’t care about redundancy. And I agree with them. In other hand, think if apt has an enhanced plugin (somewhat), when user install a single package that has redundant dependencies, apt automatically remove it from installation session and only install the needed one. So, we download an installer (say Kompozer) sized 300 MB (contains 3 dependencies). In our system, we already have 2. If we force it, there are 2 redundant packages, right? Nah, apt sould be smart to avoid the 2 redundant package to be installed. Only 1 left to install. Yes, the point is let the user download only one big package but they can install that without headache, without too many bla-bla-bla, and without something end-user doesn’t need to do. In Indonesia, although users don’t have direct connection, they have one great option: internet cafe. They usually download Windows programs from there, save into flash disk, and install them at home. Simple and always done perfectly. And if an installer come into one user, they can give it to another users. It is freedom for me, freedom to share software installer (ahem, Free Software should guarant this too!). Linux users can not do this. Nah, you can understand my point at this 🙂 But truly, I don’t want you to understand my Indonesian thinking. I worry if my point may make you have headache.

      About me…

      And also, I am a netralist. I don’t think FOSS is the complete best way. I also admit that proprietary system is not perfect. But I take what I can take if I need, as long as that is legal. I use software as I need, don’t care if that is free as in GPL or not. I think there are so many people over there have similiar thought (except, in Indonesia, almost all users do software piracy, I never hide it).

      As my Indonesian friend said below, you should release all your internet connection to install an app in Linux (if you wanna feel what we feel :D). That is the Indonesian condition. As is.

      Closing…
      Thank you so much for long thinking. Thank you for your valuable time, for you enthusiasm. I am sorry for my bad English. I am sorry if my ideas hurt you. Thank you from Indonesia!

  2. Pingback: Pemasaran Sistem Operasi Linux | Ade Malsasa Akbar

  3. Pingback: Kumpulan Esai Kritik Saya | RESTAVA

  4. Pingback: Sistem Service Pack di Linux, Sebuah Gagasan Baru | RESTAVA

Leave a comment