avatarAttila Vágó

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

4976

Abstract

e so than Windows, and that alone has given plenty of migraines to developers over the years. <b>There is, however, another kind of fragmentation within the Android development ecosystem</b>, and hilariously enough, it’s all caused by Google. Again…</p><p id="4981">Soon after the introduction of Angular, the good folks over at Ionic realised that paired with PhoneGap, it can be a passable solution for creating hybrid apps. So <b>now we had Angular.js, and then Angular-based development solutions for our mobile apps.</b></p><p id="9461">Then of course came Flutter, the star of this story, and <b>many of us agreed that Flutter is better than Ionic.</b> That being said, Ionic is also not bad and can cater to certain needs quite well, especially when all you have is JavaScript developers.</p><p id="4f4e">And finally <b>Kotlin Multiplatform, which feels like it’s trying to learn from past mistakes and be the “better” solution</b>, but at this point we now have not one, not two, but three ways to develop the same mobile app, all solutions offered or pushed by Google, and frankly all messy in some way or another.</p><h2 id="7c74">Dart</h2><p id="492d">We can’t not talk about Dart. I like Dart. I’ve been quite open about that in the past. If you’ve written JS or TS for more than a couple of months, you can pick the language up in no-time. That, <b>however, doesn’t necessarily mean people do or that they can afford to do that.</b></p><p id="fe8d">Dart, as a language does not present any real barrier of entry, the language itself is not the problem. It’s developer fatigue. <b>Many developers get to a point where the last thing they want to do is pick up yet another language. </b>The crazy-excited developers who love picking up a new language every month is actually a tiny subset of the total programmer workforce. Also, <b>when it comes to companies and engineering organisations, often the last thing you want to propose, is a new stack</b>. Not a hill you want to die on.</p><h2 id="20e1">Implementation</h2><p id="e00f">OK, let me say this again, before I bring every Flutter enthusiast’s wrath upon myself. Flutter, conceptually and architecturally, is great, in fact, it’s one of the greatest frameworks I’ve had the pleasure of working with. When it comes to implementation though, oh dear God, I did not see it turning into the mess it is, so damn quickly.</p><p id="63f6"><b>I am one of those software engineers who doesn’t quite believe that open source is doing an impressive job. </b>Looking at NPM and the mountains of garbage we have there, as much as I love JavaScript as a language, the surrounding ecosystem is a bit of a slum.</p><div id="b7d1" class="link-block"> <a href="https://readmedium.com/akkas-story-is-the-perfect-example-of-everything-that-s-wrong-with-classic-open-source-c8079ed2f1d1"> <div> <div> <h2>Akka’s Story Is The Perfect Example Of Everything That’s Wrong With Classic Open Source</h2> <div><h3>Hang on, let me find my “I told you so” banner…</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*NW85RSLfVikwUZAp)"></div> </div> </div> </a> </div><p id="8416">But JS is 27 years old. You could argue it has some excuse for unmaintained garbage piling up. <b>Flutter, on the other hand, just barely 6 years old, should still be in pristine shape. But it’s not</b>, and the first time I experienced just how shaky the whole Flutter ecosystem can be, was when null-safety was introduced. Now, don’t get me wrong, it’s not the only framework that has these problems, nor is Dart the only language with breaking changes like these. I have my issues with Python too.</p><div id="4ed5" class="link-block"> <a href="https://levelup.gitconnected.com/how-to-fix-your-flutter-macos-target-mismatch-bc55424b7c77"> <div> <div> <h2>How To Fix Your Flutter macOS Target Mismatch</h2> <div><h3>The one Flutter bug that keeps not getting fixed. But there’s a workaround.</h3></div> <div><p>levelup.gitconnected.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*3hCJ9yu6BEFfsEbq)"></div> </div> </div> </a> </div><p id="bd22">Seeing however <b>plugins breaking left and right, not getting updated, not getting maintained, chains of dependencies falling apart</b>, plugins that do more harm than good, all after barely four years was an alarm bell I did not expect to hear that quickly.</p><p id="51ea" type="7">I am a pragmatic engineer, I don’t expect perfection, issues are part of software development, but to see a very similar Flutter landscape

Options

