Gluon's future
Nearly two years ago I started developing Gluon. It was thrilling and I had no idea what I was getting myself into.
It began as a "code challenge" and a learning opportunity for React Native, RN for short, which is a cross-platform framework allowing me to create for both iOS and Android. Yes, I took time to re-write it several times as I gained knowledge. This has served me very well personally and also my clients, who usually request apps that work across different platforms.
When I first started with RN it was still pretty bad. It worked well on iOS but terrible on Android. Over the years this has really improved and I'm happy how stable it got in general, especially for Android.
RN can also now be used to build native apps for the Mac and Windows. On top, the added benefit of learning RN you also get to know how to write for the ReactJS framework for websites. In fact, I started with a ReactJS for a client project - followed immediately with an RN project.
Microsoft uses the framework heavily and is investing a lot of time in it. Some of their web apps are built on it (OneDrive is a good example), and I think they'll continue that trend.
So, where does this lead me with Gluon?
That's a great question. A question I have been asking myself for a long time.
Gluon is built on the one codebase, that is shared across both Android and iOS. At the moment I share 98% of the code between the two platforms. However, Gluon is getting mature on iOS and is OK on Android.
Deep down I want to have a great experience no matter the device, whilst at the same time learn new things and bring new capabilities for the app that will please the community.
With dedicated focus on each platform I can concentrate my efforts to target each platform separately. This would give me the needed attention on each platform without having to try and "wedge" in the differences of either.
Android
This past week I took time to separate out the mixed RN project and make its own Gluon Android version. This is only the first step of many. However this gives me focus on Android only, separating it from iOS.
iOS handles certain scenarios differently, especially when it comes to syncing the timeline and a few other things... so on Android you'll commonly get a lot of lag! So, for this reason I decided that I need to focus separately on it without increasing the codebase for both platforms. You know, each line of code adds to the size of the app!
The Android version will remain on RN for the foreseeable future and I look forward learning new ways to make it better and more performant.
I'm still a believer in getting your apps cross-platform, if you have the ability to, and I'm not going to step back from that point of view!
This is a long term investment in the platform, for the better! Not just for Gluon but also for the Micro.blog community that use Android.
I can't wait to get those first Android specific updates out and build from there.
iOS and iPadOS
With Android in its own codebase, I can focus on the next version, 2020.5, which will remove most redundant "Android" specific code to reduce that file size a little.
Not only that, I also want to focus on refining a few things in the UI and add a sprinkle of additions to make it as stable as possible.
What I'm trying to do is reduce the overhead of the app and make it as simple as possible for me to maintain (it largely is already).
After the .5 update is finished and launched, Gluon will head into a different direction for the better!
I mulled over a few options as some of the core basics of Gluon are pretty old now and they are hurting the app... so... let's get excited for a re-write.
Apple'verse
I'm not going to lie, a year and a bit ago I wanted to dump Android and just focus on iOS because I believed RN is not the future... until it got better... and I got wiser!
This led me down the path, last year, to look into SwiftUI as I'm used to this declarative syntax coming from RN and ReactJS.
Unfortunately it was super buggy and I couldn't do much in the Xcode 11 beta (at the time, last year!)... so I basically gave up and re-focused my efforts with RN and really refine Gluon to what it is today. It's not perfect though...
Not only that, when I first got into Swift writing my Sleepy Eyes app I really loved the language. It was just introduced so I switched from Objective-C to Swift in a heart beat. 3 years of Swift changes really burned me in ways. I fell behind in a way and the language has evolved since then.
Swift became very verbose in my eyes, from the simple beginnings. Things seemed difficult especially with having to bridge between Objective-C and Swift... as it was still early days.
However, I spent the past few days with SwiftUI with the new Xcode 12 Beta. I'm blown away how amazing it is! It really came a long way and to be really honest... I'm excited where Apple now takes this. Not only that, you can now very easily create cross-apple-platform projects that target pretty much everything. And the best thing is that you can re-use most components across different OS's and share your logic with a smaller learning curve than before.
RN holds a lot of overhead and many unknowns. Every beta cycle I worry that stuff will break. RN is a dependancy. And everything else between is also a dependancy. Listening to the latest Core Int episode, this really drove it home for me. In fact, one version of RN caused an upload bug for images for no reason. I contacted Manton to ask if he can see anything wrong on his end... but no, it was RN for no reason!
RN also has serious bottlenecks on iOS. It can only run on one thread... so things can get slow. In fact, I'm having bugs I can't fix because of exactly this. This is not what I want for Gluon and certainly not something I want to burden my users with in future. Apple devices are super capable and I want to make use of that, fully!
This has fuelled my inner coder, and Apple geek, to now embrace the Apple'verse at every level! And that means Gluon will be fully rewritten for the Apple platforms using native Swift and SwiftUI code.
This will not be easy and it will take me some time, but Gluon will come to every iPhone, iPad, Apple Watch and Mac that runs a modern Apple OS.
My plan is to make this a phased cycled with iOS and iPadOS first, and get it to a good level of where it is now.
This is a long term investment to the awesome community and they deserve this! And it's an investment for myself to really learn Swift again and totally embrace SwiftUI!
I really want Gluon to have a premium feel and become a standard of social apps (for Micro.blog) that fits in with Apple design philosophy with my own opinionated take on it.
Gluon's main user base is iOS/iPadOS based... so this is my dedication to them... to you!
The immediate future
2020.5 will be built with what I currently have. This is also true for the Android version. Although I see Android diverging a little, for the better, from iOS.
Whilst I build out the above conversion, for the Apple'verse, I will continue to maintain the RN version of the app and continue to release bug fixes when needed. However, for Apple users, the design and features will remain as is until the conversion is complete.
There are many things I'd love to add, and I also promised a few things... and I will do it... however it will only be for the new native Apple versions going forward.
The distant future
I want to maintain Gluon as a cross-platform app. As I said, Android will already receive the attention and love it deserves! However, I also want to make it available for Windows users.
My initial plan was to create a web version of Gluon - so no matter the device you can access the Gluon experience you know and love.
With Microsoft embracing React Native heavily, including contributing to it, I see it as the perfect match for me to take what I know and apply it there. Again, this is a learning experience for myself and I look forward to get started with this at some stage.
I see a lot of indie developers embracing just one platform, and I'd love to put my skills and knowledge to use - to really take this where I can. The more accessible Gluon is, the better for it and the community.
On closing
So, I hope you're excited as I am.
Gluon takes dedication, love and tremendous amount of hours of my own time. I'd love for Gluon to one day make some money in return. Many have asked me to set something up. And I will.
Saying that, I really appreciate ALL the support from every single one of you. Gluon would not be where it is today if it wasn't for you. And I really, from the depths of my heart, mean that!
I always wanted to contribute to the Micro.blog universe and I hope my dedication to Gluon shows that.
I'm excited for the future! ✌️❤️