tech

Puppy projects


Page updated August 25, 2011
My compliments to the chef. *

An Aussie guy (who wants to remain anonymous) recently gave me a rather large donation, to, using his words, "spend it any way you want". I appreciate the help, but I would like to spread some of it around, hence this page.

We have many developers who do it just for the love of it. Many people of course have day jobs, and develop and test Puppy in the evenings and weekends, as an enjoyable hobby. Such people are generally not cash-strapped, but there are many Puppy enthusiasts who are unemployed, very low-income, or students. To this latter category in particular I would like to offer a little encouragement. I am definitely not offering commercial programming rates, just a token reward, that will be announced on my blog and the Puppy Forum. So, a "Puppy Linux Developer Award" will be a recognition of contribution, and something for the CV.

The "token" cash reward will be, I envisage, anything from $50 (US$ or AU$) up to about $500, depending on the project and the time involved. The reward is only given on successful completion (but in some cases this may be staged), and only to the first person to complete, and conditional on me accepting an offer to participate, and conditional on me having the right to withdraw the offer at any time and for any reason. The amount of the cash reward will be entirely at my own discretion. The allowed time duration will also be at my discretion.

If you want to undertake one of these projects, please send me an email, to STARTbkaulerATgmailDOTcomEND

The projects listed on this page are things that are on-going issues, problems that we have had for sometime but have not resolved. If anyone can think of something that should be added to this list, let me know, or if anything extra should be added below let me know that too. Here they are...

Note, any links to source code at my repository at bkhome.org/sources requires us#er#na#me "pu#pp#y" and pa#ss#wo#rd "li#nu#x".

Ogle and Ogle-GUI

Wary Puppy has the Ogle DVD player, and feedback is that it works extremely well. The GUI does have at least one problem though -- the Stop button does not work. You have to click the 'close' box on the window to stop it. This would be a good project for someone knowledgeable in C (and GTK) coding. All the other buttons need checking also, and general usability.

The Ogle commandline DVD player and the Ogle-GUI are dead projects. Our Puppy developer guys have done a little bit of work, ttuuxx has improved the icons, and 01micko has got it to compile against libdvdread 4.1.3+ (the version now used in our puppies). The following links have all the information needed to get going on this project:

My original idea for this project: http://bkhome.org/blog/?viewDetailed=01996
The latest Ogle patched source (as at Aug 25 2011): http://bkhome.org/sources/alphabetical/o/ogle-0.9.2-patched_debian5.2_libdvdread4.1.3bk.tar.bz2 (with patches from Debian and 01micko)
The latest Ogle-GUI patched source (as at Aug 25, 2011): http://bkhome.org/sources/alphabetical/o/ogle_gui-0.9.2-patched4.2.tar.gz (with patch from Debian).

Libdvdread/libdvdnav was also a dead project, but some guys at Debian are now developing it:
http://git.debian-maintainers.org/?p=daniel/libdvdread.git
http://git.debian-maintainers.org/?p=daniel/libdvdnav.git

ROX-Filer focus

ROX-Filer is the file manager used in most puppies. It is the centre-piece of our user-interface, managing the desktop icons as well. It is a mature project, and not dead, but let us just say "not much is happening" on the developer side of things.

The main problem we have have had is icon "focus", which occurred for GTK versions greater than 2.16.x. It was partly fixed by the founder of ROX-Filer, Thomas Leonard: http://repo.or.cz/w/rox-filer.git/commit/c2232d5075342347a8ff814ced5ce8b9e1cf64b9

However, this focus problem still exists, quoting from my blog:

You can right-click and from the menu if you select "Open As Text" or "Properties" then great, the focus is released from the icon. However, if you select "Send To" (patched by me to "Open With") then focus is not released -- the icon remains highlighted. This is a bug.

