Hello,
I'm involved in a project where a team of developers is building a very long term infrastructure project to replace an existing 10 year old system. By "very long term" I mean it must be operating, supported and maintained for at least 10 years into the future from the point of release. Taking into account ~2 years of development, this means we should at this point choose a technology/language/framework to last at least 12 years. We have full control over the computers running the project, their operating systems, etc. I was the developer of the to-be-replaced 10 year old system, and I'm helping the team build the new one right.
The application has a very complex user interface. The UI is built dynamically from configuration files at start-up, each UI component has dependencies on logic and other UI components, which it must receive in run-time. UI elements themselves are very complex, imagine custom gauges, graphs, knobs etc.
Two choices have already been made in the project, that I do not judge or try to change:
- It will be a desktop application
- It will be developed in C#
Now we are at a point of choosing the right framework to make our very flexible UI system "easy to develop", i.e. reduce the number of developer bugs by relying on a debugged, already-made framework.
The team examined Microsoft's CAB (Composite UI), which suited its purposes extremely well, however the fact Microsoft discontinued it in 2007 is a huge problem taking into account the long-term aspects of the project (think of a framework bug being discovered in 6 years - who will provide support? - and I know we could fix the code in the CAB itself, but that's something we would like to avoid).
One thing that obviously pops to mind is relying Microsoft's WPF. It seems to be "the future" of UI development, however it frightens me when thinking about it long term. My main concern is that the market will not accept it, that 3 years from now Microsoft will discontinue it, and that 6 years from now I will not be able to receive proper support for it.
However I don't really see an alternative, besides writing our own framework. I don't want disrespect any 3rd party framework developers, but for such a long term project I can only use products/frameworks/etc from very well-established vendor.
I would appreciate thoughts on whether choosing WPF is the right call given the above context (and if not - what is the right "complex UI framework" for such a long term desktop application project using C# ?).
Thanks (and sorry for the long question)