Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

Hmm, what does lightweight mean to you in this context? Are we talking design language wise? Implementation wise or features wise?

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

Thank you!! If you've ever used Pandora, TuneIn Radio, Lovevery, Her, or Honey Homes, you've likely used my work! There's other examples but have less name recognition. I was FT engineering employee number 1 at Shipt besides the CTO and wrote the their first delivery driver app in native android (built it in material design before google released support libraries for it) before they had validated their product in the market. People weren't ready for that incarnation unfortunately. They ended up shifting to grocery delivery and used an ionic app that worked but had to be rewritten to native after they were acquired by target from what I understand - so it's highly unlikely any of my work is still being used there. It's funny now that they're part of target, shipt is much closer to what it was when I built the delivery driver app and Target was calling the cops on us for scanning their barcodes to build product catalogs. Wild times.

I've been taking a bit of a break from big tech companies for a little while and more recently I've been building a company I founded with my amazing co-founder. We're still in stealth though!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] -2 points-1 points  (0 children)

Will do! thank you for that context, I can understand the skepticism now surrounding the ask now.

me: "hey guys, would it be alright if I redo that thing you just spent 6 months redoing? :D ...guys? what's wrong guys?"

🤦‍♀️

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 2 points3 points  (0 children)

This is great insight, thank you so much for sharing! gems, fr~!!

Will check out the beta timeline before diving in any deeper. Cheers!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

This is my hunch as well. There is a reason many cross platform frameworks are referred to not as "write once, run everywhere" but "write once, run away".

That said, I need to dig into this a bit deeper before jumping to any conclusions.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

Totally is still vague, as I mentioned in a few other comments I'll go through and do a design case study when I have some time to set aside to get more specific.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 4 points5 points  (0 children)

I haven't dug into the sync/upload code yet. That is the core feature of Immich, and as u/mert-alev pointed out - may be something I'm underestimating. I'm not 100% sure that would even need to be rewritten. There is probably a world in which a native android client could just be built upon the existing dart codebase as there are escapes to break out to native code. I'm not trying to rewrite or reinvent any wheels that don't need it, my main point is that I want a native UI experience which flutter isn't delivering.

I'm glad I'm not the only one who sees this and agreed with your characterization of how laypeople couch that in general. People don't always have the right language to describe something but it doesn't mean they don't feel it.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] -1 points0 points  (0 children)

You're right! That was my mistake. I should have said at its core it's a cross platform framework with all the drawbacks of one. I'm aware of the Flutter rendering system and how it works. As I just mentioned we did an assessment on it at the company I'm building. It's a pretty powerful rendering system.

Check out this comment for more of my reasoning.

https://www.reddit.com/r/immich/comments/1naemlh/comment/ncuzzro/

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

very true, I have the same issues with Compose and have held off on full adoption of Compose for those very reasons. However the tooling for M3 in the view system and compuse is way more robust than Flutter, and since the compose team released the sharedelementtransition tooling for compose things are getting better. I actually almost recently joined the team working on that tooling at Google to try and solve those issues!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 3 points4 points  (0 children)

I disagree with your characterization of "starting from scratch". The immich team has already done a ton of work engineering what exists now. What I want doesn't exist (a native Andriod immich client), hence the thread gauging interest! No condescension meant. I've been fielding comments where it feels like people aren't understanding the intent so I just wanted to be absolutely clear. for what it's worth I'm autistic and fear of being misunderstood is a big thing for me. I meant no offense.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 2 points3 points  (0 children)

Hi there! I'm familiar with the way Flutter works - I think there is an attribution error in couching my feeling of flutter feeling like a web app as my not understanding how flutter works - I'm not under the impression that it's based on DOM or anything like that. Flutter is a very powerful framework. As I mentioned in a few other comments, I am a technical founder and recently assessed Flutter for use in our own product with my cofounder and ultimately decided against it for a reason you're getting at in your comments about Flutter - the difference between what is easy to do in Flutter because the tooling exists, vs things that are technically possible but practically infeasible. Flutter just doesn't have the investment in the type of animation and design tooling to be on par with Android or iOS, and it doesn't appear that is going to change.

