I was asked about the possibility of concentrating a bunch of CRUD apps into a single technology for ease of maintaining. Since I have limited experience with each technology and it’s environment, I thought I would ask for some feedback
High level summary: Company has a large investment in custom data entry and reporting applications built using older technologies(Foxpro, VB, C++). There should be an extensive, but diminishing skill base. While these technologies should be operable for many years to come, rebuilding some programs to a single platform risks having to rebuild again if the platform does become obsolete. In most cases, remote desktop services may provide a work-around.
Rebuilding in a newer technology (.NET, Ruby) offers the most future proofing, but will require the greatest effort. Any code which can be re-used will still be built to an older paradigm, reducing the benefits of having a single platform. Current technologies promise skill availability well into the future, but may be a little less common at present.
A current trend is to develop applications as server based web applications, or as services that separate logic and storage from the user interface for greater reuse. This model is better supported on the newer technologies.
In order for the following to make sense, I should probably discuss Microsoft’s .NET platform first. MS has moved all active development onto a single platform. It comprises a virtual machine and runtime library shared by several different languages/platforms. Adapting to the single system sometimes required breaking changes in the affected environments. The platform includes a new ‘native’ language, C#, with better integration than C++. .NET currently has the full support of MS and appears to have a great deal of traction in the corporate world, though the windows-exclusive targets put off many outside of it. There are also several frameworks for building server based web applications. Due to the corporate focus, there is full support for data entry applications and reporting, sometimes involving third-party commercial components. The Microsoft technologies are commercial products, but we are already paying for them as part of our MSDN subscription.
Pros: Current, GUI builder, web development
Cons: No existing software, limited existing skills.
Probably the largest code base is currently in Visual FoxPro. Most Company FoxPro applications are reporting applications, however it has full form design capabilities. It is generally believed that Microsoft bought FoxPro for the underlying database technology. While several release were made, (most recently, 2007) it did not make the jump the .NET platform and can probably be considered a dying technology.
Pros: GUI builder, report builder, large existing investment, current skills
Cons: older tech, future hiring.
The Manex web reports were an attempt to expose the manex data in a manner more appropriate to upcoming technologies, while also saving myself time on report design. While mostly successful, FoxPro makes a poor web server and will not scale to heavy use. I believe this could be ameliorated to a large extent by using a standard web server to front several instances.
The next largest code base is Visual Basic. Most of this code comes from a long departed employee and is not well understood today. This is due to a combination of limited update requests, and, in one case, a library which is no longer available. For GUI creation Visual Basic is roughly equivalent to FoxPro, but does not have as well-integrated database support. The programs are targeted to the version of VB current when they were developed. Microsoft has carried VB into the .NET platform, but I understand the paradigm shift would require substantial update to port programs to the .NET platform.
Pros: GUI builder, existing code base
Cons: older tech, future hiring.
Access is a combination form builder and database. The database format is a common back end for small data entry applications. I am not aware of any Company applications built using the front-end. It is somewhat orthogonal to the other choices.
Pros: Existing investment
Cons: Older tech.
C++ comprises several data entry applications. It has a long history and probably a long future, but is better suited to low level programming than to application level programming (forms, interaction, and databases) Microsoft’s C++ is still actively maintained, and, with some twists, was transitioned onto the .NET platform.
Pros: Common, some existing investment, limited GUI tools
Cons: Development effort
Ruby on Rails is a major technology for developing database backed web applications. Ruby is the language, and Rails is a high level framework focused on rapidly building data entry applications. It would be my preferred environment for ease and speed of development. However, while the technology is growing rapidly, my informal impression is that talent demand currently exceeds supply.
Pros: Current tech, ease of development
Cons: Current hiring, primarily web-centric, no re-use.