[Fascinate Android Development] GizmoDroid:
For the first part of this thread, whenever I mentioned scripts, I was talking about shell scripts.

Shell scripts are just a text file (usually with a .sh extension) that has terminal commands in it. They contain the same lines that you would type into adb or into a terminal program on the phone. They are a lot like a .bat file on Windows. You run them by typing "sh /directoryofscript/nameofscript.sh" from adb or an on phone terminal emulator (or you can launch them with script shorcut app).

For instance, you could make a script called killapps.sh set up to kill certain apps that are open on your phone all with just one line, instead of manually typing them all in. All that you would need to do is make a text file, and type in the following(borrowed from imoseyon's scripts):

#!/system/bin/sh

pkill -f pandora
pkill -f youtube
pkill -f deskclock
pkill -f comcast
pkill -f cpedia
pkill -f thescore
pkill -f transdroid
pkill -f mangawatchman
pkill -f coveroid
pkill -f groupon

So that's a basic shell script.

Just to make things more confusing, I mentioned another kind of script in my last post. When you flash a ZIP file in CWM, there is a file inside of it that controls what happens, called either update-script or updater-script.

update-script is a text file written in the Amend scripting language (it's human readable, like the shell script). Here is an example of a simple one that copies all of the /system files inside of the zip file to the /system partition on your phone:

show_progress 0.5 0
copy_dir PACKAGE:system SYSTEM:
show_progress 0.5 10

The amend language was used by Android until 1.6; at that point they switched to the Edify scripting language.

Edify is a little more powerful and robust. They changed the name of the file to updater-script and it requires another file, update-binary, that is the executable binary file that the script uses to do it's commands. Here is the above script, translated to edify:

show_progress(0.500000, 0);
run_program("/sbin/mount", "/dev/block/stl9", "/system");
package_extract_dir("system", "/system");
show_progress(0.500000, 10);
unmount("/system");

As you can see, it's slightly more picky about syntax, but that results in a more powerful language that can do things more reliably (for good reason, since we are doing low-level flashing).

As of 3.0, koush ripped amend support out of clockwork recovery. Most of the rest of the world had already moved to edify, but in Samsung Galaxy land, we still were using amend in all of our flashes because of some issues with the way Samsung laid out the partitions and devices.

This is why we have stuck with Clockwork recovery 2.5 for so long, because everyone is still using Amend. Really though, its time to switch to the 3.0 base, port the voodoo options, cut ties with amend, and get the SGS line's funky mounting/partitions/layout fully compatible with Clockwork. Someone just has to do the work, because Koush is not that interested in it any more. But that's the way the world works. I know I don't want to go back and support that Blackberry OS I put together that one time...

And moving on into previously unseen features for a better nandroid: backup and restore of the kernel is already half-way implemented in the code. It wouldn't take much more work to get it done. Then there is the EFS partition... which seems to be avoided by most people but is an important aspect of the phone that no one currently is backing up.