Maximiliano Firtman's articles, notes and learning experiences for devs-firt.dev

Think Lazy

Open letter to the Safari team after bullying web developers

Maximiliano Firtman avatarby Maximiliano Firtman Twitter @firt About Newsletter

About 18 min reading time

Think Different? or Think Lazy

Two weeks ago, I published a tweet ending with “WebKit took the lazy way,” based on a recent update. It took one-word -lazy-, to make all the debate a little crazy. And it involves, sadly, the Safari team pretending being victims while disrespecting Apple’s values in the community.

This is my Open Letter to Apple employees of the WebKit/Safari team.

This is not my typical post. It involves emotions, different vocabulary, and finger-pointing to some persons that I’m not used in my writings. You’ve been warned!


The discussion is actually not about me -just a freelance web developer in case you have just tuned in-and a weird online battle with a group of Apple employees that I won’t say they represent the company but it looks close enough.

When you look deep, the discussion was all about:

  • Chromium vs. WebKit, and the false dichotomy of Features vs. Privacy.
  • Lack of web rendering engine choice on iOS and iPadOS
  • +50% of web developers thinking that Safari is the new IE

I was just in the middle and Safari decided to take their anger with me.

🍿 Prepare your popcorn!

Nothing personal* #

There is a larger disclaimer at the end of the article

Many of the WebKit team on Twitter that I know and follow reacted badly about my tweet, but no one approached me or asked for an explanation. My DMs are open.

I understand these are special moments in the World with the COVID-19 situation, and many people are stressed. But hey, that applies to all of us.

But at least Timothy Hatcher, Apple Engineer at WebKit, and Maciej Stachowiak, Head of WebKit Engineering at Apple had a reaction during the last days that it’s worth noting and rejecting.

They think that I’ve been just trolling WebKit all over these years and that I have an obscure reason to be on the Chrome side (if two sides actually exist). During the rest of this article, I will expand some of these ideas.

Twitterverse laziness #

Because Twitter can be a crazy universe sometimes and different threads can disappear in your timeline, I will (try to) make a final statement about this instead of using Twitter.

Not because of me.
Not because my opinion is important.
Not because I need a defense; I can handle these debates.

Just because it has to do with the future of the web and it’s sad to see that the biggest competitor to the Chromium monopoly on the web (Safari) has this way to relate with the developer community.

I’m not talking about them not agreeing with my statements, opinion, or whatever I say or write. That’s perfectly fine, acceptable, and welcome.

Feeding the Trolls

However, fueling troll attacks instead of engaging in a productive conversation, doesn’t look good.

Or at least, it doesn’t look like the good guys' persona you want to create on your team against “the others.” In fact, it looks like you are the bullies of the web community.

It’s not the adjective, but the subject what matters #

Lazy (adjective):

1- (disapproving) unwilling to work or be active
2- doing as little as possible not involving much energy or activity; slow and relaxed
3- showing a lack of effort or care
4- moving slowly

I’m genuinely surprised at the WebKit team reaction to my tweet. Every hater over my tweet (a minority) including several members of the WebKit/Safari team read “WebKit is lazy”, and more importantly, that each member of the WebKit is lazy, personally. Each of them felt their feelings hurt. Really folks? We are smart than that, or, I used to believe that.

**The car stopped at the red light.
**Let’s see kids: did I say that the car is red? 😱

For me, the lazy way involves a decision to solve a problem “doing as little as possible not involving much energy or activity”. Like, the simplest way, the fastest way to solve a problem. I decide to use the lazy way many times in my daily life. All of us do that all the time. Does it mean we are lazy persons?

Battle? It’s just a twitter debate #

Well, after the initial discussion over my tweet, yesterday, an attack of +500 trolls (anonymous Twitter users, not following me or the WebKit team guys, with no real names, no experience with web dev) sending insults and “opinions” are a little… “suspicious”.

It’s even worse when you see the same guys (those that didn’t want to talk to me or take my de-escalating explanations) fueling these trolls with likes and replies. Likes on accounts with no followers! Likes on “people” attacking me! So childish. So bully.

