he FoxPro team at Microsoft is readying a new version for release at the end of 2004. This may come as a surprise to some; it's not uncommon to hear the uninformed say, "FoxPro? Is that still around?" But within the FoxPro community, there is a lot of excitement surrounding this next release. Performance enhancements will include a faster local data engine, support for more data types, greater ANSI compliance in its SQL implementation, an extensively enhanced report writer, and a number of smaller productivity and functionality enhancements.
Today, applications are still being written and deployed in Visual FoxPro, but there has been a marked decline in further adoption and deployment among U.S. companies. This is due primarily to the fact that Microsoft has marginalized the product in comparison with its flagship .NET languages, such as C# and VB.NET. This lack of marketing support is a hot-button issue among the VFP community.
While it may be true that managed code and strict compilers can result in "safer," less buggy, and more durable code, a single FoxPro developer can write a full-blown desktop or Web application in a comparatively short amount of time. The effort required to deal with complexity is left primarily to implementing application and business logic, not trying to understand a massive framework or wrestle with data binding.
So why should you care about a product that receives only the occasional nod from its maker? Because, Visual FoxPro is still here and it is still relevant. It serves a need that is underserved by any other single product in its category. Further, because of its ability to run on cheaper, older hardware, run legacy code, and still do everything a modern programming language is expected to do, it will remain the product of choice for renegade workgroups, small resource-constrained offices, independent software developers, and many governments and government-run agencies.
A Strong Ancestry
|Everything you need to write, deploy, and maintain n-tier, high-availability, desktop, Internet, COM and Web services development is in the box or available from a third-party vendor.|
To understand the staying power of FoxPro, it helps to understand its lineage. In the mid 80s Jet Propulsion Laboratory (JPL), like most government agencies, was provided with micro and personal computers. These stand-alone machines let engineers crunch large sets of data without jockeying for time on the mainframe. Spreadsheets and stat packages were often used, but were cumbersome and could easily result in data loss.
A database was a logical solution for dealing with these large amounts of data, so Wayne Ratliff wrote a program with its own database and added set of commands that could be executed on that data. "Vulcan" had an interactive dot prompt that allowed engineers to use a short set of commands to work through their data as physical data sets using phrases that were easy to remember. These simple English-like commands could be combined together into programs that could be executed from DOS. These programs became applicationsand a new kind of application developer was born, the bandit, renegade, ad-hoc developer. The program eventually became Ashton-Tate's dBase.
"dBASE was different from programs such as BASIC, C, FORTRAN, and COBOL in that a lot of the dirty work had already been done. The data manipulation is done by dBASE instead of by the user, so the user can concentrate on what he is doing, rather than having to mess with the dirty details of opening, reading, and closing files, and managing space allocation." Wayne Ratliff
Within a few years of its release, a number of dBase clones hit the market. FoxBase made its reputation by being significantly faster and more robust than the original. In addition, the Fox team was agile and more responsive to the user community. Through regular patching, timely support via CompuServe and significant releases, it stayed close to its roots while innovating faster by adding productivity tools in direct response to requests from users.
When FoxPro was released, it provided DOS programmers with a windowing interface. The Fox team had already provided cross platform compilers that allowed a developer to deploy in Unix or DOS, and over subsequent releases Windows and the Mac. Next came FoxPro2, which brought "Rushmore" (FoxPro's famous data performance enhancements), as well as in-line SQL commands and graphical screen and report writers.
Visual FoxPro, (now owned by Microsoft) brought OOP, a fully relational data store, and remote data access. So by 1995, FoxPro developers were natively using SQL, doing OOP, and writing n-tier, cross platform applicationsand all the while running legacy code written back in dBase II.
For FoxPro developers, Fox has simply been a safe application development path; your investment in the technology was not compromised by innovations made by the vendor. Unfortunately, the same can no longer be said with regard to marketing or other products made by the same vendor. This has lead to today's misconceptions about FoxPro and its place in the developer's world.
VFP will not become a .NET language. This was considered heavily during the VFP7 timeframe, but the changes would have resulted in a language that, at best, could not maintain its backward-compatibility and at worse, lose its powerful data manipulation capabilities. And the areas that were redundant between the .NET framework and VFP's extensive language and classes would have created more confusion and very well may have lead to an untimely death for the product.
Because it will never run managed code, Visual FoxPro is no longer strategic to Microsoft, and understandably so. However, it is a mature development platform. Everything you need to write, deploy, and maintain n-tier, high-availability, desktop, Internet, COM and Web services development is in the box or available from a third-party vendor. It contains a robust object-oriented language and a fully relational, notably fast, database that supports tables under two gigs or one billion records, and a stand-alone OLEDB data provider. Even the IDE, with fully extensible design surfaces, has significant portions of its tools and wizards built in its own language (with released source). There is also strong compatibility with SQL Server, excellent COM interopincluding Office automation, powerful XML processing and functionality, and it's still backward-compatible with code written 20 years ago!