6 ms·
I was one of the main engineers on Windows Forms circa 1998-2005. This blows my mind in so many ways.
by shawnb576 8y ago
I was one of the main engineers on Windows Forms circa 1998-2005. This blows my mind in so many ways.
- glenneroo 8y agoMust have been fun! Any interesting stories to share about that time period?
- Pxtl 8y agoCool! On the one hand I feel like we all deserve an apology, but on the other hand that's a massive system with the kind of developer-base we could only dream of. Seriously though, why were the fonts hard-coded to use ms sans serif instead of the OS default font (eg Segoe UI last time I checked?)
- fxfan 8y agoThat's such an insulting thing to say without really pointing out any substantial problems? I may hate their practices but their dev tools have always been absolutely top-notch within their (locked down) garden. No company has ever come anywhere close to emulating that, closed garden or not.
- Pxtl 8y agoGood-natured ribbing doesn't come over text, sadly. Seriously I have tremendous respect for anybody who works on a project that massive, I just meant it in the sense of "there are two kinds of languages, the kind people complain about and the kind nobody uses". Of course there were a lot of jagged edges in winforms (like the font thing) - I never used a GUI framework that didn't have any of those.
- shawnb576 8y agoHaha, nah it's all good. Honestly I'm shocked (shocked!) that I still see Winforms on resumes to this day. My real claim to fame is the VS Property Browser, which is System.Windows.Forms.PropertyGrid to this day. I love seeing new versions of VS and being like "yep, still there, that's m'baby". Lots of stories, here's some quickies: - Windows Forms was originally WFC from the Visual J++ project. Anders Hejlsberg was the architect as one of his first MS roles, working with him was a huge impact on my career. - The Winforms team was, I think the first team to ever use C#, which was called COOL (C-Like Obj Oriented Language). Before then we were using a Java-like language that ran on the CLR - The .NET Framework originated as a mash-up of the Winforms and ASP.NET teams, who were busy building frameworks separately for a while. - The .NET project was a boiled ocean - everything was new from the runtime (CLR) to the tool (VS.NET), and two languages (C#, VB.NET). We didn't have a working debugger until late in the cycle, everything was always on the floor. This might be an anti pattern. - I don't remember exactly what the story was with the font...20 years!... but my guess would be that it had to do with dealing with different versions of Windows and which fonts were installed.
- Pxtl 8y agoYeah, the boiled ocean was what impressed me about it. That was a monstrous amount of content for a 1.0 release. I was coming from a python and java background so I was used to "batteries included" but .net took that to the next level. The PropertyGrid was quite lovely. I dimly remember being envious of Visual Studio having that cool no-frills edit-my-object widget and it wasn't initially available as part of the forms lib, but iirc there was some trick you could do to use it... I tried once but gave up on the learning curve because it was so designed for object properties and I wanted to use it to manipulate a datarow. I assume it got a more line-of-business-developer version in its later incarnations.
- nurettin 8y agoAs a side note, not a .net pro, but I wish you came from a delphi background where component properties are searchable by focusing on a property input and pressing tab to go into name search mode instead of scrolling around. It feels like the feature was cut from VS and properties were sorted by name instead.
- BuckRogers 8y agoFirst, thank you for your service. You did an excellent job, really. WinForms is on my resume, and I'm proud to have it there. I love it, and consider it the gold standard for GUI development. I'm not the only one with this opinion.[0] WPF just came at the wrong time, as mobile was about to ascend and added complexity (which I'll admit can definitely add to correctness). Given hindsight, they should've just extended WinForms in some way. Leaving more complex needs than whatever that extension entailed to the Win32 API. UWP is fine and would be the greenfield target, but being Windows 10-only makes it a nonstarter at any enterprise I've worked at. So it's WPF/UWP that are essentially dead to me. Once Windows 7 is completely abandoned, I'll change my tune and stop promoting WinForms and go with UWP. But not today. I'm all about building out on WinForms, or while not a UI framework, Blazor. The latter of which is part of an application/UI rewrite that we're looking to do for a WinForms app that I maintain, once it hits 1.0. WinForms does the job and it allows me to almost entirely focus on the business logic. [0]https://sietch.net/ViewNewsItem.aspx?NewsItemID=271 https://sietch.net/ViewNewsItem.aspx?NewsItemID=271
- tomc1985 8y agoTalk about a back-handed compliment! WinForms is the original and best... and I think the only widget kit from it's generation still around and maintained
- pjmlp 8y agoActually Delphi VCL is older than WinForms and is still around as well, and much better because Delphi always compiled to native code, which was a disappointment for me that .NET didnßt follow the same model and only had NGEN a kind of approximation, given Anders being the main architect on .NET.
- shawnb576 8y agoAnders was primarily focused on C#. He contributed greatly to some of the pre-FX frameworks (WFC), but once the VJ++ injunction happened, MS was very focused on getting a modern language out into the world. The part that you are referencing was part of the CLR (nee COM+) organization. This native compilation didn't happen for a couple of reasons: 1. Serviceability - the idea was that we wanted to be able to roll out new assemblies with fixes (remember this was in the "oh shit" phase of security awareness at MS) 2. Optimizations - there was an idea that you wanted different JIT to happen based on end machine architecture, server vs client, etc. 3. Size - at this point the size of the resulting binaries (for distribution) was still a concern. At that point it seemed better to have fat frameworks updated by Windows Update, and smaller apps that depended on that. Many of these reasons seems less compelling now. MS was often a bubble in those days. I left in 2012 but it seems better now and it shows in their products.
- pjmlp 8y agoMany thanks to the insight how things went from inside Microsoft. I was there during the early days from the customer side, my employer was one of the selected MSFT Partners to get access to the pre-betas as a way to provide early feedback and be in the position to announce .NET based products on .NET 1.0 launch day. Still remember all the .NET early docs full of red paragraphs, WIP sections or big warnings that some areas were still in the process of being fully defined and subject to change. I always love to hear these stories.
- DaiPlusPlus 8y agoOff-topic: but why did they opt for Windowed (hWnd’d) controls for WinForms when VB6 seemed fine with windowless controls and while there are advantages to windowed-controls (e.g. getting the latest enhancements to Common Controls) it seems WinForms defaults to using older versions and still overrides things like painting events. Almost as if WinForms couldn’t tell if it wanted to be like AWT or more like WxWidgets.
- ygra 8y agoDidn't VB use windowed controls as well? I distinctly remember everything being a ThunderSomething when looking with Spy++.
- DaiPlusPlus 8y agoVB (1-6)’s “built-in” controls like Buttons and Checkboxes were windowless, most of the others were ActiveX controls which were windowed. This carried-over to VBA where some controls are windowless built-ins and the rest are ActiveX too.
- pjmlp 8y agoVB 1 - 4 used VBX controls implemented in C, only with VB 4 came the support for COM (aka ActiveX, aka subset from OLE 2.0).
- barrkel 8y agoButtons and check boxes weren't windowless that I recall. Generally anything that could take focus needed a hwnd. Labels, lines, pictures, those kinds of things could be windowless. And of course anything implemented in a vbx or ocx would need a window.
- barrkel 8y agoWinForms wanted to be more like VCL. That's what it most closely resembled. Common controls, especially shell controls, come in different versions of comctl32 etc. and have been versioned and dynamically selected in the basis of things like application manifests for backward compatibility reasons for a long time. https://docs.microsoft.com/en-us/windows/desktop/controls/common-control-versions https://docs.microsoft.com/en-us/windows/desktop/controls/co... API structures have different sizes so code usually needs to change to support later versions.
- zerr 8y agoMay I ask - where are you now? i.e. what do you do as a dev - did you switch to webdev/js?
- shawnb576 8y agoSure, I work at Uber on developer tooling