hckrnws
Microsoft killed FoxPro in 2007. Anyway, here's FoxPro revived
by boredjohnny
by boredjohnny
Niche but no small business, commodity with over $400M USD annual revenue, the industry together that is 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.
A person's perspective on the older dev tools being "superior" to today's newer tools depends on the things they want to build.
I had jobs working on Foxbase/FoxPro for DOS and migrated those apps to FoxPro for Windows, and Visual Basic 3.0 to 6.0 ... and I don't look back at those with the same positive nostalgia.
Classic VB was "simple" but every project at each company had a different hodge podge of 3rd-party VBX/OCX add-on controls to do anything non-trivial. E.g. 3rd-party calendar date picker, report writer, etc. VB didn't have a decent datagrid so everybody bought a 3rd-party one. In contrast, C# WinForms standard controls included a usable datagrid with data binding out of the box.
In a FoxPro for Windows project I was working on, we needed to open .zip files. FoxPro didn't have that functionality so the company paid an extra $300 for the FoxPro Library Construction Kit[1] and I hand-coded a .zip file parser in C Language to be called by FoxPro code. Instead of FoxPro dev work being simple, it's complex! Today's Python or C# can trivially open .zip files with builtin modules and functions so devs don't waste time on writing low-level C code or use 3rd-party libs.
With old 1990s tools, you can't do "simple" tasks such as getting a UTC timestamp, use a regex expression, or retrieve a web page with an http call, etc without calling Win32 API functions or 3rd-party tools.
If one wants to do things beyond the limitations of classic VB/FoxPro, the newer dev tools like Python/C# etc absolutely do make things easier and faster.
[1] https://www.scribd.com/document/384159949/Ms-Foxpro-Develope...
I say this not because you're wrong - I'm sure that using built-in modules for .zip parsing is faster and easier! - but rather because I don't know whether or not it's worth knowing how to do that. In the AI days right now there's argument being had about whether learning any coding at all is valuable. My gut says it is, but I've also spent years learning before AI, so maybe it's a sunk cost fallacy.
Regardless, my feeling is that we haven't found the balance between what's worth making every programmer learn/implement themselves, and what's worth abstracting away. Maybe implementing a .zip parser gives you some kind of secret wisdom that makes your future work better?
Delphi is alive. https://www.embarcadero.com/products/delphi
I pointed out they'd lose a lot of the integrity and audit features built into a database.
I get wanting to be free from Oracle but go to another database.
All these tools are nice for a single developer. But they fail to scale for teams where you want a distributed version system, automated tests and CI/CD pipelines. Also you want to reuse code via package management systems. And a single code base for several target systems (cross compilation , electron) is also nice. I believe the mentioned tools offer none of this.
I don't think this is true? Certainly you could have done those things with Delphi but it pre-dated DVCS and CI/CD being common concerns.
> Also you want to reuse code via package management systems.
Again, these tools pre-dated package management systems being in common use because they pre-date internet access at any sort of bandwidth being a reliable assumption. No reason they couldn't have one. Perl did at the time, which I mainly put down to it being in common use where internet access was a reliable assumption, but very little else did.
> And a single code base for several target systems (cross compilation , electron) is also nice
You can absolutely do this with Lazarus, which picked up where Delphi left off. Flash also counts here.
> And to the Author of the project. Thank You for making it. My pleasure
Honestly, that's at least 90% of non-tech industry, and there's a good living to be made as a consultant that can support legacy software.
This feels so small in 2026.
The average annual revenue of a small business in the US in 2026 is around $1.2 million. The average headcount is about 11 people. About 46% of employees in the US are employed by small businesses. In 2024, about 64% of new jobs were created by small businesses. About 61% of new jobs from 1991 to 2025 were created in small businesses.
https://entrepreneurshq.com/small-business-statistics/
https://www.forafinancial.com/blog/small-business/average-sm...
https://www.venasolutions.com/blog/small-business-revenue-st...
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.
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).
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.
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. :) )
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.
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?
AI.
No, not the official VFP as released by Microsoft, but a version made by a well known VFP developer.
Besides that I do know of some developers actually using this for building their software.
No connections here, just know that it exists and is used and well before LLMs became the answer to everything.
It's beautiful, isn't it?
If they do, immediately copy the data over. They tend to crumble and fall apart (and contaminate the drive head, which will need cleaning)
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.
This takes me back to the first commercial software i ever worked on around 19 years ago, it was an accounting software written in Visual FoxPro. It's a super easy language to get started with programming and the fact that you can drag your widgets on the screen helps a lot. I remember using hungarian notations too. In hindsight that's both good and bad, because the moment you move to another language that doesn't offer an IDE where you can drag widgets with your mouse on the screen to position them and you have to work with containers, programmatically, you quickly realize how little you really know about creating UIs with forms. I don't think i had an opinion back then if VFP was good or bad but I remember the IDE would crash when you tried to build your project sometimes with a pop-up that would say "Catastrophic failure!". I always thought that was super funny and to this day i still have the screenshot. I think about a year or so before they killed it, they releases SP2 which was a bit more stable.
>domain registered 7 hours ago
>ghost pusher named Dev
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...
I know TwinBasic exists but its closed source and I want to take things further than VB6 ever did. I always felt like VB7 could have been something amazing if it kept going outside of .NET but they let it go and basically killed a really rich language by breaking all sane compatibility.
Maybe worth me putting support for this project, and I too intend to license my efforts under the MIT license. ;)
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
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.
It always starts simple - you wanna build just a simple CRUD where the entry is a form that goes into the table.
Then the complexity grows, and your table has to reach out to other services, call APIs etc. etc.
The 'convenient' primitives, that did 90% of the things that need doing can't do the last 10% - so you drop down to VB, which is exactly like regular programs but worse. It also doesn't interact well with the rest of the system, so you have to rewrite adjacent stuff in VB too.
The one thing I learned early on. MS-JET is NOT something you want to share from a server! Dbase dbf on the other hand, seemed to work fine.
Are we witnessing the end of the age of source code? In many ways, the signs are on the horizon that we are.
(Heck, recently I migrated a VM to its third hypervisor. It began as a physical machine a quarter century ago.)
[deleted]
"Paid" in quotes because I was about 10 years old at the time and the work was done for my mother in her capacity as a government employee. What she could do, though, was find a surplus shrinkwrapped copy of dBASE III Plus that I was allowed to keep when I was done.
Now your customer has two problems instead of just one.
(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
Also, I would beware of getting MS lawyers on your tail.
Never got to use FoxPro though, but followed along in magazine articles and such, great to see this kind of tech going on.
Now, who's open sourcing and reviving FileMaker that Apple killed?
Clone it with cheaper tools, and win the next $100m / yr contract from costco at half the price. There are 100k opportunities out there right now.
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 :)
This is fascinating. The author did great work here.
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)
[deleted]
Simply speaking from experience.
[dead]
[deleted]
[deleted]
Even open-sourcing FoxPro 2.6a for DOS (the last DOS version, August 1994, > 30 years ago) would be better than open-sourcing no FoxPro version.
Fundamentally, FoxPro, at its core, is 4 things:
1) It's own low-level database engine
2) It's own SQL parser/interpreter/engine sitting on top of #1.
3) Simple (but very data-aware of the underlying data!) scripting language (based on dBase, referred to as "xBase" -- or more specifically the FoxPro dialect of xBase) sitting on top of #1 (except for the SQL commands, SELECT, INSERT, UPDATE, DELETE, etc., which sit on top of #2)
4) Form / GUI / Data-entry and Data-search Form Designers that exist on top of #1, #2 and #3. Basically a primitive (although very functional and elegantly simple) windowed App building environment.
Now, all of those 4 things could be replaced and/or outsourced to other open-source projects...
For example, to read/write/index/seek in FoxPro database files (the low-level database engine):
https://github.com/MPSystemsServices/CodeBase-for-DBF
I'm not sure if CodeBase comes with its own SQL engine/parser -- but if not, SQLite has a pretty good one which could probably be used with some modifications. If not, ANTLR has various SQL grammars for it floating around on the net (here's a quick blog post of someone using ANTLR to create a query language: https://markandrewperry.medium.com/using-antlr-to-create-a-q...)
For the scripting language, any scripting language could potentially work, but special attention should be paid to the way FoxPro variables are aware of data in underlying open tables in the current work area (SCATTER and GATHER commands and how they work, etc.), which is one of the unique features of FoxPro. (Also, for command / line / expression evaluation, you'd probably want to use or at least know about Dijkstra's Shunting Yard Algorithm: https://en.wikipedia.org/wiki/Shunting_yard_algorithm)
For the GUI / Form designers, well, any data-aware form-designing graphical toolkit could work, but of course, FoxPro has/had its own nuanced "flavor" of these.
Generically speaking, FoxPro is/was a database engine, SQL engine, very-data-aware scripting language and form/gui/app designer -- all rolled into one package.
I'd love to see an app where all of these components are open source, where there are clear interfaces between those components (separate compilation options for codebases, depending on which components you want), where the original FoxPro/dBase/xBase scripting language is used (because it was great!) and where any underlying database engine and/or SQL engine could be "swapped out" for any other (i.e., SQLite, Postgres, etc.)
Anyway, FoxDevStudio looks interesting in this space!
It's so annoying now. It's like everyone spamming each other with AI slop.
[deleted]
I wished almost it was terminal based
[deleted]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[dead]
[deleted]
In other words, solving the right problems, however inefficiently, will always be more useful than solving the wrong problems efficiently.
At the time I worked for an organization which pretty much had an unlimited budget for development and had therefore purchased just about every VBX bundle. They also had a solution with about 90+ complex forms - and no standards, so each developer of each form would pick whichever VBX control that "pleased their eyes". Which was "fine", until about 50% of those VBX control vendors simply did not offer an OCX upgrade in a timely manner - or in many cases simply folded/stopped entirely...
(The next nightmare was transitioning to what was supposed to be a more loosely-coupled COM type architecture, where each form could be dynamically loaded - except, referenced dependency tree and "breaking-binary-compatibility" during weekly "clean builds" ended-up taking sooooo much time... Thanks to a tool from a MSFT employee via their consulting service called "VBBuilder" (think of essentially "make") finally helped reduce that manual effort from a full day to just minutes...)
Some of those originals used DBase III or DBase IV libraries. Some used bdb libraries. An awful lot used fixed-width fields designed into the application itself. Many of them I wouldn't have the source for, so I'd have to reverse engineer the data file format a little and then write a proper schema for a real database.
Sometimes the hardest part was getting the forms to look acceptable to employees at my client who were used to a curses style interface.
Maybe someone proposed Postgres and they said well who is going to support it. And then they'd have to pay some company to show they have postgres support anyway.
CSV has no support.
The depressing part wasn’t finding this bug (in a very mature codebase), it was painstakingly explaining what the problem was and how to fix it.
I thought everyone was on monorepos to "solve" that.
That said:
> It feels small to some people in 2026, depending on the business type and the field
$2Bn was stated as the size of an entire industry, which is weird when you work at companies that do more than that a fiscal quarter.
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.
There's still so much software out there that is an absolute lynchpin to a business that will never have the kind of durability/compatability many take for granted. The only thing that has changed in the past 2 decades is the operating system running the VM. In 2026 they are still yelling across the office or exchanging phone calls when one has finished and signed out so that the other can sign in and pull the updates.
It often isn't taken seriously or is written off because it's a "small business", but those 2-8 people run a book of business that clears this comment thread's lifetime earnings annually.
If you already have full access by design, then there's no "huge security hole" either.
It ships database files over the network and does that blazingly fast.
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.
Trust was a thing back then. Spam was something that came out of a tin and was made of dead animal. And passwords were limited to eight ASCII characters.
And as such, bolting security onto something that was designed inherently to be security agnostic is going to be a recipe for failure.
It is top 6 in their vulnerabilities ranking.
This is definitely insecure design.
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.
The permissions exploits on SQLite and dBASE are identical, sad to say.
You're a good guy. I respect you.
That's the problem here: Systems built on sharing the database over a networked filesystem, where one user can not just modify all the data, but can also execute code on all users machines.
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.
Foxpro's local DB handling was amazing at pulling down tables, doing complex bulk operations, and pushing the changes. Data transfer was fast, coding ergonomics were great. On top of the extremely low-cost UI creation, it was a no-brainer.
But expectations were changing, everybody wanted to run it everywhere. Citrix bought some time, but the writing was on the wall.
But if it starts being a system of records / authoritative system, there needs to be a plan to decommission it.
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.
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!
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.)
[deleted]
Perfect. I'm looking for a program that executes everything it reads. You've tracked a 20-year-old security bug for FoxPro? That's gnarly. What if, instead of reviving FoxPro, we summon a new type of DOS with no security model to begin with? FoxPro was always better that way.
Hear me out. So, you have your regular computer on your desk, right? I call that the REAL SECURITY computer for REAL WORK: You know, your typical choice of Windows 11, Apple, or Linux. The biggest names in security. The names we trust. Real work. Real computers. Real security.
Next to it sits FoxPro, running new DOS on a separate computer with no security model at all.
Here's the ergonomics. You press your hands against your desk and push your office chair off like a boat, gliding away from the SECURE COMPUTER in the REAL WORLD toward FoxPro. FoxPro reads everything and executes with religious zeal.
- written from my treadmill. edit: fix typos
In a large enterprise environment I have seen business users getting burned by vibe coding already, as they often don't even read the comments and warnings that the LLM gives them. But I think it is inevitable and should enable software to automate the millions of manual processes that are too bespoke to pay an IT team to automate.
For a solo entrepreneur, it should enable to get so much done before having to hire the first employee. Hence less risk to go bust, easier to take risks, pure value added.
I also think it won't be that hard to make it multiuser, that's a long-ago solved problem these days.
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."
Although to your point, it struggles to do anything with SQLite beyond a single user even when its architecturally not a problem
Do you spot any opportunities for new solutions in the real estate space these days?
But we had no issues as locking did exist.
The clipper management cam over to the UK to see us and other UK customers. They were shocked to find their small project was doing life critical things for medics and putting thousand of millions of pounds of trades through their code.
* How plug-and-play is compiling dBASE code in Clipper? Compiles and runs immediately, needs minor edits, or more work than that?
* How much of a speed improvement does compiling provide?
* How grateful were clients for the speed improvement?
Speed I can't rememeber (it was 40 years ago) then again the speed of a dbase etc program is limited by disk access
It was an internal system so no real comparison.
I do not think we converted much from dBase to Clipper, I assume the first programs did before I joined but by that time we had in house libraries etc.
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.
Sentences like the one you quoted seem to be deliberately attempting to create a hook that’s supposed to lure the reader into reading further to find out what, in this case, “that decides”. But when that deliberately manipulative style is jammed into every other sentence, the result is terrible.
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
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...
We didn't date for long, but I'd be curious to know how long that system ran.
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.
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.
I am not going to claim it is any good, it suffers from the same problem most rapid application toolkits have, the easy stuff is easier, the hard stuff is harder. I was playing around at one point to see if it was worth using as a graphical interface to a postgres database. And... it worked. But in the end I preferred writing web applications. As much as I hate web dev it was better than the RAD jank.
Here you go: https://visualdb.com There are many modern alternatives, in fact.
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.
Start one.
Has someone written on or otherwise worked on this?
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.
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.
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.
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.
[dead]
[deleted]
[dead]
I have just had a lot of very odd jobs which has taken me in a bunch of directions.
Vernor Vinge’s works have indeed had a huge impact on the way we think about things, and his immense insight is still extraordinary with every read.
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
EDIT: I looked it up. Causes an error in VFP 6.0 and earlier, but not in VFP >=7.0.
Pro-AI people now argue that the code is ephemeral nowadays, we should not look at it like we don't look at generated assembly (most of the devs). So in this regard, sharing only the "assembly" doesn't make sense, it's like sharing only the binaries and calling that open source (before LLM days).
But maybe it would be useful to have the related chats in the actual git commits that introduce the features. This way, if you (or the agent) `git bisect`s an issue, the same context that was used to construct the feature could be used for making the fix as well. I have never tried this approach, but it sounds like it could be useful.
It's slightly annoying that most (all?) harnesses store the chat logs in a db outside the project, and additionally e.g. OpenCode doesn't give the agent a direct way to access the complete current session context. So implementing this currently would be a bit hacky (find session by time? generate random string in context and find the session?).
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.
Since then everything became much more complex - networking, security, GUIs, web development, deployment, etc.
Successor - Visual FoxPro: https://en.wikipedia.org/wiki/Visual_FoxPro
Not a single language nowadays can do that
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.
- multisig approach: you can require multiple signers to sign a release for it to be accepted by downloaders. Protects against account compromise. Sigstore relies on OIDC, but this makes it often reliant on megacorps (and harder to self host, see next point)
- very easy to self host. You can deploy it internally without any problem, eg in an airgapped environment where you want to distribute signed artifact. This is impossible with Sigstore.
- accountless: the key is the identity. The multisig approach diminishes the problems that long-lived keys might bring. And you don't rely on an external OIDC provider to be able to sign.
- Air-gapped signers: it is possible to have air-gapped signers, as signing does not rely on an online service to verify an identity.
- easy for downloader: the use only has to provide the download url, and this is sufficient to authenticate the download.
- easy to audit: the backend data is stored in a git, that will be mirrored in different places, and anyone can mirror it for themselves.
You might agree or not with these choices, but there are enough differences to say that it doesn't reinvent the wheel, it's providing another approach which I think has its advantages.
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.)
Dead giveaway.
"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?
Take the time to ask for anything else.
No, it wasn't. The reason I even raised this bug to begin with was not because of some nefarious $BAD_COUNTRY hacker getting yer dataz from far away, it's because you have to worry about your own users first. I'd guess that any consultant doing the kind of work FoxPro excelled at (LOB apps) has found some clever boy or girl who discovered they can poke at DBF files directly. Long before internet connectivity was common, one still had to worry about your own coworkers futzing things up.
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.
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.
Is there any local/native application for which this is not true?
I’m not a FoxPro user and so maybe these are single-user/single-host installs, where the user can only destroy their own data, and permissions are a pretend feature. In which case, carry on.
A significant weakness?
A serious limitation for modern uses / in modern environments?
0: sort-of "is" rather than "was": https://blog.leafe.com/creativity-and-ai-models/
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.
---
[deleted]
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.
[deleted]
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.
I don’t think that’s true.
There's different needs for a permissions system.
You're thinking of it as "lock to the main entrance of a maximum security prison". Think of it more as a lock on a bedroom door: it's not there to withstand a SWAT assault, it's there to keep people from accidentally walking in.
All local applications (which were all applications in the era we are talking about) with permissions were sold to companies on the understanding that there was no real security.
Hell, even the networked products at the time had no real security :-/
The rub here is that FoxPro is an in-process database engine and accesses its data files with the security context of the user running the application. It doesn't have separation between the database engine and the UI like a client/server database would. Think of it like SQLite or BerkeleyDB.
Architecturally users who use the application need full read/write access to all the data files for FoxPro to work.
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.