justchat: Check out RevFE in my signature. It is a lightweight, completely modular and skinnable frontend in c++ (which requires no extra components besides microsoft's runtimes) While I wish you luck, I did try this in c# first and I quickly ran out of CPU as c# runs much slower than native c++. Some lessons I have learned that I think it would be wise for you to integrate:
Thread the plugins. Whatever you do, do NOT load them using the assembly loader unless it is in a thread. If you do plugins in the main gui thread it will quickly slow down, and speed of UI is key.
Don't pass around data: Keep actual structures where they are created. For instance for the media player, I pass a list of songs, and when you click on a song I pass the index on the list of which one you clicked. The other way to do this would be to pass a Playlist class to the media player display which in c# would lead to lots of memory usage, and in c++ requires passing pointers around which is never a good idea.
Database: sqlite3 is wonderful, but use pre-prepared transactions. They are MUCH faster than sequential database executions. On the order of 10-20 times faster which in c# makes all the difference in the world.
Audio: FMOD isnt bad, but please do not use an external program like VLC. If users can unzip and USE your frontend rather than having to install stuff it would greatly increase the usability. Some frontends have completely missed this idea. *cough*RR*cough*
Documentation: I've actually been falling on my face on this one, but keep GOOD documentation for both
skins and plugins. Write it as you put in features rather than saving it for later.
GPL: If you want to be open source, go GPL or go home. (I know most MS/c# people hate gpl) this ensures you will never pull a RR and will get you more support imo.
Just my two cents, I'll watch this and post some more as I think of things.
Bookmarks