Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Visual FreePro Update 5

foxmuldr3

Programmer
Jul 19, 2012
166
9
18
US
I had someone contact me recently asking about the status of Visual FreePro, Jr.

I've gone through three iterations of different ways to apply the internal logic and design of Visual FreePro into a new product. I've currently settled on a 4th that I'm developing presently. I'm not sure I'll release it publicly once it's completed, which I anticipate being in March, 2025, primarily because it's not really a general purpose tool but more of a specialized C/C++ library API to make development in C/C++ with XBASE-like features easier.

We'll see when the time gets closer though. Still a lot of work to do.

To everyone who's supported me over the years: Thank you. Here's a basic overview of what happened:
1. July 12, 2012 -- Development on Visual FreePro began
2. 2014 -- Visual FreePro, Jr. development begins
3. 2016 -- I got a Hep-B vaccine that made me deathly sick. It took me until 2019 to recover from it. All development on Visual FreePro, Jr. stopped in 2016.
4. 2018 -- I had an idea for a CPU design called Inspire, and began working on that. I completed the work in 2022.
5. 2023 -- Work resumed on Visual FreePro. I created versions of it with the codenames DataHorse, DataFlow, and finally FreeFlow. Each of those were slightly different APIs than the standard Visual FoxPro type IDE, but with the same basic code under the hood, plus some new ways to visualize data and program flow.
6. 2024 -- My current iteration is codenamed Dori. Dori will be my last iteration of it and is somewhat scaled back from the original full version. It's designed to work in concert with C/C++ so you can do XBASE things easily in C/C++ code.

If anyone would like more information, please email me. My full name as below (as rick.c.hodgin) at gmail.

--
Rick C. Hodgin
 
I had someone contact me recently asking about the status of Visual FreePro, Jr.

I've gone through three iterations of different ways to apply the internal logic and design of Visual FreePro into a new product. I've currently settled on a 4th that I'm developing presently. I'm not sure I'll release it publicly once it's completed, which I anticipate being in March, 2025, primarily because it's not really a general purpose tool but more of a specialized C/C++ library API to make development in C/C++ with XBASE-like features easier.

We'll see when the time gets closer though. Still a lot of work to do.

To everyone who's supported me over the years: Thank you. Here's a basic overview of what happened:
1. July 12, 2012 -- Development on Visual FreePro began
2. 2014 -- Visual FreePro, Jr. development begins
3. 2016 -- I got a Hep-B vaccine that made me deathly sick. It took me until 2019 to recover from it. All development on Visual FreePro, Jr. stopped in 2016.
4. 2018 -- I had an idea for a CPU design called Inspire, and began working on that. I completed the work in 2022.
5. 2023 -- Work resumed on Visual FreePro. I created versions of it with the codenames DataHorse, DataFlow, and finally FreeFlow. Each of those were slightly different APIs than the standard Visual FoxPro type IDE, but with the same basic code under the hood, plus some new ways to visualize data and program flow.
6. 2024 -- My current iteration is codenamed Dori. Dori will be my last iteration of it and is somewhat scaled back from the original full version. It's designed to work in concert with C/C++ so you can do XBASE things easily in C/C++ code.

If anyone would like more information, please email me. My full name as below (as rick.c.hodgin) at gmail.

--
Rick C. Hodgin
Sorry the Hep B vaccine set you back. I had every kind of vaccine in the Marine Corps and Navy. If I were in the military now, I would have refused the COVID shots. And, yeah, they would have escorted me off the base. I would like more information about Visual FreePro, now codenamed, Dori.
 
Last edited:
C/C++? Anything for C#? Just kind of wondering. Can't say that any variant of C is something I enjoy working in. The XBase languages are in such a sweet spot with their syntax - not too cryptic, like C variants, and not too verbose, like COBOL. Just a clear, concise, easy to read language.
 
Ditto for C# or VB variants, but I wouldn't be able to use them for a huge percentage of my projects unless there was a way to migrate code, screens, libraries and reports.