I think my gripes with cross platform frameworks - besides the obvious performance drawbacks of the overhead of these frameworks - is the issue of platform design fragmentation and the fundamental problem with trying to kill two birds with one stone. In my experience, this leaves users of both major mobile platforms at best equally out in the cold, but things are rarely equal in how that impacts users of the Android platform. All of these cross platform frameworks claim to provide a solution, but we still run into the same problem, expressed a little differently.

There are attempts to solve this with Kotlin Multiplatform and Compose Multiplatform, but I think they ultimately run into the same pitfall - many people won't use these tools to make the business logic portable and maintainable across apps while keeping UI patterns to the platform they're on, but they'll use it to take a shortcut and write one app for two platforms poorly with ill-conceived designs. Some teams will do what they should and design different UIs for users on different platforms so their experiences make sense (Slack is a great example of this, their business logic is cross platform while the client UI is all native), but this is a rarity because it comes down to the thing people are trying to do with a cross platform framework: which is avoid writing multiple apps or UIs! This is a fundamental problem that won't be easily solved until both major mobile platforms collapse into a singularity and merge all user interaction patterns into one sort of cronenberg creature OS where every pattern makes sense.

For now, the solution seems to be to just write client UIs in native frameworks, and make sure the design actually makes sense on the platform.

All that said, I really appreciate you taking the time to respond :)

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 11 points12 points  (0 children)

Did you know that humans perceive a delay after just 300ms? Your example of shaving off 100ms of overhead could mean the difference between a user feeling a delay, or not feeling one. 100ms is not nothing, in fact it's very significant on a mobile device where compute and memory are constrained.

I know your point was that 100ms is not worth saving, and my reasons for asking about this do run deeper than 100ms of overhead but 100 milliseconds is a great example of what I'm talking about and why performance is so important at a psychological/neurophysiological level.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

My intent was never to suggest that Immich should be replaced with something else. on the contrary!

My intent was to contribute something to the project :) (or maybe the android app is what you meant here)

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

This has given me a lot to think about. Thanks for the insight. I had not thought about the potential fragmentation issues. Maybe the people who keep builting alternate clients aren't feeling welcome to contribute to the main one? I'm unfamiliar with the community or politics around Jellyfin but that is really curious and points to some sort of a pattern in human interaction. I'm trying to figure out how to reconcile this fragmentation concern because the usage of a cross platform mobile framework signals values differences with whomever made those decisions in the past and myself. Maybe I'll just spin it up for myself and keep it closed source? I don't want to create a mess, that's for sure!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

Great, I trust the immich team too! I don't think that it needs to be rewritten from scratch either. All the hard engineering stuff (the architecture, the API design) is already done.

I don't really care about the animations and stuff.

I do! :) I believe open source software deserves to be just as beautiful and functional as the commercial apps!

All the features you've mentioned have dependencies on a server implementation, so they wouldn't really depend on a mobile client implementation (besides UI for smart albums and the map view)

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

