Iguleder's Blog

Open source stuff n' stuff

Penguin Spirit

leave a comment »

Some time ago, I read about a KDE 3.x fork named “Trinity”. Some IT magazines and news sites called it “zombified” and said it has no future. I strongly disagree with those claims.

First, Trinity is a very active project coordinated by Timothy Pearson, the KDE 3.x coordinator of previous Kubuntu releases. This guy is a real expert; he’s the boss behind a well-polished KDE 3.x distribution. He knows the internals of KDE 3.x. He has the skills to to work with large code repositories, large package repositories and definitely has what it takes to make Trinity a great open source project. So far he did a very good job; Trinity 3.5.12 is indeed a great desktop environment that is, undoubtly, a significant improvement over KDE 3.5.10. Trinity moves on and improves over the the wonderful work done by the KDE e.V.

Also, KDE 3.5.10 is dead; it simply won’t compile with recent distributions and toolchains. It heavily relies on legacy components that no longer ship with today’s distributions, as lots of progress in the fields of hardware abstraction and graphics has been made since the early days of the KDE 3.x backend. That’s not the case with Trinity; it will build just fine with recent distributions. It has its own wrapper for the legacy Qt3, which Perason intends to use, eventually, to translate Qt4 calls into deprecated Qt3 calls in order to bridge between Trinity and the more modern world of KDE 4.x. That’s a great ensurance plan that prevents Trinity from lagging behind in the long-term, as other transitions from legacy technologies (like HAL) to more modern ones (such as libudev and KMS) can be performed in a similar fashion.

Additionally, many distributions show interest in Trinity; Slackware, Ubuntu and Debian are only the first distributions that have their own Trinity repositories. Package builders of RPM-based distributions such as Mandriva already attempt to package Trinity. With the interest of major desktop distributions comes fast-paced upstream development, integration and support. Once Trinity becomes more popular, it’s just a matter of time before it expands and desktop distributions behind it appear all over and flourish.

To conclude, I truly believe Trinity is a great project that has a long future full of great, exciting development ahead of it. I wish it good luck and hope it’s here to stay for years to come.


Written by iguleder

October 27, 2010 at 16:16

Posted in Open source stuff

Tagged with ,

Black Gold

leave a comment »

As a regular follower of Motho ke motho ka botho, I feel compelled to write about my own experience when switching to a text-based environment.

It’s not so easy to make the switch. It’s hard to adjust to a new kind of user interface, but once you go black, you never go back: once you feel comfortable with console applications, you become more efficient and no longer need friendly, graphical applications; Your ten fingers are faster than one hand.

The easiest way to start making the switch is by replacing one graphical application that you find heavy with a text-based alternative, that’s something both me and K. Mandla agree about. The first console application I ever tried was WeeChat – I remember I first heard about it in the Puppy Linux IRC channel when a group of veteran users agreed it’s the best IRC client there is. Immediately, I got curious and decided to give it a go – I downloaded a PET package.

I found WeeChat to be too complex for me, as the first console application of an IRC newbie. I found it hard to remember all the different configuration options and the peculiar ways of doing things, like “/nick” instead of clicking my nickname with the mouse pointer.

However, I got to like it and it even inspired me to create a Puppy SFS extension with a bunch of console applications, which included WeeChat, ELinks, Vifm, Midnight Commander, MOC, Transmission, GNU Screen and other goodies. That was nothing but an experiment: I wanted to know how useful these applications are as when used as a working environment. I installed my extension and booted Puppy with the famous “pfix=nox”.

At first, I kept taking down GNU Screen sessions with the applications running inside them. However, it became my primary working environment, once I got used to the key bindings. I was fascinated by the low usage of resources, the responsiveness of applications and the efficiency of such environment: I could write and read interesting articles for hours. The black background was indeed one of the things I was most pleased about.

As time passed by, I became more and more familiar with the internals of a Linux distribution. I read guides that explain how to construct a simple live distribution that just boots to a shell prompt and many resources about embedded Linux systems. When I felt ready, I assembled my first embedded-like system – an x86 distribution that behaves like an embedded system. Then, I added SSH capability and other things. I also learned how to compile a kernel and became familiar with Busybox. This inspired me to create my own distribution, an entire text-based operating system.

However, at the time, I had no knowledge about constructing an entire distribution from scratch, so I read Linux From Scratch and built several systems based on it. As I became more and more familiar with it, I dropped some packages and found ways to customize it to suit my needs: I replaced some packages with Busybox and changed the order in which packages are built.

