Friday, May 29, 2009

Visual FoxPro is still here, still very relevant

I am writing this article because I read a very interesting article about Visual FoxPro on SD Times web site! The title of the article is ‘Where have you gone, Visual FoxPro?’ Even though the Article did some justice to the FoxPro Product, and its great contributions and the many product milestones, I still thought that the basic question posed by the article had to be answered. This is important to many of us who still use Visual FoxPro to architect and deliver great MIS Products because as far as we are concerned, Visual FoxPro is still very much here!

So what then can we say is Visual FoxPro’s place in an enterprise application architecture today? Is it relevant when compared to other alternative offerings from Microsoft – the company that makes Visual FoxPro! This article attempts to document our experiences as a company that sells many custom-developed application software products made with virtually all of Microsoft’s Database Offerings (Ms-SQL Server, Ms Access and Of course Ms Visual FoxPro)!

I first started using FoxPro in 1992! Then it was version 1.01 running on a PCMOS 4.1 Network. I was fresh out of school with some little programming knowledge on GW-Basic, MF Cobol and dBASE III! The Mortgage Bank I joined and worked for ran its Banking Software (Swift Banking System) written with Clipper 5 on a FoxPro Database. At the time, most people wrote their programs on dBASE IV and then had those programs compiled with FoxPro or with Clipper! I fell in love with FoxPro immediately because it was so easy to use and had a much more polished interface than dBASE IV and what is more, I was also very impressed that a package as huge as Banking was running on a FoxPro box and was very stable in indeed!

Then in 1993, I left the banking sector and did not again use FoxPro until 2001 when I taught ‘Building solutions with Visual FoxPro 6.0’ to Students at MicroLink College (then the school had the option to use either Microsoft Access or Visual FoxPro to demonstrate Database Concepts)! It was during this time that I started exploring the idea of developing a powerful, versatile, modern and affordable MIS Package for Colleges and Universities since the college at that time had no computerized data storage and retrieval system – that package would eventually today become CampusManager™ University Advantage – still in commercial distribution and in use among several University Colleges in Ethiopia today (and running as a pure Fox solution).

The requirement was for a system that is feature –rich, user friendly, provided reasonable storage capacities for the sort of volumes of data that could be generated by a school or university college and was yet affordable by schools in the third-world. The combined features of an affordable and feature-rich system was necessary because most of the clients that buy our system can be considered as small or medium-scale enterprises that will ‘balk’ at the cost involved in licensing Ms SQL Server or Oracle Databases. Also, the programs would be running in an environment where these organizations may not necessary afford thousands of dollars to retain trained SQL Server or Oracle DBA’s so the system had to be light, easy to run and still provide all the storage capacity and power of an enterprise solution built to run on SQL Server or Oracle!

This reality for us was underscored by the fact that most of the Visual Basic programs we wrote that were designed to run with MS SQL Server; have always suffered from customer (small to medium scale organizations) complaints - Managers do not simply find that purchasing expensive Ms SQL Server database licenses is somewhat prohibitive! At the same time, Microsoft Access (Jet Database Engine)/MSDE did not present an attractive alternative because of the 2GB File Size limit that would sooner rather than later force a mid-sized company to look for alternative storage. Add to this the fact that in a typical school, we would have more than 10 users working at a time and Access’s well documented behavior when 10 (ten) or more users are accessing the database concurrently! To summarize, our ‘business parameters’ for selecting an application development tool for our CampusManager™ Offering was (and still is) as follows:

* System must be feature rich
* System must provide reasonable storage capacity for at least 5 years for a school or college with about 2000 student population
* System must be capable of supporting at least 20 concurrent users without signs of stress (imagine that at least 15 homeroom teachers at a time have to record marks and enter grading information during peak period such as exam time concurrently along with other routine activities by staff and faculty). Our first site, a premium private school boasted 60 homeroom teachers (Grades 1 to 12 each with five sections A to E)
* System has to be capable of routine performance on just about any environment (the first school we sold to had a P3 Server with Two Processors) since in our market, most clients may just have a PCs and may never even have heard of Servers
* System must be light and fast and be able to be easily, deployed, configured and implemented in the end-users environment
* Total cost of ownership for the system must be kept to a minimum. For example, can users easily administer the database (most of our clients may have a teacher or two with a background in simple applications and so would not possess the type of skills required to manage a typical SQL Server Database). FoxPro in contrast is easy and fun to learn!
* System must be affordable. If our clients can pay not only for our system but also license the database engine for online database maintenance, it is great for them and for us!

So for us it is against this backdrop that we realized that we had a copy of Visual FoxPro bundled with our Visual Studio 6.0 suite of enterprise development tools. After carefully assessing our options, we came to the conclusion that Visual FoxPro 6.0 was the best tool in the Visual Studio suite (we had been concentrating on Visual Basic and Visual C++ against Jet/SQL Server for our other applications) to build a fast, data-centric MIS system for schools, colleges and universities because it just about offered the right combination of power, speed, storage capacity and licensing cost for the market we wanted to target with our system. For us, this meant that we would not have to ‘fight’ with our clients about expensive database licensing nor would we have to explain why our clients need to move to a more expensive Database Server after just 2-3 years. At the same time, should the need arise, we can easily upgrade the system to run on a bigger database engine (such as SQL server or the Advantage Database Server that now provides full Visual FoxPro Compatibility) without expensive code rewrites!

Since our software was released in June of 2006, we have upgraded to using Visual FoxPro 9.0 and have found that our product has elicited quite a lot of interest because of the attractive cost of the package and licensing terms for a VFP Database (optional). But whether our clients accept to buy VFP Database licenses or not (in which case they can use the VFP runtime), our product is still a money-spinner for Microsoft since our clients will still need to license Microsoft Windows to run the application; plus, they always license the application with a promise to upgrade to Ms SQL after a number of years.

A couple of months after SD Times posed the question “Where have you gone Visual FoxPro?”; we want to supply an emphatic answer – “Visual FoxPro is still here today! Visual FoxPro is still very relevant in the enterprise!” Here in Africa, we are using Visual FoxPro to build modern, powerful, object-oriented and affordable applications for fast growing companies!

And yes! Even though Microsoft says they shall make Visual FoxPro no longer, the product can only get better as many members in the community work to make great add-ons and improvements in the product, adding badly needed functionality. With some of the cool tools we have found on CodePlex such as VFPX and most especially ActiveVFP, we can say that we are in no great hurry to re-write our application on the .NET framework anytime soon

No comments: