The Torvalds Situation

This is old news to some, but it’s still something I wanted to write about. Linus Torvalds, the Linux kernel creator and project manager, has stepped aside (temporarily) to work on his attitude, which is acerbic and awful. Spewing expletives and insults at anyone who dares to work on the kernel. At first, it wasn’t understood why Torvalds chose this moment to take a break.

Noam Cohen has the scoop for The New Yorker:

Torvalds’s decision to step aside came after The New Yorker asked him a series of questions about his conduct for a story on complaints about his abusive behavior discouraging women from working as Linux-kernel programmers. In a response to The New Yorker, Torvalds said, “I am very proud of the Linux code that I invented and the impact it has had on the world. I am not, however, always proud of my inability to communicate well with others—this is a lifelong struggle for me. To anyone whose feelings I have hurt, I am deeply sorry.”

It shouldn’t take a journalist looking into your attitude for some self-reflection to happen, but I’m pretty happy that this acknowledgement is happening at all.

Torvalds’ shitty attitude of non-conformity to being a good person was infectious, it helped encourage a younger Jack Slater to be a bad leader for the ioquake3 project in the IRC channel and on the mailing list. I thought this attitude made for a good leader, it had the opposite effect. Being an asshole only brought in other assholes and a few extremely great people who helped me change as a leader.

Other “open source” leaders like Eric S. Raymond have already been found to be complete shitbergs blocking the flow of progress, at least Torvalds had enough sense to step aside and try to change.

It is decades past time for better leadership in open source and free software. Bring out the open-source 3D printed ultra mega guillotine for the leaders who refuse to step-aside or change.

Cheese’s Thoughts on Steam Play (Proton)

Josh “Cheese” has a ton of thoughts on the latest developments with Valve’s Proton Windows pretendulation software for Linux gaming through Steam. Cheese is always good reading, but he provides some especially useful historical context for this conversation.

I am still extremely concerned for where Linux gaming is going with Valve-controlled pretendulation as the default mode for new and old games, instead of native ports. It isn’t something many people playing those games will care about, if the pretendulation is good enough for them.

Windows Pretendulation Is Bad Even When Valve Does It

Valve’s Pierre-Loup A. Griffais announced that they’re including their brand new fork of the WINE Windows pretendulator in a new beta product for Steam. They call it Proton. WINE is an open-source Windows API emulation layer that lets Linux users play Windows games without rebooting into Windows. I call this process “pretendulation” because it isn’t emulating the entire operating system, but it is still far from native.

That sounds good, more games for Linux, right?

Well, when I started writing about Linux gaming 18 years ago there was a commercial, closed-source, fork of WINE called WineX. WineX had a lot of fans, it was developed by people who had been working on Wine, which was a more generalized product for Windows software, to target game software. These developers of WineX (later called Cedega) did a good job at writing the software, but it had a number of issues.

One of those WineX issues was that Windows compatibility is a moving target. Any progress the WineX developers made to support new versions of Microsoft’s DirectX game software programming interface were usually still years behind where modern games were. If the latest Battlefield game came out and it only worked with DirectX 8 and WineX was still on 6 or 7, it was going to be a while until they could support that new game.

Even though new DirectX versions are less of a headlining feature in Windows these days, compatibility with a wide range of games is going to be a problem for Valve’s Proton as well. 

Any emulation, or translation, layer, is also going to introduce some amount of performance overhead. You can’t emulate a PlayStation 3 or Dreamcast at full speed on a lot of expensive computers today, but you can buy the original console for $50 that plays those games perfectly. The same issue happens with emulating Windows APIs under Linux. Some games will only have a very small hit to performance, but others might be more of a problem and you won’t get the same framerate that you do under Windows.

So there are compatibility and performance issues, that’s it, right? Nope, there’s one more technical hurdle. When something breaks, you’re not going to know if it’s the game or the emulation layer. I imagine this will infuriate some developers.

Valve claims that games they’ve tested and whitelisted in this beta have an almost identical gameplay experience to Windows, and they acknowledge the performance overhead. Valve doesn’t acknowledge the negative effect this will have on real native ports of games. Back in those WineX days there were some developers and publishers who cancelled their plans for native Linux ports because Windows pretendulation was “good enough” for them, even when Wine or WineX didn’t provide a great experience for players.