The first builds of Calf GNU/Linux were stupid and ran live. I could run all the console applications I used, but then I realized how stupid I was. Some packages had extra dependencies I missed and others were nothing but bloat. For example, Transmission requires some extra dependencies to compile properly and ELinks wanted Expat.

My experience with console applications made me a software minimalist and changed my perspective about software in general and Linux distributions in particular. For instance, a distribution that uses many graphical Python applications is not efficient, while applications like DeaDBeeF are real gems.

Real life events kept me away from working on Calf GNU/Linux, but sometimes I found the time to work on it. Gradually, it became smarter and now it’s my primary working environment: I use it for writing, programming and music. I browser the internet, chat in IRC and download stuff in a console-based environment.

It just makes me more efficient, makes my netbook’s battery last longer and doesn’t kill my eyes. The computer’s fan is completely silent and sound quality is superb. Also, the text-based interface does wonders with my 1024×600 display – no wasted pixels in the framebuffer console.

Also, applications such as dvtm can further enhance the usefulness of a text-based operating system on small screens. By using tiling window managers (well, dvtm can be considered to be a window manager) you save the extra pixels used for window borders and panels, because you no longer need them.

Moreover, some console applications form something better when used together. For instance, with both GNU Screen and dvtm inside each window, you get workspaces and windows with session detaching capability. If you also use MOC, you get an invisible, superb music player that plays music in the background while you do some serious work.

Anyway, this is just my subjective view of the subject and console applications are a matter of taste. Some find them precious, while others are scared of them. I just happen to like them and hope they’re here to stay.

Written by iguleder

October 22, 2010 at 10:15

Posted in Open source stuff, Projects

Tagged with , ,

A Date with Squashfs and Aufs

leave a comment »

Yesterday I uploaded a testing build of Calf GNU/Linux with the version number “001″ (0.0.1). It uses Squashfs (with linking, like Tiny Core) and Aufs (for a “save file”, like Puppy).

Since yesterday, I’m recompiling the whole thing. I’m trying to find the right packages and right order to build them. For instance, I can compile Coreutils without GMP as a dependency – Coreutils goes first and GMP joins the distro only when it’s really needed (GCC needs it).

I was wondering … what is the most efficient way to get a writeable /, a persistent home directory and a package management system that allows packages to be installed on-the-fly and removed cleanly? The answer is already included in Calf 001.

Until 001, Calf used a tmpfs moutned on / and an image file mounted on the home directory. However, this approach had some limitations. First, it wasn’t very elegant – the home directory had “lost+found”. Second, packages could not contain any files that go to the home directory, for obvious reasons – they’re linked and not copied, so the save file doesn’t contain them. If you want to create a quick backup of your home directory, you’re in trouble. The init scripts were more complicated and did not allow the flexibility of Puppy.

However, 001 has a new init script – the whole thing in one script, it’s more efficient. It uses a file named “distrorc”, which resides in /etc. That file contains 4 variables: distroName, distroFilePrefix, distroReleaseDate and distroArch.

The first variable, distroName, is the user-friendly distribution name. The second one is the prefix for some of its files (for example, if Puppy 5.1.1 uses pup-511.sfs, this variable is the equivalent of the “pup” prefix). The third variable is the release date and the fourth one is the architecture, i486 in this case.

The init process starts when /init creates a tmpfs with the size tag of 80% of the available RAM. Then, it copies everything there and calls the real init, which runs /etc/init.d/rcS. The purpose of /init is the creation of the tmpfs file system, which is writeable and allows the “live” nature of the distro.

Then, the init script scans all partitions (it detects them through /sys) for a file named $distroFilePrefix-$distroVersion.sfs, both on the partition root and sub-directories. If it finds it, the Squashfs image is linked. Then, it does the same with all files that end with “.sfs” in a directory named $distroFilePrefix-extensions that is placed next to the Squashfs file,  if there is such.

After the extension linking, the init script checks whether a file named ${distroFilePrefix}save.img exists next to the Squashfs file; that’s the save file. It is mounted and used as a layer above the /root from the Squashfs file system found earlier.

At the moment the initramfs is really big, it’s 16 MB, because it has all kernel modules. Now I’m almost done rebuilding the whole Calf GNU/Linux and this time things that are highly likely to be needed on most machines are part of the kernel. For instance, USB support is something all computers have – if it’s part of the kernel image, the USB support code doesn’t have to be loaded as a kernel module, that saves precious boot time.

