I began using KTechlab to teach myself electronics. It is my goal eventually to be able to design my own devices like audio amplifiers. It would be nice to have components like vacuum tubes (diodes, triodes, tetrodes, ...), loudspeakers, microphones et cetera.
Although I am not much of a programmer I looked at the source code anyway. It looks like each component is in its own .cpp and .h files, and these need to be compiled into the program. It would be nice if components could be specified and added more dynamically, perhaps in a text or XML format. Just dreaming a bit, there could even be a simple graphical component editor of sorts.
Thank you and good luck.