...I reported this to the ROX-Filer bug-manager last year (Dec. 2010) (http://sourceforge.net/tracker/?func=detail&aid=3147977&group_id=7023&atid=107023).

Note that I patched the ROX-Filer source to make it suitable for Puppy:
Edit ROX-Filer/src/menu.c:
change "Send To..." string to "Open With...
(at least. There are is at least one other place where this string should be changed)

Edit ROX-Filer/src/main.c, commented out this line:
if (euid == 0 || show_user)    show_user_message = g_strdup_printf(_("Running as user '%s'"), user_name(euid));
This is how to compile (doesn't install):
# ./ROX-Filer/AppRun
Here are some of my blog posts about ROX-Filer:
http://bkhome.org/blog/?viewDetailed=02053
http://bkhome.org/blog/?viewDetailed=01938
http://bkhome.org/blog/?viewDetailed=01570
http://bkhome.org/blog/?viewDetailed=01515
http://bkhome.org/blog/?viewDetailed=01485
http://bkhome.org/blog/?viewDetailed=01389

Iguleder started a Forum thread to further develop ROX-Filer:
http://murga-linux.com/puppy/viewtopic.php?t=65438
...you will notice in that thread that one of the developers criticized Iguleder, which probably discouraged him. It was unnecessary, Iguleder made a very good start. The rules of etiquete when contributing should be that you avoid caustic posts. Enough said. Iguleder's patches are useful to anyone wanting to take on this project, plus the thread identifies some other areas that need work. If you want to discuss this further on the Forum, I suggest start clean, a new thread.

ROX-Filer is written in C and uses the GTK widgets.

JWM buglets

JWM is the window manager used in most puppies. It also includes a tray and menu. I originally chose JWM due to it's very small size and excellent speed, and the developer Joe was very responsive with fixing bugs. But, gradually Joe's involvement slowed down -- now, I am told Joe doesn't even have a Linux box setup, so development has totally stopped. There is a backlog of bug reports.

JWM is still good, mostly the bugs are annoyances. For example, I would like it if windows could be told not to go under the tray -- I am forever having to drag a dialog box up above the tray so that I can click the "OK" button!

I have corresponded with Joe by email, but my last posted Mar 2, 2011, has not been responded to. Someone else also confirmed that Joe is not responding to emails. This was my post:

Joe,
"playdayz" (Larry), our coordinator of Lucid Puppy, which is Puppy
Linux built with Ubuntu packages, sent me a message requesting if I
could pass it on to you:

"In luci-252 which is a development release towards Lucid Puppy 5.2.1,
we are using gnome-mplayer 1.0.0. In Openbox, all of the full-screen
controls work correctly, the icon in the lower right corner, F on the
keyboard, and Full Screen from the menu. However in both jwm493 and
jwm-500, the full screen controls do not work correctly. Usually any
of the full screen controls just move the same size gnome-mplayer
window to the upper left corner of the screen. In lucid 5.1.1
gnome-mplayer 0.9.6 worked correctly with jwm, so we used that instead
of 0.9.9.2 which worked correctly with Openbox but not with jwm. This
time we would like to use the latest gnome-mplayer since it is a 1.0
release. We can put gnome-mplayer 0.9.6 in the Puppy Package Manager
for those who want to use it with jwm, but maybe there is some simple
fix that will occur to Joe. Thank you."

Something else that I would like to see in JWM is an improvement on "jwm -restart". When the Puppy Package Manager installs a package, the 'fixmenus' script is run to update the menu, then "jwm -restart" is run to refresh the menu. However, restarting JWM is a sledgehammer solution, as there is an enormous screen flicker as everything gets erased then redrawn. What we really want is something like "jwm -refreshmenu" that only updates the menu.

Anyone interested in taking on JWM? I am told that the code is very well written, C and only uses Xlib libraries.

JWM Project home page: http://joewing.net/programs/jwm/

Firewall

Puppy Linux has a firewall with GUI setup, that I chose (back in the Puppy 2 days) because it is very easy to use by someone who knows nothing about firewalls, yet has expert mode for more advanced users. It is also small, unlike some other GUI firewall solutions provided for Linux.

However, it is another dead project. It is scripts only (Bash) and we have a PET here:
http://distro.ibiblio.org/quirky/pet_packages-common/linux_firewall-2.0rc9-puppy2.pet

The original website for this project no longer exists. They used to have considerable on-line docs.

There are two main things that I would like to see happen with this project:

1. Improve the GUI
It is currently a text-mode GUI using the 'dialog' application. We would like to modernize it, using 'gtkdialog' (gtkdialog is an example of a dead project that was revived by thunor, one of our Puppy enthusiasts, and is now going ahead in leaps and bounds).

2. IPV6
I read a comment on the forum that the firewall currently only works with IPV4. We need to do whatever is required to get it to work with IPV6.



Bright ideas

The "Bright ideas" section is ideas for applications that it would be great to have in Puppy, projects that need to be started from scratch (or will need a lot of learning) and requiring long-term commitment. ...which doesn't mean I will commit to long-term cash rewards! These ideas came from various people after I had created this page, so I thought that I would tack them on. They really are very interesting, if I had the time....

Partition Manager

Yes, there is Gparted, but it is written using the GTKmm OO wrapper, which is a set of libraries that sit on top of the regular GTK libraries. Despite the GTKmm home page describing their libraries as a "thin layer" on top of GTK, in fact their libraries about double the size of the regular libraries, which considerably bulks-out a Puppy build. We do reduce this by linking the GTKmm libraries statically with the 'gparted' binary executable, but we still end up with a compressed PET package of 1MB, most of that being due to GTKmm.

The Gparted-equivalent application itself could actually be quite small, as it could just be a GUI wrapper that calls commandline utilities that are already in Puppy, such as 'parted' and the e2fsprogs utilities. It could be written either in BaCon, or in Ash/Bash with gtkdialog-based GUI. We have a very large number of Puppy enthusiasts who are capable with Ash/Bash/gtkdialog and would be willing to help-out, and a growing band of BaCon coders -- I recommend BaCon rather than C as it's learning curve is quick and HUG enables GTK GUIs to be easily created.

Based on prior experience with Bash/gtkdialog projects, I would think that our "Puppy Parted" (Puparted?) compressed PET package would only be about 50KB.

This idea has come from Forum member ttuuxxx.

Presentation Manager

We all know about the Microsoft presentation application, and OpenOffice has one also, as well as in SoftMaker Office suite. OpenOffice is enormous, which is why it never makes it into a "builtin" Puppy live-CD build (although I did once, with a very cut-down OpenOffice, that I named "Chubby Puppy"). SoftMaker Office is a commercial product, with word processor, spreadsheet and presentation components, and the "2008" version is free but requires online registration and a license-ket has to be emailed to the prospective user. The package is about 30MB, but I have actually cut it down to a 10MB PET.

Most Puppy builds have Gnumeric spreadsheet and Abiword word processor, which are both quite small. The former is an excellent product, the latter has on-going issues. But what our puppies lack is a presentation application.

Yes, you can create a series of images and one of our image viewer apps can flick though them, but a proper presentation app has a whole lot more, such as fade-effects when transitioning between slides, hyperlinks to jump to any slide, animations.

I don't think that we even have to target compatibility with the format of the other major presentation apps, as least not yet. We can define our own "Pupresentation" (PuppyPoint?) standard, and others can add import/export for our format!

We do actually have tools already in most puppies that could form the basis of a superb presentation system. I am thinking of InkscapeLite (InkLite), which is a SVG vector editor. The history of this is interesting -- it started life as Sodipodi, written in C and using GTK. It then got forked to the Inkscape project, and reached version 0.36pre0, then the developers rewrote it in C++ -- and it jumped in size about 5 times! I rescued version 0.36 and named it InkLite, and it has been in all of our official Puppy builds since the early days.

The thing is, SVG is similar to Adobe Flash, it supports animation, hyperlinks, sound, except that I think that InkLite would need to be extended to add animation and sound tags.

A "Pupresentation" (PuppyPoint) application could be written in C/GTK, BaCon/HUG/GTK or Bash/gtkdialog (perhaps BaCon would be the best choice to get more sophisticated GUI, than gtkdialog) which would display SVG pages, and it would call InkLite to create/edit those pages.

Very ambitious project perhaps, but if you are skilled with C and know or willing to learn GTK coding, this would be a very exciting project. You would have to be committed for the long haul though.

This idea has come from Forum member Raffy.

InkLite

Then there is InkLite itself. It is a great little app. You can create vector images and if required export them as PNG. In fact, I often use InkLite to create small PNG images based on two overlaid images, as InkLite can import images -- for example, I recently created a mime-type icon for SoftMaker by importing a blank document image, the Softmaker logo, and overlaid them, then exported the result.

There is lots of room for improving InkLite, for example I mentioned above adding tags for sound and animation, with perhaps a little viewer to preview the animations (we already have apps in Puppy that can do that, such as 'rsvg-view' which is in the librsvg package).

SVG can be embedded into web pages. Some support for doing that would be good. Yes, SeaMonkey, Firefox and Opera will display SVG, MS Internet Explorer requires a plugin from Adobe.

You can find the InkLite source in my source repository (version 0.36.3):
http://bkhome.org/sources/alphabetical/i/

Some blog posts on InkscapeLite:
http://bkhome.org/blog/?viewDetailed=02434
http://bkhome.org/blog/?viewDetailed=01238

Note that InkscapeLite has optional dependence on libgnomeprint and libgnomeprintui, that are deprecated. These libraries could be included in a Puppy build for better printing support, or better yet upgrade the source to use whatever printing libraries are now recommended for GTK apps.

Database creator/manager

This is something else that we don't have builtin to Puppy. There is a Firefox/SeaMonkey addon that uses Sqlite, which is not too big and could be included in Puppy builds, but it is not really a tool for Mr and Mrs Normal Person. Years ago we put an application called Quisp into Puppy, which was a very good concept, a database system with web server, so it could readily be used locally or over a network. However, I didn't get much joy when sending suggestions to the developer, and the project is effectively dead.

But something similar, a server that can serve database-based web pages, not necessarily based on Sqlite as apparently that has issues in a shared network system. Yes, I know there are some products out there, but they have some significant disadvantage such as requiring the Qt library, or are written in Pascal or something -- and end up being enormous. We want small size!

We also want something that is highly GUI-fied and easy for those who don't understand esoteric concepts such as SQL queries. Mr and Mrs Normal Person need a simple tool for creating and managing a database, and preferably one that can easily be deployed over a network/Internet.



(c) copyright 2011 Barry Kauler http://puppylinux.com/
No part of this page is to be reproduced anywhere else. I have found that there is a problem where parts of my web pages are being inserted at other sites, then not updated, whereas I am updating my pages regularly. This is not a desirable situation, so please just link to my pages.
* Quote from Puppy Forum.