Don’t get me wrong! I don’t care about these attacks! It’s even fun for me sometimes (I know that’s not funny at all for some other people), so I’m perfectly ok. These troll attacks are typically happening over political debates, it’s the first time I’m seeing those over a web engine debate.

Kill Bill #

“Revenge is a dish that is best served cold.” An old Kinglon proverb

The sad part, Maciej, Head of WebKit Engineering at Apple thinks I deserve the attack of anonymous trolls because I do the same with WebKit. In fact, he thinks I do more trolling than these folks. 😱

Revenge

Aha…

Maciej, Head of WebKit Engineering at Apple, I never called your whole team lazy. Dishonest? Mmmm… Did I say that? Where? Are you reading me, reading other people’s thoughts? Your own thoughts? What’s going on here? Regarding Sockpuppeting, I’m not sure what you mean.

If you pay attention, these WebKit folks didn’t talk to me in their conversations. They always treat me in the third person. They don’t want to engage with me. What are you afraid of? In fact, it’s like a same psycological reaction to the PWA term; it’s not there, it doesn’t exist.
Let’s make invisible what I don’t like.

I just said that it’s clearly suspicious someone creating a Twitter account just to say this with a very WebKit marketing response. I never accused you of doing this. However, you are cheering up these folks, which is not better than sockpuppeting, isn’t it?

The spare time #

Finally, “Most of us are on Twitter in our spare time”. The what? I need to remember you, Maciej, that I never, ever, mentioned you or anyone from the team in the tweet. Did I bother you?

Are you implying we should thank for you replying on Twitter? Maybe because you shouldn’t be doing that and the team has no one else for that? You work at one of the most valuable companies in the world. Call Tim.

And regarding spare time, let me remind you that everything I do for the web community, including sometimes washing your dirty clothes, is in my spare time. And you know what? No one is paying my bills or a salary (proudly saying that btw).

Should I have empathy for your spare time and not tweeting about WebKit? !?!?!?!?! 😡

Ok, that got me a little angry, let’s go back 😉 I will go back to my “inflammatory way” later.

My motivations #

According to Timothy Hatcher, there is always motivation. Of course, he’s not talking about me in the following tweet, no real reference Max, come on, not everything is about you:

Timoth Hatcher thinks I might have a motivation

But, wait a minute, he actually liked several tweets a few minutes later from “The Sword of the Morning”, a well-know and prestigious web developer (!?) talking about my clear motivations, so maybe Timothy wanted to know more about my motivations.

I’m sorry Timothy, really. But your activity on Twitter is public and this is my view of it. We are adults, or that’s what I think we are, so we should be responsible for our actions.

Maciej also liked many anonymous trolls attacking me, but I don’t want to insist and bore you with more samples of the same category.

I’m trying to sell books and speaking engagements #

Of course! You got me! 😀

It always intrigued me how people that received a salary every month for their entire work life think that what freelancers do is bad. Receiving money for consulting? Receiving royalties for selling books? Oh, how bad! How do you dare!? 🙄

Let me tell you Timothy and dear Sword, you don’t live from book royalties. Yes, maybe I can use book royalties to upgrade my latte to Venti.

Next…

I understand you may think that speaking from Apple Park with a teleprompter with no public or just groupies in the public is an speaking engagement but you don’t get outside and talk to communities, so let me explain how it looks like: you don’t get paid on 95% of speaking engagements! Yes, I spoke at probably 80 conferences in 50 countries. Yes, I accumulated miles, but you know what… it was in my spare time, and most of the time ad honorem!

And many times to do what YOU DO NOT DO TO SUPPORT WEB PROFESSIONALS. I don’t need thanks, but at least, have a little respect.

Trumpist #

You know what my dear Sword and Tim (can I call you Tim?), the world is more than just your bay area and your dear USA. If you think that giving you honest feedback that you don’t like is like being part of your political adversary is short-sight. I don’t even live in the USA. I don’t care about Trump and your internal politics. I have my own political issues in my country. Am I using Trumpist methodology? Why do you think I should even know what that means? You are so kirchnerista.

