Allow Users to upload plugins

Hey guys,

first post so be gentle XD

I've got a few projects that i'm working on and after getting feedback of users i've come to the conclusion that i need a way to allow users to add plugins.

for example if i write a script for the arduino to display my name for a specified amount of time when a button is pressed, i would like the user to be able to upload their name and specified amount of time to display.

if this is possible then i'd like to push it further so that i can write a script that set how everything works on the board and then have a number of plugins the user code chose and upload.

there would be a desktop application that would have a list of available plugins and the user would then pick one, set some basic parameters such as text etc and then press upload and the arduino would then run that plugin.

the reason for the plugins rather than uploading whole scripts that work differently is that i'm worried by designing it to upload whole scripts the user could unplug it half way through an upload and it wouldn't work, whereas my thought for plugins hopefully would mean that if the main code has a default 'No Plugin Detected' display sub that it would be display if the user had an error during upload.

i may well have rambled a lot there so sorry if i've gone overboard.
the project forms part of my computer science degree and it is possible i'm over thinking this so if you have any thoughts, let me know
thanks
mike

This should get you started...

If you only need to alter configuration/data then store it in EEPROM and provide a means to change it e.g. based on commands received over the serial port. This might be sufficient if you only want to configure/activate a set of plugins which are fixed and hard-coded in your sketch.

If you need to provide arbitrary behaviour then Bitlash scripts would be a good way to do it, but you would somewhere to store the bitlash scripts.

As PeterH suggests, I'd go with having an option to configure what you need over the Serial port.