Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UX: Timeline View #152

Open
ghost opened this issue Dec 7, 2019 · 91 comments
Open

UX: Timeline View #152

ghost opened this issue Dec 7, 2019 · 91 comments
Assignees
Labels
enhancement Refactoring, improvement or maintenance task priority Supported by early sponsors or popular demand ux Impacts User Experience

Comments

@ghost
Copy link

ghost commented Dec 7, 2019

I think a timeline view or a timeline scrollbar, like in Google Photos or Synology Moment, would be a cool feature to have.

@lastzero lastzero added the idea Feedback wanted / feature request label Dec 8, 2019
@dennorske
Copy link
Contributor

I agree, this also sounds like what #154 wants. I support it 👍

@lastzero
Copy link
Member

lastzero commented Dec 14, 2019

I personally don't find the timeline scrollbar in Google Photos helpful in practice. We thought more about a punch card view and automatic clustering by date & location.

Can you post some screenshots of Synology Moment?

@0liu
Copy link

0liu commented Dec 16, 2019

I think Synology Moment tried to imtate Apple Photos moments function. Essentially it uses the combination of time and location to group photos into "moments", instead of time only as in a timeline.

@dennorske
Copy link
Contributor

Moments sound cool!
But considering the current self hosting market, there's not many services supporting a timeline feature. One of the main reasons is that I want it to easily scroll through pictures sorted by date. I have been looking for over 2 weeks and can't seem to find something useful except for maybe plex and the currently abandoned ownphotos project.
Else I would survive with a standard gallery/year/month folder structure, like many others.

I am more than happy to donate to this feature specifically, if it hasn't been considered added to the project. I do think it will cover a big gap in the projects out there.

@lastzero
Copy link
Member

@dennorske I guess it will take a few donations to really pay a developer to do this, but we listen to community feedback and have this on our list once the basics are done :)

If we do a "pro" version with additional features, our sponsors will certainly get a free license!

@0liu
Copy link

0liu commented Dec 18, 2019

As far as I know ownphotos has implemented timeline and place view separately, but not moments.

@dennorske
Copy link
Contributor

dennorske commented Dec 28, 2019

Could it be similar to what Nextcloud maps have? There's an app in the store called maps, and it allows you to save locations, as well as visualise GPS tagged photos. It scans through and shows up like this:
image.md.png

The nice thing is, when you zoom out, the pictures groups up. If they are taken in a small area, and you click the icon with a number under, it spreads out all the thumbnails around and you can have a glimpse at them:

image14ec34a6f24801d5.md.png

Reason I am showing it, is because it looks very fluent and nice. Will this be similar to what is wanted above? There is also a time-period slider on the bottom where you can define from-to dates, and the map will show only the relevant pictures.

@lastzero
Copy link
Member

@dennorske Thank you very much for the screenshots! We spent the last couple of days (Merry Christmas!) preparing our database for efficient clustering (country/year/month) and location search using S2 cell IDs (more efficient than lat/long). See also #154 (comment).

Next, we need to provide our own location service to actually be able to index many photos in acceptable time. When this is done, we can finally focus on the UI, certainly room for improvement. One of our ideas is to show a path on the map where you've been and then you can travel along.

@lastzero lastzero added the priority Supported by early sponsors or popular demand label Dec 30, 2019
lastzero added a commit that referenced this issue Dec 30, 2019
Use this flag to test new features before they are stable.

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
lastzero pushed a commit that referenced this issue Jan 23, 2020
* Backend: Add API endpoint for photo count per month

* URL: /api/v1/moments/time
@lastzero
Copy link
Member

Looks like you get this feature in our mobile app first!

@leopoldsedev
Copy link

Here's some more inspiration for the UI. It is taken from plex. I think it's nice how photos are separated by day and dynamically tiled based on the image size. The scrollbar on the right is overlayed by the years and the smaller ticks indicate a high density of photos there. Overall it's nice to scroll through memories like this.
plex-timeline-blurred