after 6 years as the one JavaScript has after 27, is not something that fills me with confidence.</p><h2 id="2fdf">Is Flutter still a good bet?</h2><p id="54ae">Two years ago, I would have said yes, most likely a good bet. Today, I am a lot less sure. <b>I would still not dismiss it as an option, but it’s becoming far less attractive than it was a couple of years ago.</b> At this moment in time, it’s definitely not abandoned, Flutter 3.7 was released in January 2023, so I would expect it to still have a minimum of 2 year future, even if this were to be the very last version Google ever releases.</p><p id="e491">If you’re trying to test out an idea, a small business or a smaller app in a larger company that’s meant to prove whether a business direction is viable or not, Flutter could potentially still be an option. Apart from that, <b>I would not bet long-term on Flutter.</b></p><p id="fbf7" type="7">I would think hard and twice before betting the long-term future of a business on Flutter. I guess native will remain king once again.</p><div id="1422" class="link-block"> <a href="https://readmedium.com/how-to-correctly-install-cocoapods-on-m1-m2-6abe3736c221"> <div> <div> <h2>How To Correctly Install CocoaPods On Apple Silicon M1 & M2?</h2> <div><h3>The painless method, before you start pulling your hair…</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*JVsjaESExoSTN-zK)"></div> </div> </div> </a> </div><div id="73ab" class="link-block"> <a href="https://levelup.gitconnected.com/building-flutter-apps-on-the-16-m1-pro-952d2325bbbe"> <div> <div> <h2>Building Flutter Apps On The 16" M1 Pro</h2> <div><h3>Moved entirely over to the M1 Pro 16" from my Intel i7 15" and got to work on my Flutter apps. I was equally worried…</h3></div> <div><p>levelup.gitconnected.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*BZfHL9qc0Pe8wExLwi7B8A.jpeg)"></div> </div> </div> </a> </div><div id="5f16" class="link-block"> <a href="https://levelup.gitconnected.com/how-to-transfer-data-between-two-flutter-apps-without-any-type-of-connection-ae808e78a00a"> <div> <div> <h2>How To Transfer Data Between Two Flutter Apps Without Any Type Of Connection</h2> <div><h3>No internet. No connectivity of any kind, yet there is still a way to transfer data…</h3></div> <div><p>levelup.gitconnected.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*frBbFHf-DrEXh6gzofE8iQ.jpeg)"></div> </div> </div> </a> </div><div id="bf05" class="link-block"> <a href="https://attilavago.medium.com/membership"> <div> <div> <h2>Join Medium with my referral link - Attila Vágó</h2> <div><h3>Want to read many more stories about LEGO, tech, coding and accessibility? Read unlimited stories from me, and…</h3></div> <div><p>attilavago.medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*Yo_PCHo379EyKBEO)"></div> </div> </div> </a> </div><p id="ed60"><i>Attila Vago — Software Engineer improving the world one line of code at a time. Cool nerd since forever, writer of codes and blogs. Web accessibility advocate, LEGO fan, vinyl record collector. Loves craft beer! <a href="https://attilavago.medium.com/my-200th-article-hello-its-time-we-met-3f201ad1303"><b>Read my Hello story here!</b></a><b> <a href="https://attilavago.medium.com/subscribe">Subscribe</a> </b>and/or<b> <a href="https://attilavago.medium.com/membership">become a member</a> </b>for more stories about <a href="https://medium.com/@attilavago/list/lego-all-the-things-083f80bd3c51"><b>LEGO</b></a><b>, <a href="https://medium.com/@attilavago/list/technology-tech-news-a2d2d509b856">tech</a>, <a href="https://medium.com/@attilavago/list/coding-software-development-d123369e3636">coding</a> and <a href="https://medium.com/@attilavago/list/accessibility-4b67c1d08ef3">accessibility</a></b>! For my less regular readers, I also write about <a href="https://medium.com/@attilavago/list/the-random-stuff-96bfc5a222e5"><b>random bits</b></a> and <a href="https://medium.com/@attilavago/list/writing-writing-tips-f83ef5e79de5"><b>writing</b></a>.</i></p></article></body>

I Am Falling Out Of Love With Flutter

Mounting struggles, endless breaking changes, poorly maintained plugins, and Google…

Photo by Gift Habeshaw on Unsplash

I had a suspicion I might end up here, writing exactly what I am writing now, but I am made of software engineer like every other software engineer out there, so jumped on the bandwagon, got excited, got even more excited to the point of becoming an evangelist. A Flutter evangelist. Those who follow me on Medium and LinkedIn, know what I’m talking about. I’ve advertised Flutter as the second coming, I’ve raved about it, and I used it for roughly 3 years. But the doubts slowly kept creeping in, and today, years later, I have to be just as honest as I was enthusiastic and admit — I have doubts about the viability of Flutter.

Let me start by stating that conceptually Flutter is still — in my opinion — the best cross-platform framework since forever, and right now, I can’t quite see any real alternative popping out of the woodworks. Though, never say never. We didn’t quite see Flutter happening either, until it did. Naysayers also claimed it will never catch on, until it did. I’d be far too arrogant to claim Flutter will be the last cross-platform development framework as good as Flutter is.

My mounting doubts around Flutter have nothing to do with Flutter itself. It’s everything else.

Flutter’s owner, Google

If us, developers, have learnt anything over the last decade is that Google is like a promiscuous substance-addicted parent struggling with multiple personalities. It has been by far one of the flakiest software companies to ever produce tools and frameworks for developers.

The Angular.js to Angular 2 migration was a clusterfuck we all still have PTSD from. The collateral damage to that royal fuckup is React, the Chrome extension Manifest V3 an absolute shit-show, Android development has gone through all sorts of teenage tantrums and even to date it’s far from what the iOS developer experience looks and feels like. Then, of course, there’s also Go, Kotlin, Carbon and Dart, all languages Google developed or endorsed with more or less success. That last one, Dart, is the one Flutter is built on.