Chome is paying me #

At different levels likes and comments also suggest that I may be receiving money or favors from Google -the bad guys, of course- to attack Safari. Oh, yes, sure. That’s totally real 😂. It’s true that the Chrome team used to invite me to some events (we well as Microsoft, Nokia, BlackBerry, and others before) and even used to send me gift devices. That ended up probably five years ago; because you know, there are times where the Chromium team thinks I’m also against them based on some comments and articles I posted.

So, no… next!

I want to be hired by Apple #

You made my day with this one 😂

I won’t get more details here but you know what: Apple tried to hire me in the past once, and I said no. Was that because I hate Apple? No! Because I hate being an employee 😉

I’m a happy freelance consultant. I’ve been like this since I was 17 years old. I also rejected proposals from Facebook, Google, Yahoo! and others in the past. I never reached to a conversation about it. No, thanks.

And you know what (🥁🥁🥁🥁🥁): I’ve been contracted by Apple to do an onsite consulting before. And they were actually really happy about what we did! (To be fair: it was not for the Safari/WebKit team). Surprise! 😝 Your company trusted in a troll 🧟‍♂️

My real motivation #

“El ladrón siempre cree que todos son de su condición” Spanish proverb.

I won’t translate it literally, but it means that when you have weird behaviors in your life you think everyone else also has them.

What’s my motivation? The same as always: to reduce my frustration while making web apps and to reduce the frustration of thousands of developers out there, feeling completely abandoned by you, Safari.

You don’t realize how many developers reach me in Twitter, email, LinkedIn with a question, a problem, looking for answers you don’t give. And I help them, all in my spare time.

What’s your motivation, team? The open Web? Because, you know, you are the ones with the same paycheck every month.

Oh, yes, that’s how this ended up without me interacting with Timothy, but with their fellow trolls:

I’ve just realized Timothy blocked me.

I’ve just realized Timothy blocked me. Maybe, I shouldn’t call him Tim. Timothy, closing your eyes, won’t solve issues around you.

Web Bullying API #

Bullies from the Simpsons

I took some time to think about how to categorize these behaviors. And I found the answer: bullying. These folks are acting like bullies.

They are in a position of (let’s say) power, you need to be very careful when interacting with them because they can get upset, you should not bother them in their spare time, don’t even try to ask questions, be extremely careful not to mention the satanic word “PWA” when interacting, and they clearly don’t care about most web developers and designers needs.

The bullies typically ignore everyone. For years. Which is even acceptable, it’s their decision. What you have in return when you don’t follow “the rules”? The bullies will attack you, they will promote disrespect, they will try to discredit you and they will laugh with some dwarfs they’ve found that attacks you.

Nelson from the Simpsons: Hahaha… there you have web developer: that’s what you deserve.

Hahaha… there you have web developer: that’s what you deserve.

“Safari is supporting the Web Bullying API.”**

I can deal with all these, but you know Apple employees, there are many people out there that may have a lot of issues and feelings receiving “bullying” from a web browser.

Think about your position, where you are, and how you treat others, including your users (including web professionals).

Apple's values

“We believe in including everyone” 😂

You are the contrary of inclusive, and you are constantly failing in respecting web professionals. You are doing everything against Apple’s values I can read on your website.

I hope you can take this feedback, even if you won’t like it, and try to do better in the future; not with me. With the rest of the community.

Feedback is that feedback: take it or leave it. Don’t bully the messenger.

What about those APIs? #

Let’s see if we can add some technical topics to this uncommon post.

Because on Twitter everyone thinks they have to pick a side and then attack without actually analyzing what you say, a lot of people that don’t follow me just answers that I’m an advocate of these APIs, or that I want Safari to throw away privacy or security, or that I prefer <insert here whatever>.

