View Single Post
Old 12-20-2011, 04:07 PM   #21
yifanlu
Kindle Dissector
yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.yifanlu ought to be getting tired of karma fortunes by now.
 
Posts: 662
Karma: 475607
Join Date: Jul 2010
Device: Amazon Kindle 3
Quote:
Originally Posted by ixtab View Post
Wow yifanlu,

thanks for all the amazing stuff you're producing!

The jailbreak came just in time (1 day before I got my KT), and since then, I have been poking around on the device. I actually did install your launcher yesterday but didn't get around to code anything for it yet. I'll take a look at the installer now and test-drive a bit.

As to my own intentions, besides playing around I was looking a bit closer at two things:
- WPA-PAE encryption. I use this, and by now I do have a working shell script with wpa_cli etc. (and an ugly hack in the pillow/JS UI to invoke it) for my own setup.
- Localization. (JS UI for now, Java parts later).

My idea is that it should be (is) relatively simple to modify the UI, and its functionality, using JS itself. Strings and functions -- essentially, arbitrary parts of the JS subsystem -- can be modified at will by simple script-src'ing other JS scripts from the HTML. But there must be a better, less intrusive way (i.e. ideally without modifying the root fs at all).

BTW, I think the launcher is a great opportunity to make the patch/hack/package/whatever-management that you were discussing in other threads both extremely easy and user-friendly (graphical UI anyone?)

I'm still trying to understand how the overall architecture is plugged together, so some insight on the following questions is appreciated. So far, my understanding is that it's a conglomerate of native Linux apps, the Java (booklets etc.) part providing much of the UI, but also pillow / JavaScript parts. All of these seem to communicate via dbus and/or lirc.

Is this correct? Can someone provide more insight into the architecture? (like, what is lirc in the first place?...)

Which method are you guys using to quickly check the results of some changes? The most reliable method I found so far is to "killall cvm" or "killall pillowd", which seems to reload everything except Linux itself. Do you know of more fine-grained/faster ways (e.g. when putting new files in the classpath, or changing a JS file). Are there any ways of debugging?

Two final things: if anyone is interested in the localization and/or WPA-EAP part, let me know.

And: how do you guys consolidate all the information from the forums? I know forums are a great way to communicate and share, but the info tends to get scattered around. Sticky threads are a workaround, but wouldn't a Wiki make sense for aggregating the infos in a structured way(or does one exist already)?
That's a lot of questions, I'll try to answer them. The Kindle "OS" or whatever you call it starts out when the Kernel calls upstart (not init.d anymore). Upstart loads the low level linux components. Lipc is this thing amazon wrote to allow all components to talk to one another. Everything in the Kindle is moduler. In theory, I can write a python implementation of the media player and set a lipc event handler and property reader and music will play through python. Pillows are the HTML5/JS component of the system. It's weird how they decided to make some parts of the OS HTML. My guess is that either 1) they wanted the whole thing to be HTML and halfway through realized it wouldn't work and fell back to Java, but didn't have time to rewrite everything or 2) they wanted the whole thing is Java but didn't have time to rewrite everything and then quickly whipped up some HTML stuff they were doing for the browser anyways. Either way, pillows are registered into the appdb (a sqlite3 database) which also contains a listing of book handlers (java reader plugins) and download handlers (unused). Overall, it's VERY messy. I use upstart to restart the framework "restart framework" from shell would do it. Using upstart is the best way because it allows you to mock a reboot of the system without actually rebooting. You can debug native apps with the gdb that is built in. You can debug Java using JDB remote by enabling debugging and using usbnetwork. I agree that we need a wiki or something, but I'm afraid that it'll be just me writing everything and I don't have the time for that.
yifanlu is offline   Reply With Quote