- cross-posted to:
- [email protected]
- cross-posted to:
- [email protected]
Hot take? This should have been a major version update.
Disclaimer ⚠️ The project is under very active development. ⚠️ Expect bugs and breaking changes. ⚠️ Do not use the app as the only way to store your photos and videos. ⚠️ Always follow 3-2-1 backup plan for your precious photos and videos!
Yes project does not follow semantic versioning. But you can consider it it the 0.y.z state where it is even in the semantic versioning allowed to have breaking changes without major version increase.
I am generally of the opinion that version numbers do not matter at all until the author/distributor has GUARANTEED that they do. Until then they’re worthless, including in places where semver is supposedly enforced like NPM. If I had a penny for every NPM package that broke my project after removing the package-lock.json, I could retire.
Absolutely agree with you. Just because the Versioning looks like x.y.z does not mean it follows that convention. The most prominent example is probably the Linux Kernel Versioning.
Read the notes of the dev team and subscribe to the changelog or update channel.
There are quite a few mature projects in 0.x that would cause a LOT of pain if they actually applied semver
Depending on how one defines the “initial development” phase, those projects are actually conforming to semver spec:
Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
Yep. Semver is so much more useful than the marketing versioning which many projects do.
Good share. I saw the nudge in the mobile app, but I didn’t realize there was breaking changes and upgraded in the middle of the night before bed (what the hell was I thinking???). Spent a good extra hour trying to figure out why.
Key take away, the
pgvecto.rs
version needs to be upgraded. If you are using docker, update the docker-compose.yml. If you’re not, upgrade yourpgvector.rs
version first. 🙏Thanks for posted. I didnt even notice. I just blindly did a pull. Lesson learned.
You can always set watchtower to blindly pull for you. If it’s going to be broken anyways, might as well automate the process.
Most of my containers do that but not the ones that break connection.
*pro tip
Thanks for the heads up!
I got Immich running last week and it’s impressive.
The only thing I yearn for is a way to get the pictures to easily display on the cloaed-source frame we have.
Anyone know of a way to automatically email pictures added to an Immich album?
maybe you could look into ImmichFrame?
Thanks for the suggestion. I ended up using a Raspberry Pi and an old computer monitor to run MagigMirror and MMM-ImmichSlideShow.
I tried ImmichFrame, too, and will revisit it in the future. For now MMM-ImmichSlideShow is working well.
super! glad its working.
I don’t understand. Why are they so specific in the Docker Compose? Why not just have a Docker that pulls the latest of each package without requiring the user to copy long strings?
For the exact reason they are posting this. What if some service you are referencing has breaking changes? If you pinpoint the exact version it will have no effect to your project unless you decide (hopefully after some consideration) to upgrade the service version number.
Sorry, I think I’m asking my question poorly, what I mean is instead of
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
Which clearly requires user interaction, why not take that out of users’ hands and just have
image: tensorchord/pgvecto-rs:latest-stable
Which is effectively what they’re using anyway? I can understand freezing on a version when the upstream removes a feature, but that’s not happened and even so, why do they need the SHA verification? Sorry if it seems stupid and straight forward, this is the only container I host that does this and so I’m trying to understand it rather than just feel aggrieved by it.
Also, it’s best practise to specifically refer to the digest for containers to avoid re-tags resulting in different images. For folks who audit what runs on their infrastructure, digests are the standard way of referring to an image. For Immich, I’d presume that the digest is partially a security thing and partially a “this specific image is known to be working”.
Thank you very much for teaching me something new
pgvecto.rs is a Postgres extension that provides vector similarity search functions. It is written in Rust and based on pgrx. It is currently in the beta status, we invite you to try it out in production and provide us with feedback. Read more at 📝our blog.
Because there is no stable release. Any update can have breaking changes since it is beta software like immich itself.
Thank you very much. I looked at their Github and saw a couple channels for releases and made a poor assumption. Thanks for sharing your insight.
I wondered about the sha as well but that’s good if you really depend on that version. Since immich is still heavily developing, this isn’t something I’d focus in the short term. Only if it persists
Ah okay. Thank you for making the time to respond.
The technology has changed and hence the dockerfile and thus the compose file
I don’t get it! But I also elaborated here: https://lemmy.tf/comment/5043780
I’m using the Immich app from TrueNAS, how do I properly update it? Or is it being taken care off by TrueNAS?
Edit: I asked on the TrueNAS discord for help and someone who already updated their Immich figured out how to fix the installation afterwards. I copy&paste the guide here:
This guide assumes that Heavyscript is installed and pgAdmin.
https://github.com/Heavybullets8/heavy_script
https://truecharts.org/charts/stable/pgadmin/-
Upgrade Immich to v.1.95.1.
-
If Immich fails to deploy check the logs
heavyscript pod --logs immich
. If the logs complain that indexes need to be deleted continue with this guide. -
Access the shell for the postgres pod
heavyscript pod -s immich
. -
Select the
postgres
pod. -
Inside the pod run
env
and record the password. Then typeexit
to exit the pod. -
Get the DNS address and port for Immich postgres pod.
heavyscript dns -a
-
Launch pgAdmin and right-click on
Servers
selectRegister > Server
. -
In the
Connection
tab put the hostname and port from step 6. The username is immich and use the password from step 3. -
Once connected create a backup by expanding
Servers > Immich > Databases
and right-click onimmich
then selectBackup...
. Follow the prompts to create a backup. -
Right-click on
immich
and selectQuery Tool
. -
Use the following query to delete your indexes.
FROM pg_index X JOIN pg_class I ON I.oid = X.indexrelid JOIN pg_am A ON A.oid = I.relam WHERE A.amname = 'vectors';
-
Stop Immich with heavyscript
heavyscript app --stop immich
. -
Once all pods have scaled down start Immich
heavyscript app --start immich
.
The SQL query will complain about a syntax error but it will work regardless. It just takes some time to redeploy immich.
Credit goes to @verbalsiegeengine on Discord
-
For someone freshly interested in self hosting, what does breaking changes with respect to immich really mean? Does it mean that if I upgrade to this version, I have to rebuild my library, face tags etc? Or does it mean that things might stop working and some files might need to be changed, upgraded manually and things may get awry in doing so.
Normally a breaking change means after you apply the change it’s not easy/straightforward to rollback to the older version if you want to do that for whatever reason.
For example, a new version is released and underlying database table or structure changes. You upgrade properly, and find the new version has some bugs (or you simply don’t like it). If you want to use the older version again until the newer one is fixed it’s not a matter of simply point to old version.
As the database structure has fundamentally changed underneath in the new version, when you put back the old version it simply doesn’t understand the new structure and might stop working. You need ways to be able to make the DB structure compatible with the older application.
If the application is stable the devs might provide ways to do this. But since this is an alpha… You’re on your own.
TL;DR it means the older and newer version of the application aren’t strictly compatible with each other
I haven’t reviewed the changelog for this immich, but yes a breaking change typically means if you just went and updated you would have a broken system. sometimes something like you mentioned if a backend database is changed or db column attributes altered.
This scares me to an extent but as long as immich provides some instructions on what to do to get back on track, this should be okay.
Also, what happens if one skips multiple such breaking updates? Will it be my responsibility to hunt down the changes and make corresponding amends?
And finally, while I understand that immich is not supposed to be photo backup solution, does it allow export and import of metadata, tags etc? I ask because I intend to set it up and I may skip few of these updates and instead do a fresh install a year or so later. If I can simply export my settings, face ID info, albums from old setup and import it into the new one then it makes things very easy.
Otherwise the phrase breaking changes does sound really scary.
Yep
Yes
That part I haven’t read up on
Breaking changes are scary for running solutions. it is why IT has a mandate of “Never touch a running system” (security patches only)
Immich is a younger, quickly evolving project, so new features or improvements may justify breaking the upgrade path. There may be folks that share data migration tips when that happens. It is why in corporate world we never want to be on the latest version of something; let the non critical data users find the problems.
Also you may have seen this on the project page. Basically use at own risk until things mature:
⚠️ The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos!
As an example in an engineering software it had been forward compatible for 30 years, recently they changed the datatypes for certain expressions: some expressions that could be number type now were restricted to integer. This broke every formula built off of that expression type in legacy data. ugg
Cool - was trying to get set up with v1.94, but had real trouble getting pgvecto-rs to work properly, pgvector seems much more stable and better supported and was a breeze to get running
Literally was setting this up yesterday. Good thing I didn’t finish yet …
Fuck… late for me. Thanks watchtower… wonder if this means an update will fix it or it’s just dead and needs manual intervention
Lol - Immich is one of those stacks that I let Watchtower auto-upgrade. I don’t consider it mission critical if it breaks and it takes me a day or so to notice it (all my photos and videos are also backed up using Syncthing).
I’ve gotten used to just going to the repo if the error message for the container doesn’t immediately lead me to the fix.
Immich has breaking changes too often, so I disabled auto updates for the server and phone app. Updating every few months with backup beforehand is a good tradeoff for something as important as images.
Reading patch notes is especially important with some Immich releases requiring minor admin intervention, e.g. running an extract metadata job.
Each to their own. Immich devs themselves strongly recommend not relying on Immich as a backup solution.
I don’t, therefore I don’t consider it critical enough to worry about.