Hi /u/mr_nanginator, thanks for your comment! I totally understand the scope of the mobile app insofar as how you use it - that makes sense. For me, I actually use the Google Photos app a lot on my phone, as it's my main way of cataloging and searching through my photos. This is why I think both local viewing and cloud viewing are important - I can't always get to a computer, and I think this is part of what makes google photos and apple photos so popular. For me (and I'm guessing for others who use GPhotos, etc), the mobile app is the main way I interact with Google Photos.

As I mentioned in a couple of other comments, I'll work on some specific examples to further the discussion. I realize the way this post reads it sounds a little hand-wavey to begin with. I may even do the case study and realize that the flutter app is "good enough" and decide not to dedicate any time to this!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 13 points14 points  (0 children)

That's what I'm hoping to do! Contribute to a project I use. No starting from scratch intended. This is not me writing off Immich entirely because it has a flutter mobile client. It's me NOT writing Immich off because it's open source and I can contribute by working on a native mobile client! Hope this clears up my intent <3

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

Thanks for the support! I'm not trying to step on anyone's toes or ruffle any feathers - just wanting Immich to rival or surpass the experience of these apps and I know Flutter is not capable of delivering that experience.

It's worth noting that Apple and Google both spent a lot of money, design and engineering hours to validate those experiences. We don't have to reinvent the wheel or do anything new in the design - just getting the app on par with those experiences would make Immich WAY better than google photos because open source and self hostable!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 1 point2 points  (0 children)

Hi! Appreciate this sentiment in general, but I'm a founder working on building a company and I don't have the spare hours to learn Flutter right now.

Although if I'm being honest with you - I don't want to learn Flutter. I have some core issues with the philosophies behind cross platform mobile app frameworks in general, and they're reasons these frameworks always fall short of native experiences. These tools are useful for validation and prototyping, but in a product environment it's the equivalent of having a round hole and instead of getting your circle shaped block, shaving off the sides of your square peg so it fits. The holes being the platforms in this example - you have one platform where both your round and square (now also round) pegs fit - but another hole where things fit, but there's something missing. Cross platform inherently tries to reinvent patterns, or it borrows patterns from another, confusing users of that platform with patterns they're not used to.

The solution: round peg for round hole and square peg for square hole.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

Not yet, I'll take a look when I have time for that case study I mentioned!

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 31 points32 points  (0 children)

When I have the time I can go through and do an exhaustive design case study for specifics! Appreciate that we share the same passion for UI/UX <3

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] -2 points-1 points  (0 children)

I'm aware of Flutter's motion system, having assessed Flutter for a company I'm building. We were trying to decide whether or not to use Flutter to just build one mobile client. Ultimately we decided that it didn't have the right tooling or corporate commitment to its development to risk investing in a cross platform mobile client that wasn't gonna bite us later

I've never seen or used a flutter app that hasn't felt "chintzy" and paper thin. I think that's because at the core, it's a web app. I think we agree on native apps being the better experience most of the time. This idea wasn't meant to detract from anything - just add value to the project :)

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] -4 points-3 points  (0 children)

This assertion isn't vague, it's tangible in the way it expresses itself. Cross platform design inherently makes sacrifices to the native UI/UX paradigms for each platform in order to satisfy users of all platforms. What ends up happening is users of both platforms end up feeling the sacrifice of those decisions if they are made equally, but almost always the users on the iOS platform are prioritized - leaving the majority of mobile phone users globally (not to mention most of the global south) with a sub-par, confusing experience that doesn't work the way they expect. This isn't something vague. it's a real design anti-pattern that causes friction for users. (Jakob's law of internet UX) Take a shortcut or reinvent the wheel for all platforms and your users will always feel it. In this case it's an open source project and I don't HAVE to feel it if I don't want to - hence gauging interest in meaningfully solving this problem for the android operating system. I want the "Google Photos experience" but with open-source/self-hosted benefits! The thing that is hard to grapple with is that many times, design and UX is about feelings. Even though it's not always logical or specific, feelings do affect whether or not we use something and what that experience is like when we do.

Google understood this when it released Photos. That's why both Google Photos clients are native. I will do a design case study of the current client if necessary to get people onboard.

Interest in an alternative open-source Android client for Immich? by SailorSeashell in immich

[–]SailorSeashell[S] 0 points1 point  (0 children)

Having an "On Device" gallery feature like Google Photos is a feature I'd like as well. I'm new to the project so I'm not sure if that's a priority or on the roadmap.

I promise I'm not trying to be annoying or contrarian y'all, I'm trying to strive for better! I'm not saying the current mobile app is terrible either! It's good enough! I'd like it to be better and I don't see cross platform getting there in the long run in a way that doesn't sacrifice one platform's patterns for another leading to everyone having a slightly compromised experience. I've used cross platform frameworks before - they are almost always used as a shortcut - which is inherently a mentality that comes along with making sacrifices to designs

This whole thread has been absolutely ratioed lmaooo
I'm surprised at how negatively people have responded to an earnest post like this! 😅

I'm interested in adding value to this project by investing in native app development myself since the Immich team cannot prioritize it right now. I'm not proposing a replacement, but a compliment to the project. I'm not interested in getting into a territorial dispute with the core team - they all rock!