What I'd really love is simply a new platform that is still as close to VFP as possible, including PRGs, report files and screen files.

When I started down this road, there was dBase II, then dBase III came along and ran everything II could, but with a lot more open databases (they weren't called tables then), then it seemed like every few years there was some leap forward, yet with roots in the past. dBase III Plus.

When FoxBase, Multi User FoxBase, FoxPro, Clipper, and others came along it was clear that there was a market for third parties to support and improve the language, yet you could essentially run code from dBase II on Visual FoxPro 9 unmodified (yes, the screens would look like hell, but they worked).

I still wonder why third parties stopped there. If somebody released a language that had backward compatibility, plus new commands and features, it would sell like hotcakes to developers who are frustrated with today's development environments.
 
In C# you can access standard exposed functions in DLLs. You'd be able to use the Dori API that way. However, the philosophy of Visual FreePro, Jr., and that of Dori, is that a developer should be looking to create stand-alone software / products. They do not require the cloud, a network connection, other libraries or tools to be installed or accessible, but rather are compiled as stand-along binaries which run natively on Windows using Win32/64 API functions. With some additional work, they could be ported to other OSes as well.

Like Visual FoxPro, the design is one tool for every business class application need, comprising programming, forms, data, reporting, and now in this modern age, networking and graphics. Dori has an OpenGL forms engine which is literally quad based. It exposes events which allow an application to query the 3D scene and inject its own graphics into it. So, you could write games in it! Or present live data/video on-screen. It has a virtual 3D OpenGL mouse that lets you navigate through the 3D environment. It provides for animation where you can dock a form, or restore it. That was all developed as part of FreeFlow and an earlier game engine I wrote for a 2D side scroller, plus a 3D simulation I wrote for a whole separate project.

I'm still not sure if I plan on releasing Dori publicly. If I do it will be a for-profit endeavor, and not open source. I think I've learned my lesson on that one. But the purpose of this post was to let you know what happened with Visual FreePro development. Had I not gotten sick from that Hep-B vaccine, I would've continued working on it. When I stopped, Visual FreePro, Jr. was about 40% completed. We had over half the functions defined, about 40 commands, and we were adding to them at the rate of about 1-5 functions per day (myself Stefano D'Amico from Italy, Hernan Jesus de Canon from Columbia), and commands as needed. The compiler was going to take a while, as was the SQL engine. Other than that everything was in place. I had estimated one year of development working 40+ hours per week to get it into a beta release state. Two years to have it stable and optimized.

I had someone email me and ask if I would release the final version of Visual FreePro, Jr. source code I had back then as open source. I'll consider it. Right now I have no plans to because the license I used was essentially a public domain license, and I don't want my work taken and added to a for-profit product. I didn't mind that being a possibility when I was actively working on it because we would be able to fight any commercial threat with our open source prowess. But with me not working on it, it's basically a 4-year gift of labor, talent, and everything else, for others to use as a base to make money from, which I consider theft in that regard.

The whole goal of Visual FreePro from the beginning was to always be open source. People weren't interested in supporting me or my product because of the project's strong roots in faith. It ultimately was a great loss to mankind because it was on its way to being able to compete 1-to-1 with VFP9 in a free-and-open-source source code base, and it would've eventually notably surpassed it and become the de facto standard for data-based applications. I think that's why it was so strongly fought against to be honest.

I'd never worked so hard on a project as Visual FreePro, Jr. And that includes a hobby OS I wrote entirely in 80486 assembly in the late 90s, early 00s, which took over four years all my time and was exhausting mentally (you have to consider so much when writing an OS, every line of code could impact other modules, deadlocks, performance, etc.).

--
Rick C. Hodgin
 
For what it's worth, if you manage to build something that can run exiting code I wouldn't expect it to be free and many of us would gladly support it by paying for it.

