Hi,
I know the title is really unclear, so give me a moment :) I'm a pro-coder doing cool stuff at work (console games), but I've got an idea for an app (for a couple of years now ;)) that I'd like to create at home.
With 15 years of experience, I don't want to fall in to the trap of wanting to do everything myself - I'd like to borrow or steal as much as I can for all the trivial stuff, so I can just focus on what I'd like to do. But I DO want an app that works like people expect it to, with all bells and whistles people are used to.
Which means I need to create an app with (in my case) something like a workspace-interface, and undo-redo system, persistence (serialization / loading&saving), and preferably a VisualStudio kind of dockable interface so users can decide what they want it to look like. (On the other hand, it's not an editor - think more like Mac's Quartz Composer !)
I know all of these things and how to write them from scratch, I just don't want to bother - I want to spend my time on writing my own cool thingie, not writing an undo-system or a docking system or whatever.
So I'd like to piece together my application, stealing what I can steal, focusing on what I want to create.
So far (not writing any code) I came to something like this :
- use a very lightweight MVVM lib, probably just my own simple implementation since everything more is overkill.
- Use AvalonDock for docking (http://avalondock.codeplex.com/ )
- find an undo/redo action-based framework ( http://blogs.msdn.com/b/kirillosenkov/archive/2009/06/29/new-codeplex-project-a-simple-undo-redo-framework.aspx for example )
- figure out a 'standard' serialization in C# / WPF or find a library ?
...
The main question in the end is : if you're working on a hobby-project that needs to be semi-professional, but you just want to focus on the fun stuff... What is your approach ?
Can you recommend a framework, can you tell me how you did this before ?
How did you avoid spending time on stuff that's in the end completely unrelated to what you'd actually want to do ?