Additionally, 002 will have both Aufs and Squashfs compiled in and not as modules, to speed it up even further. The Squashfs loading will be faster and boot times should be shorter.

To conclude, Aufs and Squashfs are two interesting pieces of software that are vital for most mini-distributions and live distributions. Let’s hope Calf GNU/Linux will eventually make a good use of both.

Written by iguleder

October 7, 2010 at 12:23

Kernel Hacking Journal: Chapter 2

leave a comment »

After a big success with the former LTS kernel, 2.6.27.x, I decided to make a tweaked 2.6.32.x kernel for Puppy Squeeze, the unofficial, community-built Puppy that has a Debian heart.

My first idea was patching the kernel (at the moment, I work on to change its version number to 2.6.32. This way, the kernel is still compatible with all stuff for 2.6.32 (after all, the only difference between different 2.6.32.x releases is extra fixes backported from later kernels) but still allows modules compiled for an earlier 2.6.32.x to be used with it. This way, Puppy Squeeze 009 can use and later releases won’t break compatibility with its drivers, as their more stable 2.6.32.x kernels use the same paths.

My second idea was patching the kernel with BFS, to enhance performance and benefit low-power machines or older, single-core processors. I also added HyperThreading support, which is omitted from all official Puppy kernels for some reason; I think it’s a mistake done by Barry which persisted until 5.1.1 because of the use of oldconfig. In other words, each new Puppy kernel is based on the decisions and choice of drivers done with its predecessor, so the choice of omitting HyperThreading survived. That’s a kill for netbooks, since most of them come with a single-core Atom processor that supports it.

My third idea was backporting stuff from the latest stable kernel, that’s something I’m still working on. At first, I tried to backport all laptop extras but the kernel failed to compile, probably due to the big changes in the WMI code. I also tried to backport the latest i915 driver but the compilation failed, I guess it’s DRM and KMS now.

To conclude, I find this really fun and challenging. I’d like to take a step back and be the Puppy Squeeze kernel guy at least for the next release, as I’m busy these days and I’m almost empty of new ideas. Need someone with the passion and the right attitude to lead this thing on.

I’m off to compile another masked as 2.6.32, see you around.

Written by iguleder

October 1, 2010 at 09:29

Posted in Open source stuff, Projects

Tagged with , ,

Adventures with Seamonkey

leave a comment »

I think it’s time to face it: Seamonkey is the ideal browser for Puppy Linux and pretty much any small distro. It’s stable as Firefox but feels slightly faster and comes with pretty much anything needed for typical internet usage.

However, Seamonkey’s biggest weaknesses are the slower development and the compatibility; it uses Gecko and XUL just like Firefox and it’s compatible with most Firefox 3.x addons. Another weak spot of Seamonkey is its low popularity.

Despite of these, Seamonkey runs exceptionally well with Puppy Squeeze, the revived dpup, a community-built Puppy built from Debian Squeeze binaries. It already has its own artwork and most applications, but the Debian package quality already shows its benefits: Seamonkey is faster than any other browser and its XUL-rendered interface isn’t quirky as in other distros or Mozilla applications.

At the moment Puppy Squeeze has Seamonkey 2.0.7 but three people reported the mail client doesn’t work and two reported the browser does not show the traditional Puppy welcome page.

I have a theory that Seamonkey needs to be packaged with a default profile and that’s why it doesn’t open the welcome page; it opens the 2.0.7 introduction and “what’s new” page instead, as it does on any fresh Seamonkey installation or upgrade.

Regarding the mail client, Seamonkey needs to be recompiled. At the moment I’m trying to get Puppy Squeeze installed on my netbook so I can work on it on-the-go, I hate being tied to one desktop computer.

I also want to package the statically-compiled binary distributions of both Firefox and Seamonkey to see whether they provide any performance boost. Even if they do, the Seamonkey package won’t be ideal, because the HTML editor is not really needed on Puppy; Geany can do HTML too. The extra size the static linking can be dangerous and every bit counts.

Let’s hope we get Seamonkey to work well on Puppy Squeeze, as a full browser is one of the best features of Puppy Squeeze, in my eyes. Most users will be more than happy with a snappy browser that is fully compatible with and similar to Firefox.

Written by iguleder

September 17, 2010 at 13:13

Calf GNU/Linux 0.2.5

leave a comment »

Lots of progress in the Calf area!

Now calf knows how to locate an image file named “calfhome.img” and uses it for the user’s home directory. Also, it locates calf.sfs and loads it.

Also, it uses the Puppy partition mounting approach: /dev/sda5 is mounted on /mnt/sda5 and the partition with calf.sfs is accessible through /mnt/home. The /opt directory is persistent, too, for all sorts of custom-added files; /opt/bin and /opt/lib are useable.

At the moment it’s fully usable, I can connect to the internet through my netbook’s wireless interface and everything works well. There’s only one issue, the save file has an ext2 file system on it, which means you see “lost+found” on the home directory. I want to move the home directory to a sub-directory of the save file, that serves two purposes:

  1. Other stuff can be added to the save file, not just the home directory. That means more creativity can be shown in this area.
  2. It makes things more elegant.

For some reason the kernel doesn’t complain about too many loop devices, that’s weird: earlier kernels required the”max_loop” parameter or a patch that removes the limitation completely.

Performance is great with the BFS scheduler and RAM usage is very modest, about 130 MB with IRC, high-bitrate music, ELinks and around 100 SFS extensions loaded. It takes some time to boot, because the extensions need to be linked, but a “live” session with no extensions starts in around 5 seconds, even on my netbook, with the slow hard drive.

An interesting experiment I did this week was to load the pup-510.sfs from Puppy 5.1 and start X. On my first attempt, X started but the mouse was frozen at the center, but I was able to open the JWM menu with the keyboard and run some stuff. When I terminated X in a violent way, it stopped functioning because Calf doesn’t use Puppy’s init scripts, which determine the mouse type. xorgwizard didn’t work, so there’s nothing I can do.

Additionally, I started working on a special kit based on Pdebthing that builds the “calf.sfs” from Ubuntu packages. That’s just a fun experiment.

Written by iguleder

September 10, 2010 at 09:51

Posted in Open source stuff, Projects

Tagged with , , ,

Asus Eee PC 1001PX Review

leave a comment »

I abandoned my blog for some times, but now I’m back. I own the 1001PX for a month and it’s my main computer, I use it for writing, programming, internet and multimedia.

It’s a cheap netbook that offers pretty much the same hardware as other netbooks of the current generation. They are sold with a 6-cell battery and a cool pattern, that’s pretty much why I like it: good battery life, great design and the usual areas where Asus netbooks shine.

The main advantages of the 1001PX are:

  1. Comfort – it comes with an exceptionally comfortable keyboard that is bigger than the 1005PE’s and a better touchpad, without that braille-like design. That makes it ideal for word processing, instant messaging and writing.
  2. Screen – the 1001PX is a matte screen that is better for reading, writing and internet usage, but the shiny screen of the 1005PE is better for watching movies. I think the matte screen is way better. The matte screen’s contrast sucks compared to other screens, but under direct light it’s still readable.
  3. Design – the 1001PX has a carbon-fiber pattern and the area around the screen is not shiny, it has some weird texture that fingerprints don’t stick to. However, the 1005PE is shiny; some may find it prettier, but I favor the more solid and more professional looks of the 1001PX.
  4. Build quality – the netbook is very solid and therefore, it is suitable as a portable computer for travel.
  5. Bluetooth and a card reader, some netbooks don’t have them.

However, the 1001PX has disadvantages:

  1. Battery life – 9 hours instead of the 14 hours of the 1005 PE. 9 hours is a lot already, so I don’t think it’s a big problem. Also, Asus checks battery life in lab conditions; largely, all netbooks of the current generation have a battery life of 5-7 hours.
  2. Bluetooth – some 1001 models don’t have Bluetooth, that’s a serious disadvantage. Mine has it.
  3. Wireless – some 1001 models do not support the new 802.11n, I think mine does, but it doesn’t really matter for 99% of users.
  4. USB – the 1001PX has two USB ports, one on each side, while the 1005PE has 3. If you don’t need 3 ports, it’s great: it saves some battery life.
  5. No carrying bag – the 1001PX comes without the Eee bag. I bought a cheap Miracle ’10 laptop sleeve for 30 NIS, which is around $7.

To sum it up, the 1001PX is nothing fancy. It is a good looking and well-built netbook that features the same hardware of all its competitors at a cheaper price. If you’re short in money like me and you need a good netbook with good battery life, this is your best bet.

Written by iguleder

September 10, 2010 at 09:27

Posted in Uncategorized

Tagged with


Get every new post delivered to your Inbox.