@lastzero
Copy link
Member

Google Photos is similar, personally never found this very useful or pleasing to my eye TBH. Lots of space wasted when you only have one or two photos per day.

@dennorske
Copy link
Contributor

If not a timeline, it could be a scrollbar that shows month + year close to it when you scroll?
Some sort of seeking like that is very handy, at least if you're an ancient google photos user like me :)
It is extremely handy to do. But I would not say this is the most important feature, it is more a nice-to-have if #154 (2nd part of Comment) is implemented.

@lastzero
Copy link
Member

lastzero commented Feb 2, 2020

Maybe I can't properly use it because my mouse is too fast 😄

Let's focus on the essentials to get a stable release, there will be enough time to experiment afterwards.

Clustering by year, month and country is easy with our current database schema. We'll do sharing next as this has higher impact on our architecture. Worked a lot on events and validation recently for a smooth user experience.

@dennorske
Copy link
Contributor

That is great, thank you for all the efforts in the project!
I am excited to see the sharing come along, that is clearly something I am missing. Good luck

@mpodshivalin
Copy link

If we do a "pro" version with additional features, our sponsors will certainly get a free license!

@lastzero
I'm off-topic, but I've seen a lot of mentions of a possible Pro version. Are there any plans on how it will be licensed? E.g. a free-as-a-beer but proprietary license is not something I'd potentially want

@lastzero
Copy link
Member

Fact is, we want to be as free and open as possible and think this provides real value to our users, like when you look at how we develop together with our community.

On the other hand, we've been working full-time for about ~2,5 years now and there are still a lot of requests waiting to be implemented. GitHub sponsors doesn't even cover the monthly costs of our servers. So the idea is to release a special version with additional features for our sponsors, contributors and eventually paying customers. See "Funding" in our docs. Obviously you shouldn't be allowed to take this and sell it on your own. Suggestions welcome.

@mpodshivalin
Copy link

Fact is, we want to be as free and open as possible and think this provides real value to our users, like when you look at how we develop together with our community.

On the other hand, we've been working full-time for about ~2,5 years now and there are still a lot of requests waiting to be implemented. GitHub sponsors doesn't even cover the monthly costs of our servers. So the idea is to release a special version with additional features for our sponsors, contributors and eventually paying customers. See "Funding" in our docs. Obviously you shouldn't be allowed to take this and sell it on your own. Suggestions welcome.

@lastzero
Of course selling/getting funding for free software is a difficult issue.
I've checked the Funding page and the first thing I see is "This project is about freedom and privacy but not necessarily about free beer.". So, it has to be free software, or else there won't be much of a difference with other proprietary projects.

According to the funding page, there won't be Enterprise customers (as opposed to Nextcloud for example). So the project should be funded by regular users, which value privacy so they won't accept the proprietary solution. And by "Regular users" I mean not a super tech-savvy users (it's not a big market), but real regular people. And the most important thing for regular people is convenience.

Make the source code available for both versions with the same license, but do not distribute a "Pro" version for free. This is how e.g. OpenProject works - both versions are GPL'ed. So yes, it should be possible to obtain the source code for the "Pro" version without paying, but it shouldn't make sense because it won't be convenient. And the most important thing for regular people is convenience. So if a user obtained the source code for the "Pro" version - he must build everything from source, he won't have upgrades and will have a generally semi-working setup in a long term. For example - iOS user can't have this app even if he has a source code, unless he has an up-to-date Mac, general knowledge on how to install apps to and iPhone and he must have a developer account (which won't solve all of the problems). This is very inconvenient and it's better and easier to buy an app, even if it's GPL'ed. This is my opinion :) And it's just one example - servers can be more convenient, too.

