6 ms·
to be fair to Microsoft, the terminal developers didn’t have a lot of experience with approaches like the one Casey used. Casey had 25+ years of game developme
by naikrovek 4y ago
to be fair to Microsoft, the terminal developers didn’t have a lot of experience with approaches like the one Casey used. Casey had 25+ years of game development experience to draw from, and the Windows Terminal team didn’t.
game development is an entirely different paradigm than enterprise software development; they aren’t really comparable, other than they both produce software which successfully executes.
in games, any code which does not directly contribute to the final product is not written, or is removed after it is not needed. in enterprise software, tens of thousands of lines of code are produced simply so the project layout is familiar for everyone working on it, because that’s important, somehow?
Casey was right to complain about the performance, and to show them how it should work. licensing it so that they couldn’t even look at it was both 100% intentional and 100% a dick move, and i will not credit him for that. that code could have been used as a wakeup call regarding performance for a lot of people within Microsoft, but he licensed it so they can’t even look at it.
perfomance of microsoft software isn’t great, i’ll agree. poking fun at them then hiding the code that was easy enough to write for him, but completely not obvious to the Windows Terminal team, doesn’t really make Casey the Software Quality Hero you’ve portrayed him as. Casey writes excellent software, don’t get me wrong. this particular example and series of events is not a high point in his career, to me.
- acrispino 4y agoIs releasing software for free under the GPL-2.0 a "dick move" ?
- naikrovek 4y ago> Is releasing software for free under the GPL-2.0 a "dick move" ? it is when you know that Microsoft employees are forbidden from looking at GPL code because they may unconsciously recall it and use it in a Microsoft codebase. Casey knew that at the time and admitted to licensing it GPL for that exact reason. That is a “dick move” to me. maybe i’m wrong. you be the judge, i guess.
- phenylene 4y agoAs you say, Casey is experienced and his code is valuable. MS should pay him if they want to look at his code! He said as much in his tweets… I mean, why should he be doing charity for MS by fixing their products for them?
- naikrovek 4y ago> Casey is experienced and his code is valuable. MS should pay him if they want to look at his code! He said as much in his tweets… I mean, why should he be doing charity for MS by fixing their products for them? so difficult that he wrote it so he could demonstrate how easy it is. he gladly showed the rest of us how to do it, and he intentionally took action which prevented anything he did from being used within Microsoft. Microsoft is so shitty because they don’t know [thing] so i’m going to show everyone but them how to do [thing]. he could have chosen to help. he chose to not help. he chose to complain and ridicule while intentionally avoiding doing anything to change the situation he was unhappy with.
- DrammBA 4y agoit's easy, so Microsoft should write it themselves or pay for it.
- naikrovek 4y agoand now you've justified all non-free software.
- yuzuquat 4y agoCasey did choose to help - explaining the issue and potential solution on github. It was only after his solution was dismissed, then catching the microsoft engineers using his solution and making a blog post about it that he complained.
- naikrovek 4y ago
- feoren 4y agoParaphrasing: "To be fair to one of the consistently largest software giants of the last 40 years, with nearly unlimited budget and a reputation for paying its software engineers well, they actually suck ass at writing software". You seem to roughly agree with this in your 3rd paragraph. Enterprise software is fucking awful despite spending an enormous amount of money on it, and that's because the developers and the development process and the SMEs and the managers and vice presidents are all fucking awful at their jobs. That's the reason. They're fucking shit-ass at making software. Just look at Microsoft Teams. This is not the defense you seem to think it is. Besides, we're not talking about enterprise software driven by bloat from the demand-side. We're talking about notepad and the console. Marketing and legal is stellar though.
- ClumsyPilot 4y ago> Enterprise software is fucking awful despite spending an enormous amount of money on it, and that's because the developers and the development process and the SMEs and the managers and vice presidents are all fucking awful at their jobs Enterprise software written 20 years ago still runs and works. I can still install it from an Msi package Half the android apps I bought 5 years ago don't exist any more. In Google they would have cancelled, closed, relaunched and cancelled again. Games are hit and miss, admittedly some run for decades. But above all, they dont care
- the_af 4y agoGames can avoid a lot of maintenance patterns that look like cruft simply because many games are fire and forget and not truly expected to have a long shelf life. PS: you wouldn't believe how many tries it took to get my phone to accept the word "cruft" instead of autocorrecting it to craft. Dammit!
- naikrovek 4y ago> This is not the defense you seem to think it is. it’s not a defense at all, it’s my whole point. enterprise software is absolutely lost, because following enormous sets of rules and enforcing those rules via management is FAR CHEAPER AND EASIER than hiring skilled people who don’t need those rules to produce good software. if that isn’t the very definition of bad management and business practices, i don’t know what is. enterprise software being a total shitshow is my point, because a shitshow is far better for shareholders in the short term. filling seats with dopes you hope to train is easy to measure. carefully harvesting the best talent is slow, expensive, and difficult to measure. microsoft does that. all large publicly traded companies optimize for short-term gain at the expense of long-term loss. game companies, the good ones, the smaller ones, don’t operate like that. there are shit managers there, too, but game companies attract the exact talent they need, almost by default. they care about what they create because not caring means bad reviews, low sales, no bonuses, and layoffs. the punishment for writing shit software at any enterprise company is continued employment, and at worst, an involuntary lateral move to another position where software quality does not matter. microsoft is an enterprise software developer. they are burdened with that management style just like a lot of our employers are.
- maxerickson 4y agoIt seems perfectly fair to expect Microsoft to throw resources at heavily used apps. "They don't have the experience to make it good" is pretty chickenshit.
- naikrovek 4y ago> It seems perfectly fair to expect Microsoft to throw resources at heavily used apps. yes it does seem perfectly fair, doesn’t it? it isn’t. the amount of work that needs to be done always outscales the ability to do the work, forcing prioritization. the Windows Terminal team is not large, and just throwing people at the team will not make it faster. > "They don't have the experience to make it good" is pretty chickenshit. you’re very unpleasant already. second sentence, calling me chickenshit. classy. how many people do you know who are capable of writing what Casey wrote in two weekends who also DON’T work on games full-time? i don’t know any people like that. so, where do you think those people go to work? on Windows Terminal? like that’s a common career path for someone like Casey? i would be absolutely flabbergasted if there were someone on the Windows Terminal team who knew how to do what Casey did before he did it. “Hey, come work on the command prompt” does not attract people who understand how to dynamically generate a texture atlas of code points and use that atlas to render a texture representing the console window contents 60/120/144/240 frames per second. the people that know how to do that are already spoken for.
- maxerickson 4y agoI didn't call you chickenshit, I called giving them leeway chickenshit (by synthesizing a statement that I thought roughly reflected the leeway). I have no idea who could match what, but Windows is just an utterly massive product, they have the resources to make the whole thing shine, even if people really don't want to work on it and need big bribes.
- jiggawatts 4y ago> i would be absolutely flabbergasted if there were someone on the Windows Terminal team who knew how to do what Casey did before he did it. THAT is precisely the problem! What Casey did was not some unique and special solution known only to dark wizards working on AAA game engines. It's an obvious solution that has been implemented many times before by many people for many systems. All green-screen and DOS-era terminals work this way, for example. Admittedly, I'm a former game engine developer, but I went into that career with essentially zero industry experience of any type. I just muddled my way through a C++ textbook and started writing a game engine. I needed a text console for my game engine, and I also needed to display Unicode text because we were targetting an international market. Completely naively I wrote a "text engine". It took about a week, and my solution was virtually identical to Casey's. The difference was that I was slower at implementing it, and Casey's is more feature complete, but the approach was identical. I didn't go to Hogwarts School for Game Development Wizardry. I just thought about the problem and applied the obvious solution. The difference between people like Casey and the Microsoft team is not necessarily aptitude, but attitude. The Microsoft team has no mechanical sympathy and no interest in quality. They made arguments not just along the lines of "this is impossible", but also "nobody needs this". Through every fibre of their being they believe that computers are slow and that this is fine.
- jiggawatts 4y ago> licensing it so that they couldn’t even look at it https://github.com/cmuratori/refterm/blob/main/LICENSE https://github.com/cmuratori/refterm/blob/main/LICENSE It’s just GPL 2.0, what are you talking about!? Are Microsoft employees vampires that will burn up instantly if they merely glance at GPL code or something? This is sour grapes nonsense from Microsoft. “We don’t like your tone so we won’t even dignify your argument by considering it.” At one point an MS employee said they would love to fix their code as suggested by Casey but he refused to even look at the YouTube video! “I would love to hear your arguments but I refuse to listen to the sound of your voice.” is next-level dismissive.
- Ygg2 4y ago> Are Microsoft employees vampires that will burn up instantly if they merely glance at GPL code or something? More like will legal drain life from developers if they hear they looked at GPL code. We had to switch DB drivers because legal didn't want to deal with GPL. Imagine writing code based on it...
- naikrovek 4y ago> just GPL 2.0 perhaps you are not familiar with what the GPL requires of its users, and how wildly incompatible that is with what a company like Microsoft does. Microsoft employees are forbidden from looking at GPL code (as well as other virally licensed code) because they may unwittingly reproduce some GPL code they saw in a large Microsoft codebase. If that happens, and they are taken to trial over it, and lose, that entire codebase is now GPL. This is enough of a risk to them that MS employees have computers which simply can not view GPL code. that is also why they would not watch the video; it isn’t about his voice, it is about the code visible on stream. additionally, watching a video of GPL code being written could be perceived as an attempt to circumvent the restrictions on viewing GPL code, and would likely get the viewer into trouble. you not already knowing this bothers me a lot, given all the things you’ve said in this discussion. you are making a lot of assumptions that are just not true and basing your opinions on the belief that those assumptions are true. this is very similar to why software at microsoft is as bad as it is generally; a lot of people assuming they know things they don’t know, and producing results which are more flawed than they needed to be.
- kragen 4y agoThey can totally look at it, but if they copy it into Windows Terminal, they need to relicense Windows Terminal under the GPL. That would be a great outcome for everyone. Microsoft is already shipping Linux under the GPL2 as WSL2 so this shouldn't be unthinkable. Also, though, it does not require 25+ years of game development experience to figure out that you can write a non-laggy terminal emulator, which should be obvious because people have been building non-laggy terminal emulators since at least 01974 and people routinely watch 1080p videos at 60 fps on modern laptops and even modern hand computers. We had terminal emulators with acceptable, even snappy, performance on X-Windows when I started using it in 01993. In 01994 I would commonly use an IRIS Indigo, which had a 150 MHz R4400, which was not superscalar, so it was maybe capable of 150 MIPS, or 300 MIPS if you count floating-point too. I preferred using it instead of the X terminals because it was faster. I'm typing this on an obsolete laptop whose CPU averages about 100 times faster than that. It's immediately obvious to the most casual observer that there is no excuse for software on this laptop to flub UI tasks the Indigo handled with ease. The VT50 https://en.wikipedia.org/wiki/VT50 https://en.wikipedia.org/wiki/VT50 was released in 01974, and its microprogram emulated a Teletype with added features. (See my comment at https://news.ycombinator.com/item?id=32547666 https://news.ycombinator.com/item?id=32547666.) A service manual for the 01975 version, the VT52, is at https://news.ycombinator.com/item?id=32547666 https://news.ycombinator.com/item?id=32547666. It had 60 frames per second (in the US), 240 scan lines per frame, 80 characters per scan line (at 15.36 kHz), and I think 8 pixels per character (in each scan line), one of which was always blank. So its output shift register ("VSR") operated at 9.8 MHz, or actually a little bit faster because of the 10-μs HBI, during which it checked the keyboard. Its microprogram, which had to load the appropriate 7 bits into the VSR 80 times per scan line (as well as processing escape sequences and printable characters during, I think, the VBI), had a 1.3 μs instruction cycle time (770 MHz), divided into 18 72-ns clock cycles (13.824 MHz) during which it did different things. So I think that in most 72-ns clock cycles about a couple of dozen flip-flops would change state. This laptop typically executes about 2400 CPU instructions in every 72-ns tick of the VT52's clock, 600 per core. You could compile an RTL-level logic simulation of the VT52 into C and compile it with a C compiler, and it would run faster than the original VT52. But that would be sort of stupid because you have a framebuffer and a GPU with texture-mapping units; your CPU doesn't actually have to generate pixels one at a time to keep the screen refreshed because you have hardware to do that for you. A 1920×1080 video at 60 frames per second is displaying 124 million new pixels per second, which it has to get by decoding H.264 or H.265 or something. That's a bit over 1.5 million VT52 characters per second. But when you're displaying characters on a terminal that isn't very useful because people can only read about 30 characters per second; even updating a full-page 80×66 display at 60 frames per second is only 0.3 million characters per second. In most cases the computation required to process a character is to verify that it's a printable plain ASCII character, update the screen image, and update the cursor position. Updating the screen image might involve blitting some texture data or, as in Muratori's refterm, updating a glyph index that gets consulted by a shader to figure out what texture data to draw when the time comes to render a frame. We're talking about an amount of computation that's small compared to a typical C subroutine call and return.
- the_af 4y ago> project layout is familiar for everyone working on it Surely you understand why something like this may be genuinely beneficial for application software even when it's not needed for games?
- naikrovek 4y agonot when it adds tens or hundreds of thousands of lines of code to a project, and makes understanding everything more difficult, because every single action the code takes is indirect and abstracted thrice. it's stupid.
- the_af 4y agoBut that's not making the project layout more familiar for maintainers. You are moving the goalposts.
- naikrovek 4y agohave you seen a large project grow ? it's all about organization so no one gets lost. none of it is needed if you have skilled developers, but skilled developers are expensive, so outside of silicon valley, companies hire shit developers and hope that they become semi-productive before their 5th anniversary. the result is very large projects because no one knows how to write code, and tons of unnecessary abstraction and boilerplate stuck onto EVERYTHING. just write what you need to solve the problem you need to solve, then stop.
- abigail95 4y agoCome on man, the fact he's able to use GPL2 to annoy you is your problem. Just stop hitting yourself. I will restate what many others have said here, Microsoft has used and interacted with GPL2 code longer than I have been alive. There is GPL2 licensed software in the Windows Store released by Microsoft. Microsoft is the one doing the "dick move" by requiring special permission for new GPL2 interaction. If Microsoft can interact with Linux, the biggest GPL2 project ever, they can interact with whatever Casey releases.
- naikrovek 4y agocome on, man, the windows Terminal repo includes code that ships with windows and is not the windows Terminal application itself. cmd.exe lives in that repo, for example, along with some of the structure which supports all command-line applications on windows. they can't adopt GPL in that repo and Microsoft has a very strong policy about segregation between developers who can read and write GPL code and those who cannot. those who cannot interact with GPL code get to work on stuff that ships with Windows, like the stuff in the Windows Terminal repo. so, no. they can't look at GPL code, including Casey's refterm code. Casey knew all of this when he chose the GPL for that project.
- ttybird2 4y agoWhat the repo contains should not be very relevant. Proprietary and GPLed software can be in the same repo/disk/etc. We even see this in the official git repo with non-free firmware. Instead the concern is about what code the terminal application ends up using and what it links with. If his terminal did not link to any weird stuff then it is probably the case that they could avoid it as well. Also don't forget that the GPL contains an exception for system libraries specifically. As for the segregation policy, it sounds like a self-imposed problem.
- Firmwarrior 4y agoThis argument is pointless. Microsoft doesn't need a YouTube video to teach its engineers how to do their jobs. They have tons of people in house who can code circles around any famous open source engineer, and who'd be happy to explain how to make cmd.exe great again internally Like others have said, there are organizational issues causing the company's output to be embarrassing trash. Personally, I blame the Ballmer years of "unregretted attrition", but that's just my pet theory as to how it became a dysfunctional bureaucratic treacherous pirate's den