I've seen some people write about the potential of copyright issues, but just remember, the xBase language is not copyrighted per se, but Microsoft's code is. That's how they managed to build Excel without violating Lotus 123's spreadsheet, which was actually a clone of VisiCalc, the original spreadsheet.

For the same reason, at one point dBase, FoxBase, and Clipper were all identical in syntax and completely interchangeable without Fox or Nantucket being questioned about infringement.

Fox won the mainstream market after the introduction of Rushmore, the clear performance winner, and the key reason Microsoft bought the company, so I would love to see the language come back.

I know the younger generation wouldn't embrace it at first, but the fact is, xBase is still the only language that was built from the ground up to manage databases. Only xBase lets a developer create a table and build a simple data entry form in seconds where the controls are bound to the data automatically. Add to that the ability to generate amazing reports and generate a fully operational EXE file without layers and layers of NuGet library incompatibility issues to contend with and you simply can't beat it.

I've been writing code since 1979, and frankly I absolutely hate today's development platforms. I'm tired of writing a .Net application that gives me a warning on the top of Visual Studio telling me that my NuGet libraries are no longer supported, forcing me to not just update a bunch of cryptic libraries, but often totally re-write code to use whatever libraries replaced them. I've built entire applications that I can't even load and build using Visual Studio because I can't reconcile the endless library references.

So, I'll be the first in line with my credit card in hand to support any developers who manage to build something that can run my old code and even expand on it. That's why I've made multiple payments for VFPA. I've supported him, even though I don't use it in production just in case Microsoft eliminates support for the older 32-bit libraries. I just like knowing that I have a 64 bit safety net with newer libraries if I ever need them.
 
I've been writing code since 1979, and frankly I absolutely hate today's development platforms. I'm tired of writing a .Net application that gives me a warning on the top of Visual Studio telling me that my NuGet libraries are no longer supported, forcing me to not just update a bunch of cryptic libraries, but often totally re-write code to use whatever libraries replaced them. I've built entire applications that I can't even load and build using Visual Studio because I can't reconcile the endless library references.
For me it was 1986. And I agree with you 100%.

I'll need help to make it be complete enough to create a product for others to use. If anyone's interested in working on a Christian project, meaning one that has a literal cross on the splash screen and religious references at the top of every source file, but in all other ways and outward appearances is basically a 100% clone of Visual FoxPro 9, and if you know C/C++ sufficiently to use typedefs, structs, pointers, references, function pointers, list, and have or can get Visual Studio 2003, 2005, or 2008, then please contact me at rick.c.hodgin at gmail and we'll see what we can setup. I've asked Stefano D'Amico if he would be willing to assist me again as he was an excellent developer who picked up the Visual FreePro, Jr. design very quickly. He was interested provided we could work in his time around his existing projects. I'm sure if there were more people interested it would draw him in moreso as well.

We'll see how the development side of this project's interest pans out. I too hate the modern programming language paradigms with disparate tools that aren't integrated, don't communicate well except across a protocol, and which, when viewed alongside VFP9, pale in all data-processing ways by comparison. I also hate to see every application out there being force-migrated to "the cloud." With all the data breaches, CrowdStrike, things like Norton and Microsoft AV recently flagging false positive on long-established applications (one of which shut down our entire product line for nearly 24 hours before Norton fixed it with a whitelist patch), I'd like to see more stand-alone apps that are cloud-capable, but not cloud-required, storing data locally, able to be mirrored or migrated to the cloud as easily as a .INI file setting.

Thank you for your encouragment, Joe. <3 The sky's the limit in terms of what we can do ... we just need a way to make it all happen.

--
Rick C. Hodgin
 
I just noticed it says next to my name "Jul 19, 2012." That was one week to the day after I started the Visual FreePro Project. In the next four years I wrote nearly 120K lines of code in my evening, weekend, holiday, and personal time hours. I came so close ... but was taken down by that vaccine which made it so I couldn't concentrate deeply for literally a couple years, and it wasn't until late 2019 almost 2020 before I started to feel like myself again, though I still have a persistent ringing in my ears that's invasive. Today I do feel like myself again in all other ways, but I'm also 12 years older than when I started (now 55). I get tired more easily. I can't concentrate as deeply as I could at age 43. I think this will be my last shot to get the project completed. Would love to see it succeed. I consider not completing it my greatest failure in life.

