Born out of the idea of replacing the internal command 'MESSAGE[..]'. However, with the possibility to parse strings, e.g. to dynamically display values of registers. However, the scope quickly became larger and more features were needed and or desired.
yes. check license.
Over the last few years I have unfortunately seen a lot of software that was really 'bad'. If someone without much background knowledge (beginner not professional) builds his "own" solution with the karel source code it tends to be 'worse implemented' this results in a proliferation of small karel programs with different API's and no documentation. Unfortunately I have seen this many times.
I want to make it as easy as possible for users. So they can concentrate on their main task.