Microsoft killed FoxPro in 2007. Anyway, here's FoxPro revived
Posted by boredjohnny 7 hours ago
Visual FoxPro stopped at version 9 in 2007. A surprising amount of it is still running, in 32 bits, because rewriting a 20-year-old business app is how you lose the business. A customer wanted to keep milking their app for the foreseeable future, so here it is: the same language on a new runtime (Rust, compiled to wasm, checked against the real vfp9.exe), tables no longer stopped at 2 GB, the old 32-bit .fll add-ins still loading, and lambdas, JSON and an HTTP server bolted on for good measure. Reports are not done and the builds are unsigned. MIT because why not?
Comments
Comment by ksec 2 minutes ago
Niche but no small business, commodity with over $400M USD annual revenue, the industry together than easily $2B+.
If it is not broke, don't fix it. And there are industry that is extremely conservative in anything software, they will just keep it running for as long as they could.
I used to be sad that we don't have something better to replace these antique software. Now I have come to appreciate it, mostly because newer software haven't show they have manage to add value in the slightest. And most of the time they simply don't work as well.
Delphi, Visual FoxPro, Visual Basic, Flash. I used to think one day we will have something that is not only faster, easier and scalable replacement of those. Instead everything went more technical, more complex, enterprisy and non-user friendly.
And to the Author of the project. Thank You for making it.
Comment by mikestew 5 hours ago
My recommendation is to get rid of the DBF/DBC files and move to a SQL DB of some flavor ASAP. If you have the source code, use ODBC or OLE DB to point to a server.
Source: filed that bug over 20 years ago when I worked on the Fox team. No, it wasn’t going to get fixed without rewriting large parts of how the DB engine worked.
Comment by EvanAnderson 5 hours ago
Recently it had TOTP 'MFA' added to comply with a Secretary of State mandate.
Anyone who uses the software can just open the database files directly. They're just DBF files in a shared folder on a file server. All the users have to have read/write access to the files or the application won't work.
I hang my head.
Comment by marcus9999 2 hours ago
Comment by merb 16 minutes ago
Comment by chasil 3 hours ago
I don't know if dBASE variants support bind variables. That isolation is really required to avoid the "Bobby Tables" effect.
I'd prefer to see the dBASE language adapted to run on SQLite files, as they are a far more profound standard.
Comment by userbinator 4 hours ago
If you already have full access by design, then there's no "huge security hole" either.
Comment by EvanAnderson 4 hours ago
It seems like many people have a hard time understanding this, including developers.
Any attempt to add any kind of permissions, security, etc, without addressing the nature of the architecture (that the database engine runs in the same address space / security context as the UI) misses the point.
Comment by shermantanktop 1 hour ago
But the filesystem access to read/write the db files creates a path to bypass half of that application.
Does the application checksum the db file and have any resistance to filesystem tampering? That'd be trivial to beat, I’m sure, but it’d be something.
Comment by aforwardslash 54 minutes ago
I can change the behaviour of many/most applications by just having read/write access to files; Can you give me examples of mainstream applications that are resistant to filesystem tampering when eg.you have install access? Maybe I'm missing something.
Comment by mikestew 3 hours ago
Comment by dspillett 3 hours ago
A significant weakness?
A serious limitation for modern uses / in modern environments?
Comment by kennywinker 2 hours ago
Comment by HoldOnAMinute 5 hours ago
Comment by EvanAnderson 5 hours ago
Comment by j45 24 minutes ago
Maybe there's a way to run them more securely with a wrapper.
It does make sense to try and move to a sql db of some type, and my immediate thought is if something like Postgres, with a plugin or extension or two couldn't simulate enough of Foxpro.
That, or rewriting large parts of the DB engine seem readily much more possible now with LLM driven development.
Comment by SigmundA 2 hours ago
When there was application error the source code would pop up in dialog maybe a some sort of debugger and the end users would just type a bunch of crap in trying to get out of it and hit enter and save the changes and corrupt the app for everyone and it would have to be restored from backup.
Pretty sure it was Foxpro or maybe dbase, definitely wasn't MS Access as it was still a dos based client.
Very different idea about app security back then, was really nice to developed the db, GUI front end and printable reports all in single runtime though.
Comment by ransom1538 2 hours ago
Comment by boredjohnny 5 hours ago
Comment by mikestew 4 hours ago
EDIT: sorry, I originally just skimmed your comment. I was unclear in my original comment: the files can be accessed and “hacked” from the file system with a text editor. (And a bunch of deleted stuff because I misread your comment.)
Comment by mamcx 2 hours ago
And then it moves to the orthogonal problem:
> SQL DB
(that in fact means: An app made for end users that are not trusted by default but really are somehow that is a improper implementation of the relational model and more improper developer platform, more like wordpress, and because is mostly deployed "networked" suddenly need to worry about remote access, that is totally not the main point of old Fox/dbase apps!)
And the funny things: SQL injection is not a problem with a Fox app (use of a stringy api is a MAJOR issue that lack of a permission model)
---
As one that have long experience with FoxPro and try to revive the style, lets go to the core of the problem:
Imagine you say to a C developer:
"You can't use `fopen` and other filesystem APIs, because well you have access to to the whole filesystem"
Or even better, the user!:
"You should not own your own filesystem!"
The DB is like the filesystem, but not that dumb!
The permissions model is orthogonal. Maybe you (normal) filesystem is running on a networked deployment with access by spies with and other personal that should have top-notch security.
Or is just a embedded device.
WHAT DECIDE THE SECURITY MODEl?
The kind of storage?
Nope!
Is the deployment and use case.
Similarly, what decide the security of a database?, the fact is a "database"?
No!, that is ridiculous. If you need to layer some kind of access control or whatever, is outside of the kind of storage you choses.
In fact, see how Wonderfully could be all if the "filesystem" where an actual database and you can run relational queries on top: Millions of "cli utilities" suddenly are unnecessary, the user (and developers!) have more freedom and control, and your big corp with byzantine rules will be even more happy.
----
P.D: I'm very well aware of the limitations of Fox, is ancient software! but the style of programming? Is like have a taste of start trek
P.D.2: And note that the vector attack described here is a fault of the dumb filesystem, actually!
Comment by movedx 3 minutes ago
Comment by progmetaldev 6 hours ago
I finally got the physician to switch to a proper client/server architecture using .NET WinForms and ASP.NET RPC calls. All issues went away, and I was even able to allow staff members to edit the interface to set what mattered to them most at the top of the application, by building the lab testing form in XML so they could move the X/Y coordinates to where they wanted them. It wasn't even a feature I had thought of, just a physician looking through the technology and figuring out how it worked (luckily the business and security logic were on the server, so a bad actor could only have destroyed their own local copy of the app).
Comment by nradov 5 hours ago
Comment by wjholden 4 hours ago
Comment by ASalazarMX 6 hours ago
I also think it won't be that hard to make it multiuser, that's a long-ago solved problem these days.
Comment by mikestew 5 hours ago
Comment by cowboylowrez 6 hours ago
At this tier of small time company IT, I am hoping that AI will actually improve the quality of code, because people who write racey nolock code that occasionally "drops a few records" are probably hopefully not posting their code to forums or alternatively getting roasted to pieces if they do so its my hope they are only represented in training data as "what not to do."
Comment by 4RealFreedom 4 hours ago
Comment by rynn 3 hours ago
Although to your point, it struggles to do anything with SQLite beyond a single user even when its architecturally not a problem
Comment by networkOne 4 hours ago
I wrote a simple little CRUD app in FoxPro, for the Canadian real estate appraisal market, which took about a part-time month to create, and first year, sold 300 licenses at $299 a pop.
Ahh, memories of a simpler time.
Comment by neilv 5 hours ago
I was only supposed to help assemble computer furniture, and maybe install networked Unix and PC software, but the retired Marine my mom worked for thought I had potential. "Hey, Kid", he would say, we need to modify this dBase vehicle fleet insurance database to support more vehicles; figure it out. Here's the manuals for C database library, and Microsoft C, I'm evaluating; figure it out. We need to migrate between accounting systems; here's a sample .DBF of the target schema, here's how you generate a full dump from the legacy minicomputer, use this editor called Emacs to clean up the dump for import, once you figure out the schema mapping; figure it out. I also bought an older dBase product, and then a Fox product, for home, and figured out how to build a few fancier systems.
(Then I kept working, and there was a period when all employers either wanted me to figure out something, or were favorably surprised when I soon did, thanks to formative influences of figure-it-out mentors. Then a break to get belated formal degrees, then being surprised after that pause, when job interviews were suddenly Leetcode-like, and they didn't seem to want me to figure it out, but wanted a rehearsed ritual performance conforming to a big-corporate sanctioned set of rules, and apparently the Marine hadn't written a book to counterbalance that awful green book. :) )
Comment by EvanAnderson 7 hours ago
I shudder at the though of businesses trying to access DBF files on "network drives" across the variety of shitty overlay network technologies that are the norm today. Seamless remote access to applications is the exact recipe Visual FoxPro apps fail at.
It looks cool but I wouldn't want actually work around apps built in it. It would be cool if a client/server database could be transparently shoehorned in to it.
Comment by 4RealFreedom 3 hours ago
Comment by EvanAnderson 3 hours ago
Comment by fragmede 6 hours ago
It did, but does it still with AI? Back in the 90's it was crazy painful. I'm not in the same situations as I was back then, but I'm optimistic about the future being better because we have better tools today than we did back then.
Comment by kstrauser 6 hours ago
Comment by NoelJacob 2 hours ago
Comment by rayiner 4 hours ago
Has anyone studied what in the models causes this sentence structure? Is it some consequence of the architecture that leads it to blurt out a fact and then only later the significance of that fact?
Comment by lloydatkinson 2 hours ago
Comment by autoexec 5 hours ago
Comment by mikestorrent 1 hour ago
https://devblogs.microsoft.com/oldnewthing/20250505-00/?p=11...
https://retrocomputing.stackexchange.com/questions/6705/what...
I love the detail in these things... icons today don't take advantage of the incredibly high resolution of modern screens, they're just wishy washy corporate logos
Comment by EvanAnderson 4 hours ago
Comment by meerita 7 hours ago
Comment by outworlder 5 hours ago
If they do, immediately copy the data over. They tend to crumble and fall apart (and contaminate the drive head, which will need cleaning)
Comment by jermaustin1 7 hours ago
With that said, I've never actually used FoxPro. I only had a database as the contract for what my web app was supposed to do.
Comment by Kuyawa 4 hours ago
I learned VB.net, C# and even F# to see if they surpassed in any sense my beloved VFP but no, I felt so betrayed I decided to migrate to a galaxy far far away and never look back, 25 years ago (a time where exes and single user apps where the norm for my clients, then came multiuser and external db storage, then the web took over)
This looks promising, I'll give it a try. If I asked AI to fork it, I'd change the language to modernize it a bit (uppercase now looks like cobol written on a punch card)
Edit: On a second thought, I'd fork it in Swift (with the help of AI of course) and use it in MacOS for single user desktop apps. It would serve a single purpose much better than xCode does
Comment by ang_cire 7 hours ago
Comment by Hasz 1 hour ago
My proposal was proxy layer sitting in between, running on something like k8s and written mostly by an LLM to provide a safe interface to queries against foxpro, with ratelimiting, query parsing, rest, whatever other business logic you want.
I am appalled at the fact it's still out there, but there is even older, more Archean stuff out there running literally the entire world :)
Comment by jordand 6 hours ago
Comment by post-it 6 hours ago
Comment by alwillis 6 hours ago
On the Mac, it's FileMaker,[1] which was released in 1985. Claris is a subsidiary of Apple.
[1]: https://www.claris.com/blog/2026/claris-filemaker-2026-is-no...
Comment by AshleyGrant 3 hours ago
We didn't date for long, but I'd be curious to know how long that system ran.
Comment by flopsamjetsam 5 hours ago
Comment by kstrauser 2 hours ago
Comment by nullsmack 6 hours ago
Comment by coryrc 1 hour ago
0: sort-of "is" rather than "was": https://blog.leafe.com/creativity-and-ai-models/
Comment by eterm 6 hours ago
On windows you could RAD your way to a good looking windows application that looked and behaved like everything else. On linux, default behaviour was either ugly, or not very compatible, or heavily customised anyway, and that didn't change until much later with improvements to GTK.
Comment by jordand 6 hours ago
Comment by progmetaldev 6 hours ago
Comment by jordand 4 hours ago
Comment by rtpg 36 minutes ago
Comment by aleph_minus_one 4 hours ago
They exist:
- In particular in the 90s and 00s, Tcl/Tk was really magic for creating user interfaces for small applications under GNU/Linux.
- Lazarus attempts to be an open-source analogue to Delphi
- LibreOffice Base attempts to fill the same niche as Microsoft Access
- Historically, in the time of Gtk+ 1.x and 2.x Glade [1] was an editor for clicking together user interfaces. Well, development ceased, and under GNU/Linux there is no attitude of retaining backwards compatibility with applications/libraries that are not maintained anymore (but which might be business-critical).
- ...
But of course Rapid Application Development is much more popular in the business world which is (at least in many European countries) a rather Microsoft-centric environment. Additionally, the typical developer that uses Rapid Application Development is often a subject-matter expert in some department who also knows a little bit about programming (i.e. is not in deep love with programming), and not a programming expert who also knows about some other specialized topics that are important for the business.
On the other hand, the open source environment typically rather attracts people who really like programming.
---
Comment by markus_zhang 6 hours ago
Comment by AshamedCaptain 6 hours ago
Comment by ChickeNES 5 hours ago
Comment by Lammy 5 hours ago
And/or too many people have internalized a feeling of “I am Very Smart because I know better than to ever try anything unique”, as exemplified by that awful xkcd ‘Standards’ learned-helplessness comic somebody will always rush to post in a discussion of any New Thing, and thus would never even dream of creating RAD tools whose entire premise is the creation of bespoke software.
Comment by progmetaldev 6 hours ago
Comment by aperrien 4 hours ago
Lazarus/FreePascal: https://www.lazarus-ide.org/
Kivy: https://kivy.org/
Grails: https://grails.apache.org/
And any number of combinations using the web. I think they've just fallen off in popularity due to all the web interfaces, honestly.
Comment by flowerlad 6 hours ago
Here you go: https://visualdb.com There are many modern alternatives, in fact.
Comment by jordand 6 hours ago
Comment by flowerlad 6 hours ago
Comment by jordand 6 hours ago
Comment by samplatt 5 hours ago
Having a subscription is only a small part of the total cost. Access works best when combined with a bunch of VBS/macro scripts, which IT departments globally are trying very hard to stamp out completely. Access also needs its own set of permissions and manager of permissions since it can't inherit permissions from anywhere of the other usual Microslop security stores - at least, not without having its own developer/maintainer/champion on tap.
Not to mention the agreed wisdom that while Access is fantastic for rapid-prototyping applications/warehouses/ETL processes, any "permanent" DB/DBMS/solution worth doing in Access is worth doing in a 'proper' database with a proper front-end.
Comment by EvanAnderson 3 hours ago
You're thinking of Visual Basic for Applications (VBA), which is interpreted inside of Access. The standalone Visual Basic Scripting (VBScript) is a completely different thing, and eliminating VBScript doesn't have any ramifications for Access.
Comment by jordand 4 hours ago
Comment by flowerlad 5 hours ago
Comment by chaostheory 4 hours ago
Having played with it, it’s not as turn key as either MS Access or something like Airtable. It can be overly complicated and it’s infected with the paradox of choice.
Comment by DANmode 3 hours ago
Start one.
Has someone written on or otherwise worked on this?
Comment by Atotalnoob 6 hours ago
Comment by kstrauser 6 hours ago
I kinda loathe access for any number of reasons, but appreciate the dev tools it put into the hands of non-developers. A great many people who'd be passive users on most systems were able to build apps to meet their business and requirements, and although Access was janky as hell, that's very, very cool. I think it's most spiritually similar to HyperCard on Mac: you wouldn't want to write a whole large app in it, and if you're an experienced developer there are any number of tools you'd rather write programs with. But if you weren't a traditional developer (e.g. an office worker or a student or a home computer enthusiast, etc.) it gave you a pleasant hand-holding process for making your ideas come to life. I respect that.
Comment by cowboylowrez 5 hours ago
Comment by kstrauser 5 hours ago
Comment by rufugee 5 hours ago
I hate that it's the hand I'm dealt, but aside from AI rewrites (underway), there's no good answer. It's complicated by our reliance on DBFs.
I welcome efforts like foxscript and anything else in this space. There are still a significant number of FoxPro apps out there and no one has a good answer. If you are struggling in this space, leave a comment here. I'll reach out to you. Strength in numbers...
Comment by briHass 1 hour ago
My biggest challenge is the speed at which calculation heavy business logic can operate in FP, even on network shares, as long as they're optimized for IOPs not bandwidth. Trying to adapt similar data access patterns to a networked RDBMS will kill you with round trip and connection overhead. Converting that logic to set-based operations or stored procedures means altering logic and all the risks that entails.
Comment by boredjohnny 2 hours ago
Comment by sm-silversight 4 hours ago
Comment by rufugee 4 hours ago
I would welcome a community effort. There are many (?) companies still relying on FoxPro. Vibe coding a solution is feasible these days. We've vibe-coded a few from FoxPro to Ruby on Rails with great success. I'm no longer stressed about the future... just the timeline.
Comment by boredjohnny 2 hours ago
Comment by tombert 7 hours ago
My first software job was at a Tae Kwan Do studio who ran their own billing department, and the entire billing half was some weird custom thing written with FoxPro. Not Visual FoxPro, I've never actually used that, but the old school DOS stuff.
I absolutely hated every time I had to touch it and I had hoped that it would die in a fire. I hope Visual FoxPro sucks less.
Comment by jhbadger 1 hour ago
Comment by tombert 1 hour ago
Comment by fareesh 5 hours ago
Comment by moron4hire 5 hours ago
Comment by tombert 3 hours ago
I have just had a lot of very odd jobs which has taken me in a bunch of directions.
Comment by smackeyacky 7 hours ago
Now your customer has two problems instead of just one.
Comment by SequoiaHope 6 hours ago
Comment by fragmede 6 hours ago
HOURLY RATE
$100/HR ==== STANDARD
$150/HR ==== IF YOU WATCH
$175/HR ==== IF YOU HELP
$200/HR ==== IF YOU WORKED ON IT FIRST
$250/HR ==== IF YOU TELL ME HOW TO DO MY JOB
Comment by mamcx 6 hours ago
(Example: You can ship an app that internally run `CREATE REPORT` and the report builder show up. You can invoke the debugger (that as I remember is the best I used a zero alternatives as good existed)) and so on
Comment by mikestew 5 hours ago
Comment by karim79 4 hours ago
Comment by devy 7 hours ago
Now, who's open sourcing and reviving FileMaker that Apple killed?
Comment by daotoad 6 hours ago
Comment by ndiddy 6 hours ago
Comment by boredjohnny 5 hours ago
Comment by opengrass 5 hours ago
>domain registered 7 hours ago
>ghost pusher named Dev
Comment by rpmisms 5 hours ago
Comment by Pannoniae 6 hours ago
Comment by boredjohnny 5 hours ago
Comment by fragmede 6 hours ago
Comment by boredjohnny 5 hours ago
Comment by dang 4 hours ago
Of course, it's impossible to know for sure what was LLM processed or not, but your comments are getting classified that way.
(The project itself is fine, of course, to submit to HN. We just want text on this site to be entirely human-written.)
Comment by boredjohnny 3 hours ago
Comment by sehugg 7 hours ago
Comment by TMWNN 7 hours ago
Comment by markus_zhang 6 hours ago
Comment by nrawe 7 hours ago
Comment by SequoiaHope 6 hours ago
Comment by password4321 3 hours ago
Comment by zergrush 6 hours ago
Comment by xattt 5 hours ago
Simply speaking from experience.
Comment by Kuyawa 4 hours ago
Not a single language nowadays can do that
Comment by neverartful 6 hours ago
Successor - Visual FoxPro: https://en.wikipedia.org/wiki/Visual_FoxPro
Comment by __d 6 hours ago
People used it to write business applications. Like Microsoft Access, or Visual Basic.
It started as a competitor to dBase II/III called FoxBase, and then Microsoft bought it.
Comment by wolfi1 6 hours ago
Comment by whartung 4 hours ago
A primary bit of tech that came out of the purchase was the core DB engine. They reworked this into what became the Jet engine. The Jet engine was the core of Access.
Access was in many ways a next generation of FoxPro. They both went after the same niche of desktop and file server DB applications. But FoxPro carried the legacy of its dBase roots, FoxBase was basically “better dBase”, but had to appeal to and be familiar to dBase developers.
Access had no heritage like that to hold it back, and was a better citizen in the VB/Office/OLE/COM world. It was also more SQL first even though it kept things like DBF files as first class citizens.
Comment by pstuart 6 hours ago
Comment by dwd 4 hours ago
The lecturer had a side business building FoxPro apps for local businesses, and really pushed us with real-world style SQL puzzles.
Built an app to track my MtG cards at the time. (this was pre-Web)
Comment by whalesalad 7 hours ago
Comment by ravenstine 6 hours ago
Comment by yallpendantools 6 hours ago
Unlike most other people here, I wouldn't really say I've developed a radar for "the vibecoded webpage design"; I thankfully don't dabble as much with FE nowadays so if you told me this is default Bootstrap 4 or something, I'd have believed you. But as I scrolled through the claims, my AI-generated text radar pinged hard and I was caught in a moment of dissonance between the sleek design and the AI-cadenced copy.
Suddenly, I would've had more confidence if this was a black default font text on a white webpage, served from a .edu domain.
> The nightly is rebuilt from every push to main and published as a pre-release on GitHub. Unsigned, so the first launch asks you to confirm.
But with only two commits within the hour this really reads more like a concept of a release plan than an actual regimented/automated release process.
My problem with vibecoded projects was never whether if it was going to work but whether if the failure modes are known. And you can only know the failure modes if you check your work. Hence why, I realized that a history of alpha and beta releases for an opensource project is a signal of quality.
Comment by boredjohnny 2 hours ago
Comment by katzenq 1 hour ago
Comment by fragmede 6 hours ago
Comment by moron4hire 5 hours ago
Comment by itomato 7 hours ago
Comment by _s_a_m_ 6 hours ago
I wished almost it was terminal based
Comment by zero_shift 6 hours ago
Comment by silveira 6 hours ago
Comment by kodomomo 5 hours ago
Dead giveaway.
Comment by sm-silversight 6 hours ago
Comment by Kwpolska 6 hours ago
Comment by sm-silversight 4 hours ago
Comment by stuaxo 6 hours ago
Comment by fragmede 6 hours ago
Comment by nxobject 6 hours ago
Comment by roywiggins 5 hours ago
"Visual FoxPro is a 32-bit program, and that decides more than it appears to. It is why a table stops at two gigabytes, why a memo file stops at two gigabytes, and why a big report runs out of memory on a machine with plenty to spare. The limits are signed 32-bit numbers buried in the file handling, not a licensing decision anybody made."
and
"The editor checks what you type through that very compiler, so what it underlines and what the runtime refuses cannot drift apart."
Like, what? Who talks like that?
Comment by DANmode 2 hours ago
Take the time to ask for anything else.
Comment by jamesforestwest 6 hours ago
Comment by VCFundedGenYer 6 hours ago