--
Rick C. Hodgin
 
I just noticed it says next to my name "Jul 19, 2012." That was one week to the day after I started the Visual FreePro Project. In the next four years I wrote nearly 120K lines of code in my evening, weekend, holiday, and personal time hours. I came so close ... but was taken down by that vaccine which made it so I couldn't concentrate deeply for literally a couple years, and it wasn't until late 2019 almost 2020 before I started to feel like myself again, though I still have a persistent ringing in my ears that's invasive. Today I do feel like myself again in all other ways, but I'm also 12 years older than when I started (now 55). I get tired more easily. I can't concentrate as deeply as I could at age 43. I think this will be my last shot to get the project completed. Would love to see it succeed. I consider not completing it my greatest failure in life.

--
Rick C. Hodgin
I'm 59, and I definitely lack the concentration I used to have, but I still code every morning, which is when my brain works best.

I completely understand how you feel about this. I've got more than a few passion projects I keep plugging away at that I want to exist long after I retire and beyond. Some may happen, some may not, but it gives me purpose each day so I keep working on bits and pieces of them when I can and move them a little closer. In my case, some of them have bigger problems, like starting them on platforms that keep changing or relying on components that are deprecated or abandoned.

That's why I keep working in FoxPro. Unlike other platforms, the language of xBase is consistent. The fact that it hasn't changed since 2009, and that code I originally wrote in 1984 still runs is exactly why I will never give it up. Even when Microsoft deprecated a command such as @ SAY, they kept it in the language, but only removed it from the help system, so new developers focused on the new stuff, while the old code would still run.

I wrote big projects in .ASP, then was frustrated a few years later when ASP.NET with Web Forms (.ascx) and Master Pages (.master) came out and it couldn't run my old code, so I re-wrote projects with Web Forms (.ascx) and Master Pages (.master), and found a groove once again and knew every part of my project was mine. Years later, those projects relied on using NuGet to push endless libraries that often conflicted with version numbers of compilers, runtimes and libraries that were no longer under my control. I hate getting messages telling me something requires an update because it often means the update will break it and I'll spend hours or days identifying why.

Once again Microsoft has nearly abandoned Classic ASPX in favor of multiple flavors (Core, Razor/.CSHTML, MVC, etc.) that look similar to each other, but are completely different approaches. Each of those rely on picking the right set of display libraries and foundations for the output such as Bootstrap, Skeleton, Angular, etc.. Even after you pick a foundation such as BootStrap, subsequent versions are entirely different and rarely backwards compatible.

Changes to FoxPro / xBase never broke my code, they always expanded my possibilities without abandoning my older code. There are still entire sections of code in my current software that date back to 1984 that happily coexist with code I wrote this morning. This is why I will never give it up, but I would LOVE to see a new version that is still backwards compatible.

As I said earlier, there may not be a lot of young developers who would consider starting in the VFP language right now, especially since Microsoft doesn't actually sell it, but if you succeed at building something new that can replace it, while still running older code, I know the younger generation would eventually find it just as compelling as us old timers, especially with the prospect of doing what I've done since 1980, earning a living writing and selling custom database applications to companies that need them.

It reminded me of the line "if you build it, they will come". I see tons of people attempting to manage things in Excel that really should be done in a real database with relational tables, forms and reports simply because they can't find another way to do it. If a new platform existed to make it easier to write database programs with a data first philosophy, even young developers would flock to it to fill that gap and earn a living from it, and they would be willing to pay for it, just like all of us old timers.

I can't write the kind of code that builds database engines or compilers in C/C++, but I'm willing to help in any way I can, as I'm sure some of the other members here are. One thing is certain, if you build it, I will be one of the first to buy it.
 