And, actually, getting back to the topic, from my experience, regular people, when they say they need a "Cloud", mainly mean photos, and they certainly mean Timeline. This view is the default view in Apple+Google photos, and it is mainly used because people (including me) don't have much time to organize their photos, they don't want to add photos to albums unless it was an event, something significant, like a trip. And they don't want to filter photos by year, month, etc. they don't want to think. The Timeline interface, though seems simple, lets people look for their photos in a convenient way, with the ability to go to a specific date and grouping by date is letting them find events quickly without organizing anything

@lastzero
Copy link
Member

Of course selling/getting funding for free software is a difficult issue.

Shouldn't be difficult. I'm part of the free software community since the 90s and it was clear from early on, that free doesn't mean free beer. I see it as an additional feature that provides value to our users. Unlike back in the 90s, software as a service is very popular today, so the GPL only provides limited protection to us and other startups that invest a lot of time and money into their products.

It's not clear to me why the right to commercially distribute every line of code we release should be important to private end-users.

If there were more sponsors, we could release everything under a MIT or BSD style license. As a matter of fact, we only have very few sponsors and no other funding whatsoever. So we need to find a different solution unless you want us to stop working on this.

And, actually, getting back to the topic, from my experience, regular people, when they say they need a "Cloud", mainly mean photos, and they certainly mean Timeline. This view is the default view in Apple+Google photos, and it is mainly used because people (including me) don't have much time to organize their photos, they don't want to add photos to albums unless it was an event, something significant, like a trip. And they don't want to filter photos by year, month, etc. they don't want to think. The Timeline interface, though seems simple, lets people look for their photos in a convenient way, with the ability to go to a specific date and grouping by date is letting them find events quickly without organizing anything

For now, you have the new Calendar view plus the year and month search filter in our main view. You can also sort by date (added, newest first, oldest first), relevance, similarity and file name. Plus we automatically create moments based on country and year for you. It feels like this is enough for a first release and of course we're using your feedback to continuously improve our product.

lastzero added a commit that referenced this issue Jun 15, 2020
See #152 (comment)

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
@lastzero
Copy link
Member

@mpodshivalin Pro doesn't mean you won't be able to get or modify the source code. Take a look at how GitLab handles dual-licensing, they also distribute the code.

Everyone can use our software under the terms of the AGPL from now on: https://twitter.com/browseyourlife/status/1272449177100918786

This is far from being proprietary. Those who need additional rights or advanced features like multi-user support MAY pay for it at some point in the future. We pay for development and take all the risk. Let us know if you get a better deal somewhere :)

lastzero added a commit that referenced this issue Jun 16, 2020
See #152 (comment)

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
@lastzero lastzero added enhancement Refactoring, improvement or maintenance task and removed idea Feedback wanted / feature request labels Jun 23, 2020
@lastzero lastzero self-assigned this Jun 23, 2020
@lastzero
Copy link
Member

lastzero commented Nov 22, 2022

Has anyone tested how well Apple's approach works for libraries with 1 to 4 TB of pictures? From what I've heard so far, it scales poorly and/or consumes huge amounts of RAM. Also, do you mean the mobile or desktop Photos app? What works well on mobile may not be best for desktop browsers and vice versa.

@inthreedee
Copy link

inthreedee commented Nov 22, 2022

Also, do you mean the mobile or desktop Photos app?

No, this was the iCloud website.

Has anyone tested how well Apple's approach works for libraries with 1 to 4 TB of pictures?

I have a little over 100GB of photos in there, so I don't know about terabytes. Their highest storage plan is 2TB so it's not possible to go beyond that.

From what I've heard so far, it scales poorly and/or consumes huge amounts of RAM.

I don't know if this is relevant, but they just released a new version of the iCloud website. I've never made heavy use of their photos app online before but, when I saw the banner about a new, faster site, I thought I'd click around and check it out again. The initial photos page loads in about 3 seconds for me. I'd say that, while scrolling, the photos load in about as fast or a tiny bit faster than google photos does for me while scrolling. From what I remember, this is an improvement over the old version.