Long story short, Google has a terrible software development track-record.

Kotlin Multiplatform

As if the above list wasn’t already proof enough not to jump too quickly into bed with Pichai’s army of “droids”, we now also have Kotlin Multiplatform to worry about, and when I say worry, I really do mean worry, because reading their home-page, it quickly makes your eyes go cross, and your lips say “What the actual fuck?!?” While still currently in beta, the promises it makes, are very similar to what Flutter already offers.

One has to ask what is Google playing at, exactly? Sure, perhaps as one key difference Kotlin Multiplatform brings is, the requirement of native-specific UI code for the various platforms like iOS, Android and Web, so theoretically one cannot get by with one engineer like in Flutter’s case. Regardless, the intent is still pretty much the same — having a single code-base that one can compile into apps on multiple platforms. From a business perspective, the objective of saving time, complexity and thus cost, is identical.

Fragmentation

When it comes to Android, it’s been a well-documented fact that it’s an extremely fragmented platform, perhaps even more so than Windows, and that alone has given plenty of migraines to developers over the years. There is, however, another kind of fragmentation within the Android development ecosystem, and hilariously enough, it’s all caused by Google. Again…

Soon after the introduction of Angular, the good folks over at Ionic realised that paired with PhoneGap, it can be a passable solution for creating hybrid apps. So now we had Angular.js, and then Angular-based development solutions for our mobile apps.

Then of course came Flutter, the star of this story, and many of us agreed that Flutter is better than Ionic. That being said, Ionic is also not bad and can cater to certain needs quite well, especially when all you have is JavaScript developers.

And finally Kotlin Multiplatform, which feels like it’s trying to learn from past mistakes and be the “better” solution, but at this point we now have not one, not two, but three ways to develop the same mobile app, all solutions offered or pushed by Google, and frankly all messy in some way or another.

Dart

We can’t not talk about Dart. I like Dart. I’ve been quite open about that in the past. If you’ve written JS or TS for more than a couple of months, you can pick the language up in no-time. That, however, doesn’t necessarily mean people do or that they can afford to do that.

Dart, as a language does not present any real barrier of entry, the language itself is not the problem. It’s developer fatigue. Many developers get to a point where the last thing they want to do is pick up yet another language. The crazy-excited developers who love picking up a new language every month is actually a tiny subset of the total programmer workforce. Also, when it comes to companies and engineering organisations, often the last thing you want to propose, is a new stack. Not a hill you want to die on.

Implementation

OK, let me say this again, before I bring every Flutter enthusiast’s wrath upon myself. Flutter, conceptually and architecturally, is great, in fact, it’s one of the greatest frameworks I’ve had the pleasure of working with. When it comes to implementation though, oh dear God, I did not see it turning into the mess it is, so damn quickly.

I am one of those software engineers who doesn’t quite believe that open source is doing an impressive job. Looking at NPM and the mountains of garbage we have there, as much as I love JavaScript as a language, the surrounding ecosystem is a bit of a slum.

But JS is 27 years old. You could argue it has some excuse for unmaintained garbage piling up. Flutter, on the other hand, just barely 6 years old, should still be in pristine shape. But it’s not, and the first time I experienced just how shaky the whole Flutter ecosystem can be, was when null-safety was introduced. Now, don’t get me wrong, it’s not the only framework that has these problems, nor is Dart the only language with breaking changes like these. I have my issues with Python too.

Seeing however plugins breaking left and right, not getting updated, not getting maintained, chains of dependencies falling apart, plugins that do more harm than good, all after barely four years was an alarm bell I did not expect to hear that quickly.

I am a pragmatic engineer, I don’t expect perfection, issues are part of software development, but to see a very similar Flutter landscape after 6 years as the one JavaScript has after 27, is not something that fills me with confidence.

Is Flutter still a good bet?

Two years ago, I would have said yes, most likely a good bet. Today, I am a lot less sure. I would still not dismiss it as an option, but it’s becoming far less attractive than it was a couple of years ago. At this moment in time, it’s definitely not abandoned, Flutter 3.7 was released in January 2023, so I would expect it to still have a minimum of 2 year future, even if this were to be the very last version Google ever releases.

If you’re trying to test out an idea, a small business or a smaller app in a larger company that’s meant to prove whether a business direction is viable or not, Flutter could potentially still be an option. Apart from that, I would not bet long-term on Flutter.

I would think hard and twice before betting the long-term future of a business on Flutter. I guess native will remain king once again.

Attila Vago — Software Engineer improving the world one line of code at a time. Cool nerd since forever, writer of codes and blogs. Web accessibility advocate, LEGO fan, vinyl record collector. Loves craft beer! Read my Hello story here! Subscribe and/or become a member for more stories about LEGO, tech, coding and accessibility! For my less regular readers, I also write about random bits and writing.

Flutter
Flutter App Development
Software Development
Coding
Technology
Recommended from ReadMedium