I wrote big projects in .ASP, then was frustrated a few years later when ASP.NET with Web Forms (.ascx) and Master Pages (.master) came out and it couldn't run my old code, so I re-wrote projects with Web Forms (.ascx) and Master Pages (.master), and found a groove once again and knew every part of my project was mine. Years later, those projects relied on using NuGet to push endless libraries that often conflicted with version numbers of compilers, runtimes and libraries that were no longer under my control. I hate getting messages telling me something requires an update because it often means the update will break it and I'll spend hours or days identifying why.
Agree completely. I've kind of resolved myself now to completing Dori in a developer form, meaning Dori will work basically like VFP9 does, just with the new abilities. I'll add the features as I'm able. Initially traditional XBASE, later SQL and other more complex coding requirement things.

I'll keep it closed source for now. If anyone wants to participate I'll create an open source test harness where the functions / commands can be developed. So, kind of open source in that regard.

--
Rick C. Hodgin
 
I'm 59, and I definitely lack the concentration I used to have, but I still code every morning, which is when my brain works best.

I can't write the kind of code that builds database engines or compilers in C/C++, but I'm willing to help in any way I can, as I'm sure some of the other members here are. One thing is certain, if you build it, I will be one of the first to buy it.
I have been coding for 44 years and have never made it past FoxPro 2.6 simply because everything I have written, and continue to write, keeps working. Why fix what is not broken?

That said, even though I am greatly in favor of extending the language, I will never leave 2.6 behind, simply because I am 77 and it makes no sense for me to embark on a new learning curve. Twer I were a young kid of 59, I most assuredly would join you in buying anything that would extend the language that does not break code I have already written.
 
My transition from 2.6 to Visual FoxPro was relatively painless. Initially, it was the exact same code, with a few extra lines at the top to change the default font for the screen to something that would let my old code fit properly with a fixed width font that gave me at least 80 columns and 25 rows so all the @ SAY / GET pages worked.

FRX reports from 2.6 were still compatible, so I used nothing but older reports for a long time.

I used a bunch of #If "VISUAL" $ Upper(Version()) preprocessor directives here and there to execute anything that would only work in VFP. The 2.6 compiler ignored those sections and didn't throw errors when I did something uniquely VFP like running a form.


Code:
#If "VISUAL" $ Upper(Version())
   do form MyForm
#else
   clear
   @ 1,0 SAY "Hello World, what's your name" GET YouName picture "@!"
   @ 2,0 SAY "Address" GET Address picture "@!"
  * etc.
  * etc.
  READ
#if

Code like that compiled and ran perfectly without errors. I even supported by DOS clients until the last one retired about 8 years ago, by including a bunch of conditional like IF _DOS sections,

My oldest code still coexists with my newer Object Oriented code beautifully, and I take comfort knowing that I know it's not because the language changed. So if Dori adds anything new to the language, I will likely use a similar method to ensure the code will still compile in the older VFP (#if "DORI" $ upper(version()) is all I'd need.
 
For me it was 1986. And I agree with you 100%.

I'll need help to make it be complete enough to create a product for others to use. If anyone's interested in working on a Christian project, meaning one that has a literal cross on the splash screen and religious references at the top of every source file...
I neglected to address this. I love to express my Christian faith in my projects by placing Easter Eggs here and there that display messages about my faith and to express my gratitude.

I keep putting two of my Christian passion projects on hold. One was called FindingFaith.Com, the other was TheWordProcessor.Com. I started developing .ASP versions of them over 20 years ago and when .ASPX came along, I never converted them. I still hope to develop them.

TheWordProcessor in particular was something I really wanted to complete, even if I would be the only person using it.
 
Am working on Dori. My goal is to have the general framework completed and working by January 2025. Will have something to demo around then. Won't be a complete product, but will have enough functionality you'll see where I'm going.

Let's target January 15.

--
Rick C. Hodgin
 

Part and Inventory Search

Sponsor

Back
Top