As far as RAM usage, I didn't notice any huge change. Maybe 200-300MB? But, honestly, modern computers have so much RAM that who cares if something uses a lot of it. Please, use my RAM* and give me the performance I want from the thing I'm using at the moment. That's why I have RAM. Empty RAM is wasted RAM.

(edit: *within reason. Obviously we still need enough free RAM for multitasking with other apps)

@lastzero
Copy link
Member

I was asking because I saw Apple users complaining on Twitter that adding lots of new files used more than 200 GB of RAM, so they had to close it and restart. That of course was for the Photos desktop app. Also, I'm not sure of scrolling is the best way to navigate through very large libraries or if it's rather a use case specific to private users with small to medium sized libraries where they took all the pictures on their own, so they also know what pictures exist and when they were taken. There are many uses cases in practice, where this is not given.

@inthreedee
Copy link

I saw Apple users complaining on Twitter that adding lots of new files used more than 200 GB of RAM

Sounds bogus to me. I just checked the apple store and iMacs can only be configured with a max of 16GB RAM. Over 200 is... a lot of RAM. Either way, I don't see any RAM issues using the website but I don't have a Mac so I can't check the desktop app. And I don't think the behavior of their desktop app is really relevant to us anyway, right?

Also, I'm not sure of scrolling is the best way to navigate through very large libraries

What other ideas are on the table?

so they also know what pictures exist and when they were taken

Sometimes I just want to browse my memories from a certain trip and want to scroll through them. I'll have a rough idea of what timeframe I want to jump to, but maybe not specifically. It could be as general as just "sometime three years ago" and the act of scrolling helps me remember and refine where I'm looking. Sometimes I scroll slowly, sometimes I scroll quickly to jump past a particular timeframe before slowing back down again.

When I'm doing this, I'm usually not looking for anything in particular once I've jumped to the general timeframe where I want to start browsing. This is what I meant a few posts up when I was referring to a kind of "showcase" behavior. But I will also use the same procedure when I am looking for a particular photo but only have a general idea of the timeframe it was taken.

@inthreedee
Copy link

But I will also use the same procedure when I am looking for a particular photo but only have a general idea of the timeframe it was taken.

Just to elaborate further on this. Let's say I'm browsing my photos from a trip a few years ago and I want to look for a particular moment. I remember that it was fall, so I scroll to roughly that date range. Then I remember that the leaves had more color on them than what I see here, so I scroll later into fall until the colors on the trees match what I remember.

I'm not sure of scrolling is the best way to navigate through very large libraries or if it's rather a use case specific to private users with small to medium sized libraries where they took all the pictures on their own

Based on my example of leaf colors, I'd argue that this kind of scrolling behavior is even more valuable for larger libraries or ones where you only have some vague visual reference points to go searching for (ie, if they're not your own photos). The act of scrolling is a visual refinement filter.

@lastzero
Copy link
Member

Thank you so much for your feedback! We'll look into it once we're done with the features that are currently in development.

It always depends on where the software is running. Keep in mind that Apple's backend servers are extremely powerful compared to a Raspberry Pi or typical desktop PCs. It also depends on whether it's a desktop or web application. That's why I was asking.

@inthreedee
Copy link

That's why I was asking.

Ah, makes perfect sense.

We'll look into it once we're done with the features that are currently in development.

Don't mind me if I keep the discussion going in here whenever I have further ideas or things to compare against. I feel like it's probably a good idea to have a range of options from various other photo tools for when the time comes to actually look into implementing this.

@GlassedSilver
Copy link

I saw Apple users complaining on Twitter that adding lots of new files used more than 200 GB of RAM

Sounds bogus to me. I just checked the apple store and iMacs can only be configured with a max of 16GB RAM. Over 200 is... a lot of RAM. Either way, I don't see any RAM issues using the website but I don't have a Mac so I can't check the desktop app. And I don't think the behavior of their desktop app is really relevant to us anyway, right?

Also, I'm not sure of scrolling is the best way to navigate through very large libraries

