The most CHDK users are photographers and not programmers. Maybe they know something BASIC from old times (e.g. Atari, Commedore). That helps to write a small script like time lapse. Therefore we need uBasic.
I disagree with this a bit. If you write the kind of simple script these users would write in ubasic in lua, it's almost the same. Really the only difference for a trivial script is you have to remember to use () on function calls. ubasic is different enough from other dialects of BASIC that they still need to learn some specifics.
I suspect the popularity of ubasic is historical, it shows up in more of the wiki examples etc.
E.g waterwingz two intervalometers scripts:
do
s = get_tick_count
shoot
sleep a*1000 - (get_tick_count - s)
until ( 0 )
vs
repeat
start = get_tick_count()
shoot()
sleep(a*1000 - (get_tick_count() - start))
until ( false )
Is the first one really simpler / easier for a non-programmer to understand ?
Of course, you can write much more complicated scripts in lua, but you don't have to.
That said, I'm in no hurry to remove ubasic. It would be worth considering if we were doing a ground up re-write of the scripting stuff, but I don't see that any time soon
One thing that would be useful would be to make a more standardized script interface, so we don't have to have the if lua/if ubasic stuff scattered around.