“Good enough” Windows API emulation eventually turned into developers porting their games with Wine wrapped up into a library, giving Linux players some of the half-assed ports they have today.

One additional issue that wasn’t a problem with WineX, these improvements to Wine are only designed to work with games on Steam. You won’t be playing Battlefield  5 with Proton. Although Valve’s fork of Wine is open-source, unlike the old WineX fork which had its source closed behind an agreement that the executives at Transgaming later deleted and refused to acknowledge.

Proton is an interesting technology, but a bad thing for anyone who loves Linux gaming and wants native ports of games brought to Linux.

Microsoft’s Surface Go Sounded Interesting

Microsoft’s smaller, cheaper, version of the Surface sounded pretty interesting if you ponied up for something better than the base model. Unfortunately the performance is extremely limited for a device running Windows 10. Mashable’s Raymond Wong titled his review “…Barely better than a netbook” and had this to say about the performance:

This Pentium chip is significantly slower than the Intel Core m3 chip inside of the entry-level Surface Pro. Microsoft touts 33 percent faster graphics than a Intel Core i5-powered Surface Pro 3 and 20 percent faster graphics performance than Core i7-powered Surface Pro 3, but honestly, none of these figures really matter because the Surface Go chokes up fast under even light usage.

[…]

…the slowness is noticeable all throughout Windows 10 on the Surface Go. There’s lag when opening photos. There’s lag when launching apps. There’s even lag when opening up the settings to change the desktop wallpaper. Even on my higher-spec’d Surface Go review unit with 8GB of RAM, the slowdown was too real.

I had briefly considered that the Surface Go might be a good replacement for the iPad Mini I sold recently. Even after reading some more charitable reviews, the Surface Go doesn’t seem like a good choice anymore.

It’s a good thing that Microsoft is still working on devices like this, they were ahead of the tablet game years before Apple’s iPad was released, and even as a failure these Microsoft tablets provide a valuable look at what the future of computing could be. Large touch devices are so damn close to being good laptop replacements.

iFixit Says The 2018 MacBook Pro Keyboard Might be Fixed

The ongoing saga of the unreliable MacBook Pro keyboard continues. According to Sam Lionheart for iFixIt the new 2018 MacBook Pro 13″ and 15″ keyboard has a new silicone barrier that:

…is quite obviously an ingress-proofing measure to cover up the mechanism from the daily onslaught of microscopic dust. Not—to our eyes—a silencing measure. In fact, Apple has a patent for this exact tech designed to “prevent and/or alleviate contaminant ingress.”

Apple Updated the Unreliable MacBook Pro

The Terrible Keyboard Got a Slight Update

Apple invited some journalists to see new MacBook Pro laptops, they have newer and faster chipsets and processors with more RAM as an option, but didn’t talk about reliability. Dieter Bohn:

…it’s just hard to trust a keyboard after so many reports that it can be rendered inoperable by a grain of sand and that is incredibly difficult and expensive to repair or replace. This new third-generation keyboard wasn’t designed to solve those issues, Apple says. In fact, company representatives strenuously insisted that the keyboard issues have only affected a tiny, tiny fraction of its user base. (There’s now a four-year repair program for the keyboard in case it fails.)

Casey Johnston wasn’t invited to the event.

Apple also stopped selling the only reliable laptop you could buy from them, the 2015 MacBook Pro that had the old keyboard.

Microsoft’s Surface Go is Almost An iPad Cheap

Dan Seifert for The Verge:

Microsoft is getting back into the cheaper tablet game today with the new Surface Go, a smaller, less powerful take on the popular Surface Pro device. The Go features a 10-inch screen, integrated kickstand, Windows 10, and a similar design to the Surface Pro, and starts at $399. It is available for preorder starting July 10th and will ship in August.

The Surface Go doesn’t change Microsoft’s Surface design philosophy one bit — it really just looks like a smaller version of the Surface Pro design that’s been around since 2014’s Surface Pro 3. It has a 3:2 aspect ratio display (1800 x 1200 pixel resolution), the signature built-in kickstand with unlimited positions, a front-facing camera with facial recognition login, and Microsoft’s proprietary Surface Connector port for charging and connecting to a desktop dock. Microsoft has added a USB-C 3.1 port, capable of charging the tablet or outputting video and data to external devices. It has also rounded the corners a bit compared to the latest Surface Pro, but overall, it’s the same familiar magnesium design Surface users have come to expect.