What other ideas are on the table?

so they also know what pictures exist and when they were taken

Sometimes I just want to browse my memories from a certain trip and want to scroll through them. I'll have a rough idea of what timeframe I want to jump to, but maybe not specifically. It could be as general as just "sometime three years ago" and the act of scrolling helps me remember and refine where I'm looking. Sometimes I scroll slowly, sometimes I scroll quickly to jump past a particular timeframe before slowing back down again.

When I'm doing this, I'm usually not looking for anything in particular once I've jumped to the general timeframe where I want to start browsing. This is what I meant a few posts up when I was referring to a kind of "showcase" behavior. But I will also use the same procedure when I am looking for a particular photo but only have a general idea of the timeframe it was taken.

I can relate to this A LOT.

Scrolling is not ALWAYS the best discovery method, but no method will ever the best in every situation, that's why as many should be supported as possible.

@spoorun
Copy link

spoorun commented Dec 1, 2022

From my experience (dealing with hundreds of thousands of photos, usually untagged, but even when well catalogued) scrolling is the most intuitive way, as per examples others have given, people use many methods to remember and search, including visual, visual memory, colours, rough dates, and objects catching their eye.

Real example, I remember being with a friend in Cornwall and seeing some tall boats. I've no idea what year even.

On Google Photos, I can search for boats, and scroll through. Then I find a picture of a boat in Cornwall.
Then I go to that date in the timeline and scroll around that date to find photos with those friends.

Without scrolling, there's no feasible way I could find that.

Also as I'm looking, the thumbnail photos trigger and surface memories of what I want to find (and other things).

For many of us, just scrolling through a particular period, without even opening specific photos necessarily, is a key way of utilising those photos - surfacing memories and remembering periods of time/events.

@lelemm
Copy link

lelemm commented Mar 6, 2023

Hi everyone. I'm prototyping this feature.

Right now the biggest problem with the prototype is that it is getting too heavy for the browser to load all years/months/pics divs (even without the pictures). I have 40k pictures in my collection, its not holding up. I will have to create some on-the-fly loading when selecting a position in the timeline.

image
The timeline is using a heatmap to show where there are more pics. For fun atm.

Right now I'm trying to load the content on demand based where the user selected in the timeline and maintaining the scroll position after that.

@arthuragone
Copy link

I do also find this feature very useful. i have 20k+ pictures over a 15 years span. And as it is possible to "infinite" scroll on the search tab I agree with people on this.

I do understand it might be ressource heavy.

Nexcloud memorie do have this as their basic explorer. maybe it for having a look

@lelemm
Copy link

lelemm commented Mar 31, 2023

PhotoPrism.-.Personal.-.Microsoft.Edge.2023-03-31.15-45-24.mp4

Had some time to dev a little bit more
There are a lot of glitches yet, sometimes it get lost and try to load images to shouldn't :D .

@lelemm
Copy link

lelemm commented Mar 31, 2023

Some bumps in the path to make this work:

I had to create two new api endpoints:

/api/v1/photos/timelines: Returning Year | Month | Count of pictures.
This data is used to build the "scrollbar". I'm using the count just to build a heatmap (that is not working btw lol).

/api/v1/photos/timelinedetails: Returning Year | Month | Day | List of pictures in that day.
At first I was returning the hash of each picture then I was trying to calculate when call the api to load the rest of the image data.
The part of calculating when to load the rest of image data was taking too much effort, and I was not able to focus on the interactions in the frontend, so, instead of returning just the hash, right now it's returning the entire photo object (not ideal ofc).

Right now you can't hold mouse down to keep moving the timeline, you have to click and release. That's not the behavior that I'm looking for. For a smooth ux should be nice to be able to hold/slide.
I'm using debounce hoping it would fix this issue, but I guess I need to improve the logic of removing and adding new images based on the position of the scrollbar.

