From ded03c4c054ab8b86e618183a14a5afcb758e293 Mon Sep 17 00:00:00 2001 From: meichthys <10717998+meichthys@users.noreply.github.com> Date: Sun, 12 Feb 2023 23:33:23 -0500 Subject: [PATCH] Add Duplicate Detection Feature --- features.md | 6 ++++- readme.md | 69 ++++++++++++++++++++++++++--------------------------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/features.md b/features.md index 948e2d9..07eafee 100644 --- a/features.md +++ b/features.md @@ -79,9 +79,13 @@ Can photos be shared with other users or non-users? Is there a search for the photos? Does it support semantic search, filtering, or other searching methods? +## Duplicate Handling + +Is there any functionality to manage duplicates? + ## User Defined Tags -Can photos have user-defined (not AI) tags applied, and be filtered by those tags? +Can photos have user-defined (not AI) tags applied, and be filtered by those tags? ## Docker Installation diff --git a/readme.md b/readme.md index 7548cb6..e63d272 100644 --- a/readme.md +++ b/readme.md @@ -4,41 +4,40 @@ There are many great free and open-source alternatives to paid photo libraries. ## Comparison -✅ = Feature exists in at least a limited fashion\ -🚧 = Feature may exist but may not be practical or officially released\ -❌ = Feature does not yet exist\ -#️⃣ = Subjective measure of feature quality (on scale of 0-10)\ -Tip: Hover over icons for missing/incomplete features for more information (link to repository issue, etc) - - -| Feature | [Damselfly](https://github.com/Webreaper/Damselfly) | [Immich](https://github.com/alextran1502/immich) | [Librephotos](https://github.com/LibrePhotos/librephotos) | [Lychee](https://github.com/LycheeOrg/Lychee) | [Nextcloud Photos](https://github.com/nextcloud/photos/) | [Nextcloud Memories](https://github.com/pulsejet/memories) | [Photonix](https://github.com/photonixapp/photonix) | [PiGallery2](https://github.com/bpatrik/pigallery2) | [Photoprism](https://github.com/photoprism/photoprism) | [Photoview](https://github.com/photoview/photoview) | [Piwigo](https://github.com/Piwigo/Piwigo) | -| :------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | -| [Github Stars](features.md#github-stars) | ![?](https://img.shields.io/github/stars/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/stars/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/stars/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/stars/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/stars/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/stars/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/stars/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/stars/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/stars/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/stars/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/stars/Piwigo/Piwigo?label=%20) | -| [Active Contributors](features.md#active-contributors) | 1 | 4 | 2 | 3 | 3 | 1 | 1 | 1 | 4 | 1 | 3 | -| [Source Language](features.md#source-language) | C# | Dart / Typescript | Python | PHP | JavaScript | PHP / Vue | Python | TypeScript | Go | Typescript / Go | PHP | -| [License](features.md#license) | ![?](https://img.shields.io/github/license/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/license/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/license/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/license/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/license/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/license/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/license/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/license/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/static/v1?label=%20&message=GPL-3.0&color=orange) | ![?](https://img.shields.io/github/license/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/license/Piwigo/Piwigo?label=%20) | -| [Demo](features.md#demo) | ❌ | [✅6️⃣](https://demo.immich.app/) | ✅6️⃣ | [✅](https://lycheeorg.github.io/demo/)4️⃣ | [✅](https://nextcloud.com/instant-trial/)7️⃣ | ✅6️⃣ | [✅](https://demo.photonix.org/login)8️⃣ | [✅](https://pigallery2.herokuapp.com/gallery)8️⃣ | [✅](https://demo.photoprism.app/library/browse)9️⃣ | [✅](https://photos.qpqp.dk/)9️⃣ | [✅](https://piwigo.org/demo)9️⃣ | -| [Freeness](features.md#freeness) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧](https://photoprism.app/get)7️⃣ | ✅🔟 | ✅🔟 | -| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | -| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅5️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | -| [Android App](features.md#android-app) | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | ✅[7️⃣](https://github.com/savvasdalkitsis/uhuruphotos-android) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://nextcloud.com/install/)4️⃣ | [✅](https://nextcloud.com/install/)4️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [🚧](https://github.com/photoview/photoview/issues/701)3️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | -| [iOS App](features.md#ios-app) | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | [🚧](https://github.com/LibrePhotos/librephotos-mobile)3️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://nextcloud.com/install/)5️⃣ | [✅](https://nextcloud.com/install/)5️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [✅](https://apps.apple.com/dk/app/photoview-media-gallery/id1578380271)6️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | -| [Desktop App](features.md#desktop-app) | ✅9️⃣ | ❌ | ❌ | ❌ | [✅](https://nextcloud.com/install/)2️⃣ | [✅](https://nextcloud.com/install/)2️⃣ | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | -| [LivePhotos Support](features.md#livephotos-support) | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅[6️⃣](https://github.com/LycheeOrg/Lychee/issues/1283) | [❌](https://github.com/nextcloud/photos/issues/344) | ✅8️⃣ | [❌](https://github.com/photonixapp/photonix/issues/250) | ❌ | ✅7️⃣ | [❌](https://github.com/photoview/photoview/issues/273) | [❌](https://github.com/Piwigo/Piwigo/issues/1677) | -| [Video Support](features.md#video-support) | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅[7️⃣](https://github.com/immich-app/immich/issues/203) | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | -| [Photo Map](features.md#photo-map) | ✅7️⃣ | ✅4️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅7️⃣ | ✅7️⃣ | ✅9️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | -| [Photo Discovery](features.md#photo-discovery) | ❌ | ❌ | ✅7️⃣ | ❌ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | -| [Albums](features.md#albums) | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | -| [Timeline](features.md#timeline) | ✅5️⃣ | ✅8️⃣ | ✅9️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1050) | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | -| [Photo Sharing](features.md#photo-sharing) | ❌ | ✅4️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | -| [Photo Search](features.md#photo-search) | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | -| [User Defined Tags](features.md#photo-tagging) | ❌ | [❌](https://github.com/immich-app/immich/issues/838) | ❌ | ✅5️⃣ | ✅️3️⃣| ✅️3️⃣| ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | -| [Docker Installation](features.md#docker-installation) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅](https://hub.docker.com/r/linuxserver/piwigo)7️⃣ | -| [Object/Face Recognition](features.md#object/face-recognition) | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1266) | [✅8️⃣](https://github.com/nextcloud/recognize) | [✅8️⃣](https://github.com/nextcloud/recognize) | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅6️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/1159)5️⃣ | -| [Basic Editing](features.md#basic-editing) | ❌ | ❌ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [EXIF Data](features.md#exif-data) | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/77) | ✅7️⃣ | [❌](https://github.com/nextcloud/photos/issues/226) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅6️⃣ | -| [Multiple User Support](features.md#multiple-user-support) | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | - + ✅ = Feature exists in at least a limited fashion + 🚧 = Feature may exist but may not be practical or officially released + ❌ = Feature does not yet exist + #️⃣ = Subjective measure of feature quality (on scale of 0-10) + Tip: Hover over icons for missing/incomplete features for more information (link to repository issue, etc) + +| Feature | [Damselfly](https://github.com/Webreaper/Damselfly) | [Immich](https://github.com/alextran1502/immich) | [Librephotos](https://github.com/LibrePhotos/librephotos) | [Lychee](https://github.com/LycheeOrg/Lychee) | [Nextcloud Photos](https://github.com/nextcloud/photos/) | [Nextcloud Memories](https://github.com/pulsejet/memories) | [Photonix](https://github.com/photonixapp/photonix) | [PiGallery2](https://github.com/bpatrik/pigallery2) | [Photoprism](https://github.com/photoprism/photoprism) | [Photoview](https://github.com/photoview/photoview) | [Piwigo](https://github.com/Piwigo/Piwigo) | +| :--------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- | +| [Github Stars](features.md#github-stars) | ![?](https://img.shields.io/github/stars/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/stars/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/stars/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/stars/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/stars/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/stars/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/stars/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/stars/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/github/stars/photoprism/photoprism?label=%20) | ![?](https://img.shields.io/github/stars/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/stars/Piwigo/Piwigo?label=%20) | +| [Active Contributors](features.md#active-contributors) | 1 | 4 | 2 | 3 | 3 | 1 | 1 | 1 | 4 | 1 | 3 | +| [Source Language](features.md#source-language) | C# | Dart / Typescript | Python | PHP | JavaScript | PHP / Vue | Python | TypeScript | Go | Typescript / Go | PHP | +| [License](features.md#license) | ![?](https://img.shields.io/github/license/Webreaper/Damselfly?label=%20) | ![?](https://img.shields.io/github/license/alextran1502/immich?label=%20) | ![?](https://img.shields.io/github/license/LibrePhotos/librephotos?label=%20) | ![?](https://img.shields.io/github/license/LycheeOrg/Lychee?label=%20) | ![?](https://img.shields.io/github/license/nextcloud/photos?label=%20) | ![?](https://img.shields.io/github/license/pulsejet/memories?label=%20) | ![?](https://img.shields.io/github/license/photonixapp/photonix?label=%20) | ![?](https://img.shields.io/github/license/bpatrik/pigallery2?label=%20) | ![?](https://img.shields.io/static/v1?label=%20&message=GPL-3.0&color=orange) | ![?](https://img.shields.io/github/license/photoview/photoview?label=%20) | ![?](https://img.shields.io/github/license/Piwigo/Piwigo?label=%20) | +| [Demo](features.md#demo) | ❌ | [✅6️⃣](https://demo.immich.app/) | ✅6️⃣ | [✅](https://lycheeorg.github.io/demo/)4️⃣ | [✅](https://nextcloud.com/instant-trial/)7️⃣ | ✅6️⃣ | [✅](https://demo.photonix.org/login)8️⃣ | [✅](https://pigallery2.herokuapp.com/gallery)8️⃣ | [✅](https://demo.photoprism.app/library/browse)9️⃣ | [✅](https://photos.qpqp.dk/)9️⃣ | [✅](https://piwigo.org/demo)9️⃣ | +| [Freeness](features.md#freeness) | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | ✅🔟 | [🚧](https://photoprism.app/get)7️⃣ | ✅🔟 | ✅🔟 | +| [Automatic Mobile Upload](features.md#automatic-mobile-upload) | [❌](https://github.com/Webreaper/Damselfly/issues/40) | ✅7️⃣ | ❌ | ❌ | ✅7️⃣ | ✅7️⃣ | ❌ | ❌ | ✅6️⃣ | [❌](https://github.com/photoview/photoview/issues/129) | ✅7️⃣ | +| [Web App](features.md#web-app) | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅8️⃣ | ✅5️⃣ | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅8️⃣ | +| [Android App](features.md#android-app) | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | ✅[7️⃣](https://github.com/savvasdalkitsis/uhuruphotos-android) | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://nextcloud.com/install/)4️⃣ | [✅](https://nextcloud.com/install/)4️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [🚧](https://github.com/photoview/photoview/issues/701)3️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | +| [iOS App](features.md#ios-app) | ❌ | [✅](https://github.com/alextran1502/immich#step-4-run-mobile-app)8️⃣ | [🚧](https://github.com/LibrePhotos/librephotos-mobile)3️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1013) | [✅](https://nextcloud.com/install/)5️⃣ | [✅](https://nextcloud.com/install/)5️⃣ | ✅[4️⃣](https://github.com/photonixapp/photonix-mobile) | ❌ | [🚧](https://docs.photoprism.app/user-guide/pwa/)4️⃣ | [✅](https://apps.apple.com/dk/app/photoview-media-gallery/id1578380271)6️⃣ | [✅](https://www.piwigo.org/mobile-applications)7️⃣ | +| [Desktop App](features.md#desktop-app) | ✅9️⃣ | ❌ | ❌ | ❌ | [✅](https://nextcloud.com/install/)2️⃣ | [✅](https://nextcloud.com/install/)2️⃣ | [❌](https://github.com/photonixapp/photonix/issues/61) | ❌ | ❌ | ❌ | ❌ | +| [LivePhotos Support](features.md#livephotos-support) | ❌ | ✅9️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/287) | ✅[6️⃣](https://github.com/LycheeOrg/Lychee/issues/1283) | [❌](https://github.com/nextcloud/photos/issues/344) | ✅8️⃣ | [❌](https://github.com/photonixapp/photonix/issues/250) | ❌ | ✅7️⃣ | [❌](https://github.com/photoview/photoview/issues/273) | [❌](https://github.com/Piwigo/Piwigo/issues/1677) | +| [Video Support](features.md#video-support) | [❌](https://github.com/Webreaper/Damselfly/issues/82) | ✅[7️⃣](https://github.com/immich-app/immich/issues/203) | ✅8️⃣ | ✅6️⃣ | ✅5️⃣ | ✅7️⃣ | [❌](https://github.com/photonixapp/photonix/issues/295) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅4️⃣ | +| [Photo Map](features.md#photo-map) | ✅7️⃣ | ✅4️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1051) | ✅7️⃣ | ✅7️⃣ | ✅9️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | ✅7️⃣ | +| [Photo Discovery](features.md#photo-discovery) | ❌ | ❌ | ✅7️⃣ | ❌ | ✅6️⃣ | ✅7️⃣ | ❌ | ❌ | ✅6️⃣ | ❌ | ✅1️⃣ | +| [Albums](features.md#albums) | [❌](https://github.com/Webreaper/Damselfly/issues/238) | ✅8️⃣ | ✅9️⃣ | ✅8️⃣ | ✅4️⃣ | ✅8️⃣ | ✅5️⃣ | ✅6️⃣ | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | +| [Timeline](features.md#timeline) | ✅5️⃣ | ✅8️⃣ | ✅9️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1050) | ✅4️⃣ | ✅9️⃣ | ✅5️⃣ | ✅5️⃣ | ✅5️⃣ | ✅9️⃣ | ✅3️⃣ | +| [Photo Sharing](features.md#photo-sharing) | ❌ | ✅4️⃣ | ✅9️⃣ | ✅9️⃣ | ✅8️⃣ | ✅8️⃣ | ❌ | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | +| [Photo Search](features.md#photo-search) | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅4️⃣ | ✅4️⃣ | ✅8️⃣ | ✅7️⃣ | ✅8️⃣ | ✅5️⃣ | ✅7️⃣ | +| [Duplicate Handling](features.md#duplicate-handling) | [❌](https://github.com/Webreaper/Damselfly/issues/97https://github.com/immich-app/immich/issues/83) | ✅6️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/753) | [❌](https://github.com/LycheeOrg/Lychee/issues/1762) | ✅[8️⃣](https://apps.nextcloud.com/apps/mediadc) | ✅[8️⃣](https://apps.nextcloud.com/apps/mediadc) | [❌](https://github.com/photonixapp/photonix/issues/422) | ✅5️⃣ | ✅[6️⃣](https://docs.photoprism.app/user-guide/library/duplicates/) | [❌](https://github.com/photoview/photoview/issues/801) | ✅6️⃣ | +| [User Defined Tags](features.md#photo-tagging) | ❌ | [❌](https://github.com/immich-app/immich/issues/838) | ❌ | ✅5️⃣ | ✅️3️⃣ | ✅️3️⃣ | ✅6️⃣ | ❌ | ✅5️⃣ | ❌ | ✅7️⃣ | +| [Docker Installation](features.md#docker-installation) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅7️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | [✅](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one)6️⃣ | ✅8️⃣ | ✅7️⃣ | ✅6️⃣ | ✅8️⃣ | [✅](https://hub.docker.com/r/linuxserver/piwigo)7️⃣ | +| [Object/Face Recognition](features.md#object/face-recognition) | ✅8️⃣ | ✅6️⃣ | ✅8️⃣ | [❌](https://github.com/LycheeOrg/Lychee/issues/1266) | [✅8️⃣](https://github.com/nextcloud/recognize) | [✅8️⃣](https://github.com/nextcloud/recognize) | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅6️⃣ | [✅](https://github.com/Piwigo/Piwigo/issues/1159)5️⃣ | +| [Basic Editing](features.md#basic-editing) | ❌ | ❌ | ❌ | ❌ | ✅6️⃣ | ✅6️⃣ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [EXIF Data](features.md#exif-data) | ✅9️⃣ | ✅7️⃣ | [❌](https://github.com/LibrePhotos/librephotos/issues/77) | ✅7️⃣ | [❌](https://github.com/nextcloud/photos/issues/226) | ✅8️⃣ | ✅7️⃣ | ✅7️⃣ | ✅9️⃣ | ✅7️⃣ | ✅6️⃣ | +| [Multiple User Support](features.md#multiple-user-support) | ✅7️⃣ | ✅7️⃣ | ✅8️⃣ | ✅6️⃣ | ✅9️⃣ | ✅9️⃣ | ✅7️⃣ | ✅7️⃣ | [❌](https://github.com/photoprism/photoprism/issues/98) | ✅6️⃣ | ✅8️⃣ | **Note:** This list is by no means comprehensive. For links to other photo library projects, see the [Awesome Self-Hosted](https://github.com/awesome-selfhosted/awesome-selfhosted#photo-and-video-galleries) list and the [Awesome Privacy](https://github.com/pluja/awesome-privacy#photo-storage) list.