The thing that kind of sucks about the Surface Go, besides the lack of capable and competitive apps in Microsoft’s app store, is that even Paul Thurott points out how shitty the base model is and you really have to get a more expensive Surface to have an acceptable level of performance:

Sure, the $400 price tag looks compelling. But the PC you’re getting at that price is not compelling, and it’s absolutely not future-proof. The biggest issue here is the same thing that doomed Surface 3 to poor performance: This entry-level Surface Go utilizes slow eMMC storage rather than speedy SSD storage. Combined that with just 4 GB of RAM and a low-end Pentium processor, and you have the makings of a disaster.

The good news? For just $150 more, you get some nice upgrades: 8 GB of RAM and more and faster storage: Not only does the higher-end Surface Go configuration double the storage from 64 GB to 128 GB, that storage is dramatically faster, since it is based on NVMe SSD technology. That’s a device that might actually make it through four years of high school or college.

I’m not sure if the eMMC storage performance, as well as the other cheap parts, are as bad as Apple carrying around 16GB base models of their iOS devices for too long, but it’s pretty bad that you have to go to $550 before you get something that might be functional. I’d probably rather have the 2018 iPad Cheap.

Casey Johnston: Apple admits its computers are broken

The “winner?” of the ongoing Apple portable keyboard saga, Casey Johnston, writes about the new repair program for Macbook keyboards:

While the repair and replacement program covers costs and notes that Apple will repair both single keys as well as whole keyboards when necessary, it doesn’t note whether the replacements will be a different, improved design that will prevent the problem from happening again (and again, and again). Having become a one-woman clearinghouse for people complaining about these keyboards since I broke this story, I feel justified in saying that keyboard failures – dead keys, sticking keys, double-spacing spacebars – appear to happen early and often, and repairs do not permanently fix the issue. I also feel justified in saying that the design on offer as recently as February still presented the exact same issues as the design I purchased in the fall of 2016.

Of course, that means nobody should be buying Apple’s modern* laptops until there’s some kind of hardware revision to stop the problems with minuscule grains of nothing destroying these delicate keyboard keys. It’ll be better when I have a reason to stop pining for an iPad with XCode, gcc, an official Terminal.app, and a clamshell keyboard case from Apple.

*Apple will still sell you the 2015 MacBook Pro in various configurations online if you want more standard ports and a keyboard that won’t quit on you if a butterfly flaps its wings within the surrounding 200 miles.

GitHub Getting Acquired by Microsoft

Microsoft, today:

Microsoft Corp. on Monday announced it has reached an agreement to acquire GitHub, the world’s leading software development platform where more than 28 million developers learn, share and collaborate to create the future. Together, the two companies will empower developers to achieve more at every stage of the development lifecycle, accelerate enterprise use of GitHub, and bring Microsoft’s developer tools and services to new audiences.

Yours truly, 3 years ago when Google’s Google Code code hosting service shut down:

This is your continued reminder that Google, and start-ups funded by VC money, are not a safe place to store your work. Own your shit before GitHub starts inserting malware into downloads or sells out in some original and disruptive way. Get a domain, some shared hosting, maybe a Linux or BSD VPS if you’re rich. With git it is easy enough to move a project if you have cloned the project locally and have established a web presence that people can check for updates. At the very least, don’t make the GitHub page the public-facing home for your project.

This kind of bullshit is why ioquake3.org exists and is the front-door for that project. Github has some great collaboration tools in their web front-end, and I’d guess there are developers out there that don’t even understand yet that there are other options for Git hosting.

It’s a burden that hosting is expensive, but these kinds of sell-outs happen all the time, that’s why you have to give your project a real homepage and not rely on a third-party that doesn’t have a sustainable business model.

I don’t know yet if we’re going to move ioquake3’s code off of Github, but at least people will still be able to find the project if we decide to do so.

Apple’s “Fuck You” to Mac Game Developers & Players

This wasn’t in the keynote, but Apple had some bad news buried in the “What’s New in macOS” section of their developer site for anyone who makes games or other software with the OpenGL graphics API :