The list of APIs includes:

  • Web Bluetooth
  • Web MIDI
  • Magnetometer API
  • Web NFC
  • Device Memory
  • Network Information
  • Battery Status
  • Ambient Light Sensor
  • HDCP Policy Check extension for EME
  • Proximity Sensor
  • WebHID
  • Serial API
  • Web USB
  • Geolocation Sensor (background geolocation)
  • User Idle Detection

Of course, there are privacy and security concerns on those APIs! How you deal with that will define the kind of action you are taking. Doing nothing is the laziest one. Which is fine if that’s what you want.

I never even said that taking the lazy way was bad. It was just that: a decision. I’m not going to buy that not implementing these APIs is the only solution. I’m sorry. I’m not so naïve. WebKit has really smart guys doing great work on privacy and security. I don’t buy there is no other solution than just avoid it.

First Line of Defense #

“WebKit’s first line of defense against fingerprinting is to not implement web features which increase fingerprintability and offer no safe way to protect the user.” WebKit site.

Not using a vehicle is your first line of defense against traffic accidents. Sure. But, you know… we find ways to mitigate the risk. Unless, you don’t want to get out of your house, and you are just looking for a valid excuse. And yes, you have one, I’m not saying you don’t.

WebKit did a great job with Intelligent Tracking Prevention, Super-Cookies, the new Privacy Report, and even recently implementing an API that is also adding risks in privacy and security: Clipboard Access. The team didn’t take the lazy way, dealt with the risk, and created an algorithm to mitigate those issues.

Are these new APIs? #

Do you know that some of the APIs listed there were actually available on BlackBerry and Android 2? With browsers based on WebKit! 10 years ago! So, team, you had 10 years and now, and only now, you realized there is no other way to offer Network Information or Battery Information APIs? You never even tried (at least in public.)

Yes, some other APIs in the list like WebNFC and WebUSB are newer and some other are not implemented on any browser still today.

How do you call a browser that makes a decision about an API spec 10 years later?

But all those malicious websites out there scanning your surroundings…

WebBluetooth API is probably an example of how hypocrite this discussion is. A lot of people saying that they don’t want a random website to scan your surroundings. Well, folks, that’s pure ignorance, the spec today and what Chrome has shipped for years now does not include device scanning.

And that argument is also used by members of the WebKit/Safari team. I’ve seen it on Twitter and during the episode 400 of Changelog podcast.

How do you want me to believe you if you are twisting reality to support what you say?

Are there no alternatives available? #

Can you look me into the eyes and tell me that’s you have a list of more than 15 APIs that are impossible to ship while being private and secure? (BTW, all of them are available on native). Or maybe, you can accept that there might be other reasons also in the balance (lack of resources, business decisions, out of your corporate goals, etc.).

The Async Clipboard API security measures

WebKit took a different way with the recent Async Clipboard API: there are security and privacy concerns, and they created an algorithm to mitigate these issues.

Also, a year ago, WebKit found that the Accelerometer API -created by the same WebKit team-was used for fingerprinting. After some time they found a solution and shipped it. (BTW, with no documentation… but that’s for later).

Aha… I totally agree here Timothy, so you can actually detect when an approach is lazy and when it’s not a lazy one.

What if it’s true? #

Let’s stay it’s true: the Chrome team is just a group of evil folks doing everything wrong because they are Google -the bad guys- and there is no alternative for these APIs to be secure and private on the open web.

What if… you enable those APIs only for home screen web apps. You’ve already done some work enabling some features (such as longer storage lifespan) when web apps are on the home screen. (no documentation, only a reference on Twitter on that, but you know… )

What if… you can enable them on your 100% safe, 100% private App Store. PWAs on the App Store are not something you are accepting either.

What’s the alternative? #

The only alternative for those use cases is then, a native app in the App Store. For some of the non-trolls defending the open WebKit against my “attacks” because “privacy”: you are proposing a closed proprietary ecosystem as an alternative! The open web is probably what you were looking for if you follow the Free Software Foundation arguments in your Twitter’s profile.

What’s the problem with WebKit making these decisions? #

No problem at all! You pick the product you want to offer. In fact, I like Safari. I use Safari regularly among other browsers.

