pyneo dot org - history

· visions of pyneo · endusers how to start · developer information ·


A short history of Zad,

...the original name of the project "pyneo".

The history begins with another project named "zet" I did years ago. In the movie 'Pulp Fiction' a guy named Zad (i'm not sure if its written correctly, I'm not a native speaker) was mentioned (owning a chopper). He is the original source of the project name.


First Incarnation

Zad was meant as an intelligent TODO-List which was developed using python and GTK for a desktop environment. The first module was the one grabbing transactions from my bank account and putting those on the TODO-list to confirm. I use aqbanking and took over aqbanking's python bindings because the version at that time had too many issues.

Getting Mobile

The next step was to get everything mobile (I work for a mobile phone company). I got a greenphone where I thought development was open enough to do the things I wanted to do, after lots of bad experiences with Symbian and J2ME.

I dropped GTK and checked QTopia but gave up on it fast (in short: I didn't like the architecture and the closed environment).

At that moment I started the development of a gsm 07.10 muxer that would enable GPRS while doing telephony stuff. The greenphones modem understands basic mux mode only.

A colleague checked evas, the base lib of enlightment but we had lots of trouble because of its unfriendly and revengeful behavior.

I found DirectFB and got a stack up & running where the GUI part was written in C, the content-fetching daemons written in python and the communication made by D-Bus & sqlite3. The DirectFB library is very, very clean, easy to use (I even developed a plugin for greenphones TS) and performed well on the greenphone.

But putting a completly different stack of software to the greenphone was painful. After all QTopia is very closed, the build procedure wasn't documented nor released. But help was visible at the horizon when I got a mail from Sean.

The Neo1973 is available

Switching from the greenphone to Neo1973 took me hours (the same development system for the greenphone took weeks). This was the platform I was looking for! Development speed with factor 140!

Starting with the Neo and its screensize with 4 times as many pixels as the greenphone, the screen update with DirectFB was terrible. I got about 1fps for my scrolling list (this is not directfb's fault but the fault of my lazy programming style - with directfb screen update optimization is up to the developer).

Because I wanted to benefit from any work on a hardware accelerated driver I thought I should to switch to something using X11 because OM would develop a driver for that when a hardware accelerated graphic is available.

Visits to other worlds


Another colleague of mine helped me come up with another idea on how to develop the GUI part of my stack: using webkit, a browser allowing wonderful designs with xhtml&svg and control with javascript. A gateway to reach the phone functionality was everything that had to be developed. My colleague thought of a bridge into java where the jsr implements everything that was needed. I early discovered that this aproach again burned my time. js didn't fit, java was just another vm I didn't want, webkit-gtk wasn't finished and all in all I thought this aproach is too complex.


Because I just wanted to see some state information on the display I decided to use curses for the presentation layer for a short time. python's curses module was easy to use, the vga-display hat lots of lines & columns to display everything I wanted. I gave up this approach early because the letters just were to small to read - especially while driving (it was the time when I tested my gps stuff). Later I discovered how to switch the display to qvga mode but I didn't want to go back.


Because development with my GUI written in C was slower than I wanted, I tried to redo everything in python. I fixed several bugs, enhanced the python-directfb binding for that and played around with it - but the performance of dfb wasn't what I expected. I especially was afraid to never benefit from any driver developed for the hw-accelerated graphic chip in the next version of the neo.


A short visit to sdl did show me that this library wasn't for me.

Back on track


I discovered early that the phone functionality did not work as reliable as I wanted it to. Because I wanted my content fetching functionality seperated from the GUI, I planned to develop typical unix daemons working in the backround. So I started to develop a gsm daemon as one of the daemons needed. I found glib a wonderful library to build unix-conform processes doing concurrent work without threads. As development speed matters I started implementing the daemons in python. If one of the daemons were too slow in the end I could simply reimplement it in C with the benefit that I would know how it must behave. I developed daemons for my content feed (news, bank account transactions, ...), google location lookup, gps via udp from gllin, gsm (only telephony), hotornot (a german dating web site), network (ppp, pan, usb), power and a wrapper that could load all of these as plugins.

Because om didnt provide a muxer, I also implemented the advanced mode for the gsm0710muxd as the greenphone talked 'basic mode' while the neo required 'advanced mode'.

In the german neo1973 channel #neo1973-germany we found the name pyneo for the idea to implement things for the neo in python and so I renamed the daemon-set to "pyneod" as part of project "zad".


Because most of the guys on #neo1973-germany loved the e libraries I thought I should give it another try. I still thought that using some X11-based library would bring me the benefit of hardware acceleration and that my software would have poor performance on the GTA01. It took me only some weeks to put everything together and use edje, evas and edbus and to see that the GTA01 had the power to do the scrolling the way and the speed that I wanted. Conforming to the naming scheme and showing that this would be the architecture I want to go with, I renamed zadje to pyneog.


Mickey Lauer gave the whole pyneo stack and his work to build a flashable image the name "moko underground". This was an alias for pyneo at that moment.

He than started his own stack using most of the technics & architecture, library & language choises used in pyneo.

Open Embedded

Long time the cross build tool for pyneo was OE. This gave alot of headache because of bugs in the build system, the build receipes and the dependencies that OE was dropped. Now its replaced by Debian. The culture of Debian much better fits the culture of


The German word for things is Dinge which is shown on the top of the main screen (see goals). This is why native English speakers call this mockup Dinge.