We all edit. Contribute to microsoft/edit development by creating an account on GitHub.
This is just a "because I wanted to" project. And I get that; done a lot of those myself just to understand what the hell was going on. But the rewrite of turbo vision into FPC and compiling to half a dozen targets has been around for 20 years. Turbo vision is probably the best text mode windowing library in existence. The cool fun kicks in when you can map a whole text screen to an array like so: var Screen: Array[1..80,1..25] Of Byte Absolute $B800; // or something like that as i recall
What turbo vision brought to the game was movable, (non) modal windows. Basically a lot of rewriting that array in a loop. Pretty snappy. I made a shitload of money with that library.
For those curious, here is a modern port of the C++ Turbo Vision that also supports Unicode:
You'll be surprised if I tell you several universities in India have not updated their curriculum in a very long time & Turbo C++ (& its non-standard C++ flavor) is the weapon of choice. The school board in the '00s, which preferred to teach a programming language for CS, used to have it curriculum around this C++ dialect. I have passed my high-school board examinations with this language (It was known to be already outdated in 2004. The smart kids knew the real C++ was programming by Visual Studio 6 ecosystem. But one had to still deal with it to clear the exams.)
Admitted, a few things have changed in last couple of years. MATLAB is being replaced by Python. Teaching 8085 & 8051 is being replaced by RasPi/Arduino. 8086 is taught alongside ARM & RISC, and not touted as SoTA.
I last saw Turbo being used in 2016-17 in a university setting, inside a DosBox (because Windows 7+ have dropped support for such old programs). Insane, but true.
> You'll be surprised if I tell you several universities in India have not updated their curriculum in a very long time
I once asked an Indian colleague why Indians use US/UK-nonstandard English like "kindly", "do the needful", and "revert".
He thought about it a minute, then said "Oh, the texts everyone uses to learn English say that proper letters must always begin with 'Kindly,'".
Sokath, his eyes uncovered.
Yeah, I also learned C++ via Turbo C++ in school in India in the early 2000s. Googling for "conio.h" shows Indians still talking about it in blogs and C/C++ forums as of 2024.
embrace. extend. deadend.
Nice. This editor could see a lot of use in such places if it gains developer-oriented features such as LSP, DAP and tree-sitter parsers. As a Rust-written editor, it will probably be quite a bit easier on resources than the usual modern choices which generally involve VSCode or Jetbeans plus language-specific plugins.
Core memory unlocked... When I was ~10-12, I asked my dad (who knew nothing but thought he knew everything about computers) how to make programs for Windows because I couldn't in QBasic. His answer was "with C++!". He came home with a book Learn C++ In 24 Hours that had Turbo C++ on a single 3.5" floppy disk. Naturally, that did not work, but I still had fun failing to compile every program I attempted to write.
OpenWatcom is the preferred choice of those still writing DOS applications, but there are those that still use Turbo C++ for the nostalgia.
Oh, a few years ago I wanted to write a simple program for dos. Since this is a Linux-only household otherwise, I was delighted to see OpenWatcom has a Linux port. I spent a good half hour trying to get a simple first version of the program I wanted to write running, but it always crashed right away. I simplified more and more until I basically arrived at hello world. On a hunch I ran the windows version of OpenWatcom with wine, and lo and behold, the program ran flawlessly! Once I googled that I found a couple of forum threads where people went like "yeah sure the Linux port produces broken binaries" because of course.
It's never the compiler until it's the compiler. Just didn't expect it during some simple fun coding at home. :)
I wish I was.
array[1..25, 1..80] of Word absolute $B800:0000.
Arrays in TP were laid out in row-major order, and each character was represented by two bytes, one denoting the character itself and the other the attributes (foreground/background color and blinking). So, even better, array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000.
Replace $B800 with $B000 for monochrome text display (mode 7), e.g., on the Hercules.
I'd love for an interface like that on VSCode that runs in a terminal even remotely.
I am curious about how you made money with it, if you don't mind sharing.
My first company out of uni was a company that sold a tv advertising application written in dos. It did all the reports, put together spot advert packages, measuring reach and frequency, cost per point, etc. Used Neilsen ratings for data. The company at the time paid commissions along with salary to programmers. The app still lives on in windows, but I've been out of that game for decades. Written in TP for dos, then Delphi for windows.
Honestly dude, this is clever. Good on you for finding an opportunity to make a useful tool and you made out like a bandit in the process. :)
That was the toolchain that my company used. Turbo vision was a Borland product, back when Philippe Khan was running the company. We were that ahead of the curve for "shrinkwrapped software development" at the time. That legacy, Delphi and FPC still maintain the standard for desktop, native dev, really for the last 30 years.
The broadcast industry continues to move at a slow pace compared to IT, and understandably - it's live TV, you need things to work 24/7/365.
That means there's always an opportunity for the resourceful.
> This is just a "because I wanted to" project.
It's not. They needed a small TUI editor that was bundled with Windows and worked over ssh.
Well, I don't have the rights to bundle anything with windows, nor would I want to. All you'd need is a thin player to reproduce a TUI screen if done in FPC, and it wouldn't be limited to Windows. All I'm suggesting is we tend to have some recency prejudice in our development, even when it costs more time/money than it should. I'm sure I've done the same over the years.
Every time I see a new modern TUI framework, my disappointment is the same: "Oh. This isn't as good as Turbo Vision."
I always thought Charm was pretty robust as far as TUI tools go[0]
[0]: https://charm.sh/
Turbo Vision was truly immersive. I used it in Turbo C and also in Paradox 4.5.
So good.
Funny how something that ran in a tiny box on a 386 could feel more responsive than some modern GUIs. Turbo Vision really nailed the basics.
I swear the characters appear on the screen before I press the keys when I'm in a real (not emulated) Linux terminal. I can't feel the lag as I'm typing this comment into a basic textarea, but it's clearly there, because a terminal feels magical.
Meanwhile, they forced AI Copilot bloat into Notepad, whose singular use-case was supposed to be that it does one thing well without unnecessary features.
Unfortunately, the new Edit isn't safe from such decisions.
While Satya might have made the change Microsoft <3 FOSS, the Gates/Balmer era was much better towards Windows developers.
Now we have a schizophrenia of Web and Desktop frameworks, and themselves hardly use them, what used to be a comfortable VS wizard, or plugin, now is e.g. a CLI tool that dumps an Excel file, showing that newer blood has hardly any Windows development culture, or their upper management.
I don't know how many people don't know this, but now you actually can't release app on Windows without it showing your warning while installing unless you sign it with EV certificates, which cost upwards of 500$ for a year.
As you may have guessed, this simply pushes out smaller devs. This used to NOT be like this. It should NOT be like this.
I would highly recommend looking into Azure code signing. It is confusing to set up. But comes with instant reputation and ”only” costs 10$ a month.
EV certificates has always felt like an utter scam and extortion to me. At least now there is an alternative.
Good. This might suck for opensource devs, but for normies that might get a random exe link this is good. I've gotten numerous phone calls from relatives when they try to run some unrecognized app, most of the time is benign, but on few occasions it was something malicious.
It's a heavy tax to protect the ignorant. I hear things like this and think how I've been using a computer for nearly 4 decades and it's never once happened to me. Maybe those types of people need to re-evaluate their technology choices (maybe iPad is more appropriate) instead of taxing the entire ecosystem to protect them from themselves.
low income countries don't have the money for iPads. My parents run on a 300 Euro computer bought 5 years ago. My dad is technical enough to get around a computer, but he's in his 60s now. My mom can open Facebook and youtube. Sometimes either of them downloads stuff, and opens them. So your solution is "make millions consumers spend $$ on overpriced hardware and even more closed off system, so few hundred open source devs don't spend 500$ to verify their app (which they will have to do if they want to release on the iOS platform either way)" Ain't no way.
If you count the number of ignorant people who use Windows versus the people like you, you'll quickly realize the tax is very cheap for the level of protection it offers to the number of people it offers it to.
The correct answer should be a legally-mandated one-time escape hatch.
Bury it as deep as Microsoft wants, but...
1) Everyone can use it
2) It turns off all nanny-checks
3) It makes future checks opt-in instead of opt-out
A popup warning is not a heavy tax.
> Good. This might suck for opensource devs, but for normies that might get a random exe link this is good
That random exe link is signed by Microsoft.
Unfortunately Apple normalised it, first with the iPhone. There are upsides (theoretically - less trash apps), but the review/curation process doesn't scale, and yep - the small devs are effectively told to bug off.
10 years ago I wanted to build a Love2D game, and release it for the three major OS's. The .love files are effectively ZIP archives, kinda like cartridges, but you need the correct Love2D version (they broke API compat every year or so). Windows and Mac used to be: "cat love.exe game.zip > game.exe".
Linux gave me the most crap, because making a portable, semi-static build was a nightmare; you couldn't rely on distros because each one shipped a different version of love.
Now Linux is actually becoming more viable, not because it's making that much progress, but because the two mainstream platforms are taking steps back.
At least signing is free for MacOS apps. And back when I used it only $100/year for iPhone apps.
... where is signing free for macOS apps?
You can use an ad-hoc signature to sign, but people who download the app will still have to jump through hoops to run it.
Now I get why a project I work on is signed for Apple and not for Windows... 5x the price, jeez
There are currently no ideal native app development frameworks on Windows. WinForms is the closest thing
I'm so glad to hear that from someone unprompted. I tried WPF and it was a million times harder to use than WinForms, and I couldn't even be bothered to try out MAUI (although I accept it as an apology for WPF lol). I'm still using a WinForms application every day (Git Extensions) and have been able to contribute to it not least because it's the good old familiar WinForms.
This is not to say that WinForms isn't without its problems. I often wonder what it could be like if all the effort of making WPF and MAUI had gone into maintaining, modernizing and improving it.
I think that the native GUI development APIs provided by OS vendors need a kind of "headless" implementation first, where you can build UI in pure code like winforms, and then they should offer a framework on top of that. I, personally, hate XAML. It's stricter than HTML/CSS and very opinionated about how to organize your application. I feel that XAML frameworks should have a common Winforms-like API behind them that you can switch to any time you want. But I've found that using the C# code-behind APIs manually for WPF, UWP, MAUI, etc, is far more verbose than Winforms was.
My only major problem with winforms is that it's still using GDI under the hood which, despite what many people believe, is actually still primarily software-rendered. If they could just swap out Winforms for Direct2D under the hood (or at least allow a client hint at startup to say "prefer Direct2D") it would really bring new life to Winforms, I think.
I would also like a C++ native GUI API that's more modern than MFC
"C# Markup" [1] [2] sounds a lot like what you are looking for. As the only "second party" option in this space it's interesting that it is so MAUI only/MAUI focused, but I suppose that's the "new hotness".
There have been similar F# libraries and third-party C# libraries for a while that seem nice to work with in similar ways.
[1] https://learn.microsoft.com/en-us/windows/apps/windows-dotne...
Unfortunately that is something Microsoft seems incapable of.
MFC was already relatively bad versus OWL. Borland[0] kept improving it with VCL and nowadays FireMonkey.
There there is Qt as well.
Microsoft instead came up with ATL, and when they finally had something that could rival C++ Builder, with C++/CX, a small group managed to replace it with C++/WinRT because they didn't like extensions, the irony.
With complete lack of respect for paying customers, as C++/WinRT never ever had the same Visual Studio tooling experience as C++/CX.
Nowadays it is in maintenance, stuck in C++17, working just good enough for WinUI 3.0 and WinAppSDK implementation work, and the riot group is having fun with Rust's Windows bindings.
So don't expect anything good coming from Microsoft in regards to modern C++ GUI frameworks.
[0] - Yes nowadays others are at the steering wheel.
Borland was pretty good on the GUI front, I think we're forgetting how easy it was to get something rolling in Delphi. It's baffling Microsoft still hasn't gotten their stuff together on this. They've been just releasing new frameworks since the WinRT era and hoping something sticks.
Microsoft's GUI problem is two-fold.
Firstly, that nobody believes them when they swear that {new GUI framework} will be the future and used for everything. Really. Because this time is not like those other times.
Secondly, pre-release user feedback. Ironic, given other parts of Microsoft do feedback well.
Imho, the only way MS is going to truly displace WinForms at this point is to launch a 5-year project, developed in the open, and guided in part by their community instead of internally.
And toss a sweetener in, like free app signing or something.
Agreed it is the easiest, however it is also possible to use WPF on the same style as Forms, with more features, no need to go crazy with MVVM, stay with plain code behind.
Having said this, from 3rd parties, Avalonia is probably the best option.
While I think Uno is great as well, they lose a bit by betting on WinUI as foundation on Windows, and that has been only disappointment after disappointment since Project Reunion.
We spent the better part of a calendar year researching what framework to update our MFC app to. We really liked the idea of staying first-party since our UI is explicitly Windows-only, and we looked at every framework - MAUI, winforms or WPF with a C# layer, WinUI3...
It quickly became apparent that WinUI3 was the only one even close to viable for our use case, and we tried getting a basic prototype running with out legacy backend code. We kept running into dealbreakers we hoped would be addressed in the alleged future releases, like the lack of tables, or the baffling lack of a GUI UI designer (like every other previous Win framework).
...We're currently writing our GUI in Qt.
The new Edit.exe is indeed safe from those things.
A requirement for the tool is that it must remain as small as possible, so that it can be included in the smallest distributions of Windows, like Nano Server. It is the rescue text editor there.
I’m sure plugins are going to do all the things that everyone doesn’t want (or does want) but the default edit.exe will remain small, I’d bet money on it.
I recall reading Raymond Chen mentioning that Notepad actually gets more exercise than you'd expect; it's a common guinea pig for features: https://devblogs.microsoft.com/oldnewthing/20180521-00/?p=98...
I took a screenshot and pasted it into the new Win11 Paint. Even minimized, Paint was constantly using 5% CPU and sitting at ~250MB of RAM. I guess I can begrudgingly get over the RAM, but squandering the CPU like that is ridiculous.
What happened to pride or quality control or anything?
>What happened to pride or quality control or anything?
Sounds like some dangerous cowboy coding wrongthink you've got going on over there.
I assume it is basically an Electron app now. Anything will be bloated when it's a full web browser running some webapp.
No, it doesn't use Electron or webviews afaik. The UI is mostly WinUI2/UWP/XAML Islands based however
> What happened to pride or quality control or anything?
We are talking about Microsoft here.
It sucks so much - my ISP had an intermittent outage (some IPv4 / MTU issues), and I couldn't save files in Notepad without disabling it.
I was literally trying to configure Wireguard to get around the ISP issues.
And if you uninstall the modern notepad, start's search doesn't find the old one.
As if start's search ever found anything...
I stopped using Notepad since they introduced tabs.
Thank you for this!
I had to open Notepad and see it for myself. Wow! I see the Icon.
I remember Co-pilot just suddenly appearing in my taskbar and finding it annoying. Despite removing it, I still see it lurking around... and now I see it is a SIMPLE TEXT EDITING PROGRAM named Notepad.
Wow.
Every product has bizarre bloat. I understand things might get heavier over time with new features, but Office from like 20 years ago still works pretty great. In fact, I don’t even really see any new features that are missing in my normal use case. Actually, anything that DOES exist in a newer version is something I actively DO NOT want. For example, monthly/yearly subscriptions, popups that interrupt typing to advertise some new bloat, and dedicated buttons to import any file into a powerpoint presentation or email.
Look at Outlook. Literally less than 25% of the screen appears to be dedicated to email content. I say literally because I physically measured it and from what I remember it was 18% to 20%. Microsoft keeps adding these gigantic toolbars that each have duplicate buttons that often can’t really be adjusted, removed, or hidden. Or it may be an all-or-nothing scenario where something can be removed but then you can’t e.g. send emails.
Rather than fixing the problem, the solution is to add a new toolbar. This frequently keeps happening. Just one more toolbar with a select subset of buttons in one place so people can find it. Well now… We have some extra whitespace… Let’s throw in the weather there and why not put the news in too. What could possibly go wrong?
And then loading the news, some totally unrelated and non-critical feature they shove in forcefully by default frequently has at least one critical severe bug where there’s an async fetch process that spikes the cpu to max and crashes the whole system. There’s no way to disable news without first loading outlook and going into advanced settings, which of course is past the critical point of the news being loaded.
Go look at like Outlook 2003. It is nearly perfect. It’s clean, simple, and there’s no distractions. This is so amazing, like many Microsoft products that seem to be built by engineers, but I don’t know how we get to modern outlook that feels like it has 10 to 50 separate project manager teams bloating it up often with duplicate functionality.
This would be bad enough, but then again instead of fixing it like I said before or fixing it by reducing or consolidating teams or product work, we get ANOTHER layer of Microsoft bloat by having multiple versions of the same product. So we have Outlook (legacy) named that way to make you feel bad for using an old version, or named to scare you into believing it won’t be supported. Then there’s Outlook (New). Then there’s Outlook (Classic) which isn’t legacy or new but is a weird mix of things. Then there’s a web version that they try to force everybody into because it’s literally perfect and there’s no reason not to use it… Somehow they didn’t catch that emails don’t load in folders unless you click into them, or sorting rules don’t work the same or don’t support all the same conditions. Rather than fixing it, you get attacked for using edge case frivilous advanced obscure functionality. Like who would want to have emails pre-sorted into any folder except inbox? Shame on you for using email wrong I guess.
I’ll skip over the part where there’s multiple versions of the multiple forks of outlook. But there’s also Government, Education, Student, Trial, Free, Standard, Pro, Business, Business pro, Business premium, etc.
The last infuriating point in my rant has to come down to their naming standards. For some reason they keep renaming something old to a completely new name and of all the names they could pick, it’s not only something that already exists but it’s another Microsoft product. This is a nightmare trying to explain to somebody who is only familiar or aware of either the old or the new name and this confusion is often mixed even on a technically capable and competent team. For bonus points, the name has to be something generic. Even like “Windows” which is not a great example because the operating system is so popular but you can imagine similarly named things causing search confusion. Or even imagine trying to search for the GUI box thing that displays files in a folder within the operating system, also called a window, and try to imagine debugging an obscure technical problem about that while getting relevant information.
There’s so many Microsoft moments that things like adding AI to notepad hardly phase me anymore. I don’t like that they do that but I wouldn’t necessarily be so offended if their own description they came up with in the first place was what you mentioned. Constantly going against their own information they invented themselves and chose to state as a core statement just irritates me.
Since you mentioned Outlook.. at work we use Outlook 2019 and its exactly like you mention.
The user interface is littered with useless crap, the File menu goes back to this weird completely new different UI layout etc etc.
And the best part is that if the VPN goes temporarily down it fails to send/receive new emails until it has been restarted.
Let me say that again.
It fails at its core functionality if there's a glitch in the network and cannot send or receive emails. That's just a next level of incompetence.
Apparently you weren't there when Lync^H^H^H^HSkype for Business would retry an incorrect password infinitely, until it locked a user account.
Yes, even when running on an unconnected session on a Windows server/VDI somewhere.
> The last infuriating point in my rant has to come down to their naming standards. For some reason they keep renaming something old to a completely new name and of all the names they could pick, it’s not only something that already exists but it’s another Microsoft product.
Microsoft has seemingly sucked at naming things since at least the mid-90s. It's effectively un-search-engine-able, but I recall that in the anti-trust action in the mid-90s a Microsoft person was trying to answer questions about "Internet Explorer" versus "Explorer" (as-in "Windows Explorer", as in the shell UI) and it was a confusing jumble. Their answers kept coming back to calling things "an explorer". It made very little sense. Years later, and after much exposure to Microsoft products, it occurred to me that "explorer" was an early 90s Microsoft-ism for "thing that lets you browse thru collections of stuff" (much like "wizards" being step-by-step guided processes to operate a program).
Also, playing-back my "greatest hits" comment re: Microsoft product naming: https://news.ycombinator.com/item?id=40419292
I just googled some screenshots of outlook 2003 and I felt peace.
So much excitement that this got posted 3 times in a week
1. By the author - https://news.ycombinator.com/item?id=44034961 2. Ubuntu Publication - https://news.ycombinator.com/item?id=44306892
And this post.
There is also this: https://news.ycombinator.com/item?id=44341462