Besides that, there isn't actually obvious different between firefox/chrome/edge on macos/windows.
The most problematic one is actually safari(which is on mac only). If you dev on chrome and use on firefox or vise versus. You usually get a "mostly work with minor visual different". But safari… will give you a fail and are't even usable. It is outright the modern age ie.
Doesn't sound sexy, no. Compensate them royaly. And make clear that they are superstars just by having this work environment. Then keep listening to what annoys them with whatever you are building, and let them fix it.
That, however, is bound to happen even if you have Windows workstations. It happened at a job where I was, in fact, running Windows, because the designer ran macOS and was oblivious to this issue. (Of course, I would fix it when spotted. But it still managed to make it out to prod at times.)
Or, leave the default settings in place, but plug in a mouse with a physical scroll wheel.
So it's not even that they're only using one platform, but they're only testing the platform with default settings with the default hardware. And we're not even talking about an obscure setting buried three levels deep, it's right there in the general pane!
sudo defaults write -g AppleShowScrollBars -string Always
I include this as part of my setup script for any new Mac.But I also place the blame on design teams. Most design teams I've worked with also doesn't account for this in anything they create. They usually only design for: 1: the latest macbook pro; and 2: the latest iPhone.
I'll give you a point on VMs but it's cumbersome. There's a big difference between rolling to another machine or asking someone in the department who uses that machine every day and waiting for a VM to finish booting or using a service like Browserstack (and both cost $$ anyway).
Screen readers are not consistent across platforms, and things that work on Windows sometimes don't work on other platforms, and vice versa.
If that was not enough, I believe the CI runner is written in the Go programming language, which has a surprisingly decent abstraction of OS functionality in it's standard library. Imperfect as it may be, I suspect that helps reduce the amount of effort needed to ensure individual platforms work properly.
Maybe with a Windows VM.
The prohibition on developer laptops is not just a trivial or nitpicky detail; while the security of a VM obviously still matters, as you can't simply assume that malicious software in the VM can't escape, I would assume that the policy effectively means it would also be prohibited to setup a Linux dom0 and just run Windows under that and use it as your developer workspace. The benefit of only using Windows for testing is that you presumably won't be reading emails, talking on team chat, taking video calls, opening documents, etc. inside of Windows, only doing the thing you actually need (testing.) From a security standpoint, this can be helpful. I think that Windows vs Linux security is a rabbit hole not worth debating; both are very flawed and have many challenges, nothing is a panacea. However, I would say that every OS you don't need to harden is a huge operational advantage no matter how you slice it. You effectively cut off an entire slice of the malware market, and easily the largest slice in case of Windows.
So if, for example, you are a UX dev and need to test your CSS on Edge, they have a process that allows you to do that.
And it's not "just a bit of money", Microsoft's enterprise product licensing is truly onerous. It's almost a career unto itself just to make sense of it, and it requires a non-trivial amount of infrastructure to support.
Work computer != target machine
For about 20 years, I've not developed anything at work that runs on the work computer that is used for doing the development, documention, e-mailing and whatnot.
The browser is wired into the OS in real ways, and they matter. Everything from "How does the os manage passwords" or "how are system notifications presented" or "How much screen real estate do I have have on a given window size (scrollbars...)" to subtle differences in how the network stack behaves, or how windows are rendered.
Hell, I can list about 20 differences just off the top of my head - and a damn good part of that is because I've been forced to pay attention to each of those platforms. Which clearly you have not...
I read your comment as "I only use a mac, and I don't understand".
Overall i'm pretty sure that "list about 20 differences" is relevant in some cases/procucts/websites, but not for gitlab - they just proved that by disallowing working on Windows (which wouldn't disallow testing on a VM).
But here's the important question: are the problems that are caused by ignoring the aforementioned differences enough to prevent people from being able to use your software? Or, conversely, are they enough to weigh more heavily than the functionality that you provide for your users?
Because somehow even Electron based software is pretty popular in the desktop, oftentimes looking and feeling rather different from most of the native software. But apart from nitpicks and rightfully complaining about those annoying inconsistencies, does it really matter enough to spend resources towards fixing them?
I can't think of that many inconsistencies that caused web applications to be unusable across different platforms altogether, apart from IE not supporting certain JavaScript functionality back in the day and non-transpiled (to say, ES5) codebases breaking altogether. But look and feel related things have hardly been as important.
For example, we ran into a difference between Chrome on Linux vs Chrome on macOS where it turns out that on macOS, if you right-click on a link (to open a context menu) it selects the text of the link, while on Linux it does no such thing. Initially we'd tested on only one platform because we assumed they'd behave the same, and this difference resulted in buggy behavior on the untested platform.
I've seen more than once a mac design use some font in a light weight that comes across almost invisible on Windows. I'm the only windows guy at our shop and "everyone has access to windows VMs to test" (lol)
Outside of that, now that Edge is on Chromium most of our edge cases seem to be Safari these days (everyone uses chrome/firefox except a couple management using Safari).
Which all in all I guess is a testament to our lack of full browser testing :)
¯\_(ツ)_/¯
In fact, if you paste text into GitLab's "Web IDE" in a windows browser, the results are (or at least used to be? We stopped using it because of that) horrible to the max. Of course with the added nuance that copy-pasting a word vs. a paragraph vs. an entire file produced vastly different results, too. That one was fun to figure out.
All company laptops must have windows, anything else needs to be vetted by the IT admin.
Now that the Edge browser works fine on Linux, there's really no need for all these licenses, and someone needs to start to break the unhealthy dependency every company has on Active Directory.
This sounds to refer explicitly to using interim personal laptops until departmental hardware is issued formally (which, as I understood it, may then run windows).
Did I misread?
instead, invest in:
- real automated testing (to the extent technically and economically feasible). One hack is to get customers and partners to fund it, then leverage outsourcing.
- feedback from users - make it easy, streamline responses, setup escalation. Understand that you can't nail down everything and quickly triage issues. Scale the team so at least you can do the triage.
I've been down the whole "we'll just test it in a vm" path, and it works... if by works you mean you get a happy path test every once in a while, and devs make sure the automated tests pass.
It doesn't instill the same level of care and attention that daily use gives. Dog-fooding is not a joke. It's genuinely hard to make a decent UI for a platform if you're not using that UI often, and in real situations.
I've literally gone as far as making devs switch device personas over time on my mobile teams. They get an assigned device from our test pool for the sprint from a list like
- High end stock android device with large screen
- High end stock android device with small screen
- High end Samsung ROM device with large screen
- High end Samsung ROM device with small screen
- Mid tier stock android device with large screen
- Mid tier stock android device with small screen
- Mid tier Samsung ROM device with large screen
etc... down to the devices no dev wants at all, like
- Amazon Kindle Fire default
- Amazon Kindle Fire kids
and they do all their dev/testing/use on it.
It works fucking wonders in suddenly making them care about things that were previously just "meh" problems. Two weeks stewing in their own problems on a device they were ignoring is one hell of an incentive.
Making IT's life _vastly harder_ to allow employees to maybe use Windows and see a solution the testing team didn't see is not a good trade-off.
That's not even going into how, exactly, Windows is going to make anyone's life better than using a Mac. Realistically, they're at least at parity.
The trade-off here is "make every IT support and supply line more filled with friction" to gain "people can use Windows if they'd really prefer, instead of Mac or Linux". That's a terrible trade-off, and GitLab is making good decisions.
In my company I am dealing with buying laptops for new hires - there is no way I am buying laptop with Windows Home edition.
That is problem with explaining people that they should buy laptop with Windows Professional. Whatever the cost is - company is paying. New hires are shy to expense company THAT is the problem.
So I think problem is that people try to buy cheapest laptop they can to "be cheap".
If my company would be on scale of GitLab I probably would not be able to control that but I am specifically buying laptops via my manager - and there is no way we would buy Windows Home laptop.
They probably have some Windows machines at Gitlab for verifying the experience of Gitlab users/customers who use Windows.
I imagine a developer doing that would have a dedicated Windows machine, or possibly a guest VM, for that activity.
How many engineers have you worked with that ONLY worked in Windows, and did it better than anyone else...?
It's just a filter.
Git for windows is also notoriously different when it comes to edge cases, so in Gitlabs place I‘d be absolutely happy to have developers that use that OS as a daily driver.
What are they going to test on Windows? It's a web platform that runs on a Linux server... And Rails is kinda annoying to develop on using Windows, you definitely won't put it on a Windows server, what's the point?
If nothing else - what's not used is not tested. And if you expect any real population of users to be using Windows machines with your products, you should have developers/PMs/QA/support interacting with your products using Windows machines.
I see this as: We're saving a bit of money and making ITs life easier, and in exchange users will get a worse product.
Realistically - that's a bad trade. It is almost never the right decision to prioritize IT quality of life over basically any other business need.