Deprecations and Removed APIs
Periodically, Apple adds deprecation macros to APIs to indicate that those APIs should no longer be used in active development. When a deprecation occurs, it’s not an immediate end of life for the specified API. Instead, it is the beginning of a grace period for transitioning from that API and to newer and more modern replacements. Deprecated APIs typically remain present and usable in the system for a reasonable time past the release in which they were deprecated. However, active development on them ceases, and the APIs receive only minor changes to accommodate security patches or to fix other critical bugs. Deprecated APIs may be removed entirely from a future version of the operating system.

As a developer, avoid using deprecated APIs in your code as soon as possible. At a minimum, new code you write should never use deprecated APIs. And if your existing code uses deprecated APIs, update that code as soon as possible.

Deprecation of OpenGL and OpenCL
Apps built using OpenGL and OpenCL will continue to run in macOS 10.14, but these legacy technologies are deprecated in macOS 10.14. Games and graphics-intensive apps that use OpenGL should now adopt Metal. Similarly, apps that use OpenCL for computational tasks should now adopt Metal and Metal Performance Shaders.

Metal is designed from the ground up to provide the best access to the modern GPUs on iOS, macOS, and tvOS devices. Metal avoids the overhead inherent in legacy technologies and exposes the latest graphics processing functionality. Unified support for graphics and compute in Metal lets your apps efficiently utilize the latest rendering techniques. For information about developing apps and games using Metal, see the developer documentation for Metal, Metal Performance Shaders, and MetalKit. For information about migrating OpenGL code to Metal, see Mixing Metal and OpenGL Rendering in a View.

Apple is already requiring that apps get updated to be 64-bit, or they’ll stop working in a future update.

As much as I loathe John Carmack today, and it certainly didn’t help that he decided to write this on Facebook, he recently wrote about how he persuaded Steve Jobs to support OpenGL on the Mac:

I was brought in to talk about the needs of games in general, but I made it my mission to get Apple to adopt OpenGL as their 3D graphics API. I had a lot of arguments with Steve.

Part of his method, at least with me, was to deride contemporary options and dare me to tell him differently. They might be pragmatic, but couldn’t actually be good. “I have Pixar. We will make something [an API] that is actually good.”

It was often frustrating, because he could talk, with complete confidence, about things he was just plain wrong about, like the price of memory for video cards and the amount of system bandwidth exploitable by the AltiVec extensions.

But when I knew what I was talking about, I would stand my ground against anyone.

When Steve did make up his mind, he was decisive about it. Dictates were made, companies were acquired, keynotes were scheduled, and the reality distortion field kicked in, making everything else that was previously considered into obviously terrible ideas.

I consider this one of the biggest indirect impacts on the industry that I have had. OpenGL never seriously threatened D3D on PC, but it was critical at Apple, and that meant that it remained enough of a going concern to be the clear choice when mobile devices started getting GPUs. While long in the tooth now, it was so much better than what we would have gotten if half a dozen SoC vendors rolled their own API back at the dawn of the mobile age.

While OpenGL isn’t going away immediately in macOS Mojave, when it is finally gone there will be many fewer games on macOS, it has been the only portable graphics API available for developers to bring their games to Linux and macOS, as well as other platforms, for decades.

Without OpenGL on macOS the Mac and Linux will both suffer, as will new platforms. They’ll have a harder time getting games and other software when bigger platforms are locked to vendor-specific APIs like Metal instead of cross-platform ones like Vulkan and OpenGL.

If I had to guess, I would hope that Valve will ship an intermediary layer to translate OpenGL calls for games on Steam, and hopefully they will make this software available for everyone else. There are already some other projects to translate OpenGL to platform-specific calls but it’s not going to be easy for games to support them. It’d be better if these projects had something to handle the translation on-the-fly. It’s also entirely possible that Valve will just give up on older games supporting modern versions of macOS after Apple fully deprecates OpenGL.

I don’t envy anyone trying to support old software and write good OpenGL drivers like Apple has (even when they don’t update their OpenGL support for years), but the deprecation of OpenGL is a real “Fuck You” to game developers and players unlike any other. Games getting updated from 32-bit to 64-bit, as well as going through the process of having any kind of graphics portability layer added on top, seems unlikely. Thousands of games are going to be lost to time when OpenGL dies off. Competition with popular hardware and software platforms will be even more difficult. I understand the desire to get rid of technical debt, but this is bad.