Btw, I was not able to reuse the infinite scroll component that the other pages are using. So I'm creating a new one for the timeline page. So, all the event expected to work out of the box will have to be implemented (like window resize).

I did not tried none of this with a touchscreen yet.

There are a lot of stuff to make this happen.

At some point I will have something that I will accept as a solution for myself, but the effort to make this happen is far too big to have something to be released to the product.

@lelemm
Copy link

lelemm commented Mar 31, 2023

Other thoughts about this:

  • For my personal preference, would be nice to get rid of the normalized photo sizes. Would be nice to have each photo with its own proportions.
    Right now I'm using the thumb that returns the square normalized, but the way I'm building the logic, it should work with proportion.
    The only drawback of using any proportions is that we don't know the image size before hand, the only moment that the image size is used ATM is when the page is calculating how big should be the viewport for the endless scroll. This could make the viewport have more or less images in each case

  • At some point I will have to implement the search in this page. ATM it bring all pictures in the database.

  • I was analyzing the google photos page and noticed that it uses indexed-db heavily. Thinking about using it and how complex would make things to control, like cache.

@Radiokot
Copy link
Collaborator

Radiokot commented Jul 7, 2023

The timeline feature (grouping + fast scroll) is available in the unofficial PhotoPrism gallery for Android.
The scrolling has limitations, like you can't scroll to exact day and all the months are added to it regardless if there are photos or not. But I think it is much better than nothing.

@0liu
Copy link

0liu commented Jul 7, 2023

The timeline feature (grouping + fast scroll) is available in the unofficial PhotoPrism gallery for Android. The scrolling has limitations, like you can't scroll to exact day and all the months are added to it regardless if there are photos or not. But I think it is much better than nothing.

Very cool! Hope there will be an iOS app like this.

capraynor added a commit to capraynor/photoprism that referenced this issue Jan 17, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Jan 23, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Jan 27, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Jan 29, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Feb 7, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Feb 29, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Mar 4, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Mar 14, 2024
capraynor added a commit to capraynor/photoprism that referenced this issue Mar 15, 2024
@db-wally007
Copy link

I was looking for an app to replace Google photos and remove my dependency on Google.
We dont create albums or categorize our photos, we use zoom view with timeline and this is number 1 feature I look for in the alternative.

Unfortunately, this is not in PhotoPrism so we can not use it at the moment. Looking forward to the feature if it gets implemented similar way like in Google Photos or Apple Photos (zoom like timeline in Apple photos is amazing feature for those that do not take time to curate their pictures library)

@Radiokot
Copy link
Collaborator

@db-wally007 give Gallery for PhotoPrism a try:
#152 (comment)

@GlassedSilver
Copy link

@db-wally007 give Gallery for PhotoPrism a try: #152 (comment)

That's just a third-party option and only available on Android.

Sadly not really an option if you use Photoprism on other platforms and prefer first-party support and integration of features.

Additionally, there's no pinch to zoom in and out for quick scope changing from year to month to moment scopes in and out.

This may sound like miniscule differences on paper but massively impacts how people browse their libraries.

That being said it IS a very helpful app that I once installed simply because it also gives you a way to media pick in any Android app photos from Photoprism without downloading them first. (it is a media picker provider, which PWAs no matter how good they are cannot provide afaik)

@db-wally007
Copy link

Thanks for the response but we use mostly iOS and and web. I"ve tested the demo site before testing it on my own hardware and its not really comparable to true zoom to view timeline feature found in Google Photos/iOS photos or even NextCloud.

Personally I dont really care much about search, face recognition etc. in photos app - I just want to view my archive on the timeline and able to share properly via link/email/shared album. (everybody has different requirements obviously - but with zooming timeline view I dont have to spend any time on curation/maintenance of my pictures (either albums, folders, events etc ...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Refactoring, improvement or maintenance task priority Supported by early sponsors or popular demand ux Impacts User Experience
Projects
Status: Upcoming
Development

No branches or pull requests