Until you get to iOS and iPadOS. On these operating systems, WebKit is the only web engine available because of an AppStore rule so if a user doesn’t agree with you, no alternative is available.

And that’s the problem. Open iOS and iPadOS to other web engines and compete. Then, it’s simple. Users will pick what they prefer and want. Don’t sell me the openness of WebKit, that you love the web, and at the same time there is no alternative to decisions you make.

I’m sorry anonymous troll #498, if I want to fork WebKit and deliver a different experience on iOS and iPadOS I can not. In fact, Google Chrome is exactly what you are looking for.

Is the WebKit team lazy? #

Three little pigs story

I’m reading this story to my children these days. Who is the lazy pig?

There are many things we can put into a laziness basket:

  • Some bugs take years to be solved. YEARS.
  • WebKit status website is not updated. Web App Manifest still appears as under development when it was partially supported for 2 years now.
  • There are many things not documented at all anywhere; you google that, end you end up in one of my blog posts.
  • Homescreen web apps are evolving slowly and quietly, and no one talks about them

Safari is well known for NOT working on communication regarding iOS and iPadOS. Safari TP and release notes are pretty good but for macOS only. For 10 years in a row, I always found new abilities, problems, even APIs that are not mentioned in any doc, just spending “a few hours of my spare time”.

My first finding was in iOS 4.2 when I found in research the Accelerometer API that was documented a few weeks or months after my post and the stable version is launched. I documented 90% of the following versions. Most of you will know all my work on Safari and iOS after that up to last week.

Unanswered Questions #

The Safari and WebKit team is well-known for not answering any questions they don’t (or can’t) answer, such as the ones on PWAs. You can be in a conversation, but when some keywords appear, the conversation is muted. No more answers. Even not an “I don’t know” or “can’t say”.

If you have any questions, don’t wait for an answer! After four full weeks of this tweet, hundreds of questions are waiting for a response. Can we expect one?

Many weeks ago I asked several questions on the DevForums as the WebKit team suggested on Twitter (it was Timothy). I also asked questions on Twitter, some of them regarding WebAuthN were answered.

No answer.
(question) => undefined

Safari tag: From 33 questions, only 3 have answers only for some specific topics (extensions).

WebKit tag: It has 254 questions. How many answers? 5. Only for one topic: WebView, and not all of the WebView questions.

Of course, they don’t need to answer me. Just to anyone. Or document the abilities, and maybe answer questions when docs are not complete or good enough.

With the latest WWDC and with the addition of great professionals in their team, I was expecting a change in how Safari was communicating with the community, but based on these behaviors it’s still the same or even worse.

Some questions around “are you going to fix this bug?” end with “Apple doesn’t comment about future plans”. And you think: Come on! I’m not asking about your AR glasses, I need my IndexedDB code to work for your users!

Why, Timothy, do you invite people to ask questions you won’t answer?

My inflammatory way #

Maciej mentioned that I usually use a needlessly inflammatory way to express my points. First, I take the feedback. It’s fine. I’m open to feedback.

Cover from my article a few years ago

I published it two years and a half ago. Half of the problems I was mentioning were solved after one year. Other problems are still there, partially implemented, and with no documentation. And the worst, I’m talking about shipped features. Is this contrary to lazy?

He also said that this is the first time I crossed the line so they reacted. That’s not true: they reacted twice before. Interestingly they didn’t change the core issue, so regardless of my inflammatory way I was right and you didn’t change a bit.

How inflammatory is for thousands of developers dealing with all this nonsense from you?

Also, around four years ago, you used my inflammatory way in your favor when I was criticizing one particular approach of Service Workers and you didn’t want to implement it at that time. You used my tweets and my articles to support your point, as well as the Chrome team is doing similarly now with this tweet.

The inflammatory way is bad only when it affects you and your reputation?

Let’s see what else did I say before when you also reacted:

Apple, shame on you. It’s myself -a freelance developer using its spare time traveling to Berlin, an 18 hours trip-talking to one of the most valuables companies in the World, telling you what you don’t want to hear in JSConf Europe.

And yes, I’m pretty sure I’ve said more than 1,000 times “Safari didn’t document this”. Yes, it’s inflammatory to hear the same over and over during a decade. I can understand how inflammatory that is.

Can you spot Maciej one resource where I was disrespectful with the team or with any members of it? Because you compared that with some anonymous trolls saying I’m a psychopath, and you said I’m even worse. Do you understand why you don’t look like the good folks in the web community?

I’ve been approached twice by members of the team to take my usual suggestions on what’s missing in docs, deprecations, usual questions for iOS. The last one was a year ago. Nothing, not even a comma, has changed since my last list on shipped features without any doc or info.

The Lazy Pig

Finally, are they lazy? #

Of course not! That’s not laziness!

After all of these situations, we are talking about conscious decisions, based on resource limitations, the company’s policies, or other reasons they don’t want to disclose. It’s probably not the team’s fault, so critics should be taken personally. I criticize the final result.

They are doing a pretty good job on some parts they care about, but playing ghosts on other parts.

I don’t buy the Safari is the new IE, or that Google is the good one and Apple the bad one or that sort of childish definitions. The reality is complex and Google has its own similar situations. PWA is love and hates at the same time at Google (not at the sub-world Chrome)

So no, I don’t think browser teams are lazy, but they can choose to be the laziest pig sometimes. They have their reasons that we, as developers, don’t like; sometimes there are some apparently valid excuses used to mask the real reasons that we can only imagine.

It’s funny that both Google and Apple are enforcing every once in a while that they love the Web. They need to tell us that. Maybe it’s because some of us sometimes think that might not be the case always.

I’ve been working for the Web platform for almost 25 years. I’ve been teaching and consulting for dev teams for 20 years. This is actually not new. I can handle these debates

So Apple employees: do you want to play bully? Be my guest, but don’t tell me at the same time how supportive you are, how inclusive you are with the difference, and how you love the Web. Because it’s a LIE.

You can ignore me, you can block me; I don’t care, but I won’t let you being disrespectful with my person and my work. If you don’t like someone pointing at your constant failures, don’t blame me. I’m not a psychologist but there is plenty to talk about it there. I understand the frustration you may have because of lack of resources or priorities, the critics you always receive and dealing with “Safari is the new IE”. Call Tim, not me.

I really hope you can change your behavior in the future because…

Apple, shame on you

Disclaimer #

Production Health and Safety

I wrote this open letter in my spare time. Well, I’m not actually sure what’s the definition of spare time in my case 🤔

Proper social distance was practiced and actively monitoring in my home, in Buenos Aires, Argentina (not USA) on the 113th day of lockdown.

I think I haven’t met Timothy or Maciej in person so I’m sure they are nice persons. I didn’t even mention them in any of my tweets, they just picked and wave the WebKit flag when I publish a critic to the engine.

I want to apologize for using their tweets in this post. It’s not fair. However, after analyzing this for a while, this is the only option I have to make this point clear and loud: what you are doing is wrong. 🤷🏻‍♂️

There are Developer Evangelists in the WebKit/Safari team, but they typically play in silence. I’m just sad they don’t see what the web community’s common feelings of Safari and the WebKit team are, and they think it’s just me because I’m a troll, and Chrome is sending me money in the shadows.

Nothing personal with anyone I’m mentioning here, I just expressed my feelings while seeing Twitter’s timeline. My DMs are always open (as they were before). But I’ve never received a message (private or public) after my tweets. In fact, I even try to de-escalate the issue on public tweets, but they ignored them, and they chose to escalate this even more and they continue doing that.

No hard feelings (I got a little upset in the writing but it was on purpose)

Half typewriter, half computer

© Maximiliano Firtman (@firt)

firt.dev contains a collection of writings, thoughts, notes and learning experiences for web and mobile app developers authored by Maximiliano Firtman.

Contact me: hi@firt.dev Personal Website Buy Me A Coffee