nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
26.68k stars 4k forks source link

Dashboard overview #20930

Closed rullzer closed 4 years ago

rullzer commented 4 years ago

Summary

The new Dashboard is the one overview for your whole Nextcloud, and for individual projects. It is a logical continuation of Nextcloud Hub, and an overview of what happens.

Nextcloud Dashboard is the first thing you open at the start of your workday.

It helps you catch up with what happened while you were gone, and focus on what needs doing.

Implementation

Panels

Details

The dashboard should show an overview of what is going on in your account. This is done via a a clean overview and a plugin systems where apps can hook in. Hence if you don't have talk you won't see talk. But if you do it shows up (as an example).

Mockups

Dashboard plain

Dashboard projects

Polishing

From design review call:

Tasks

Panels

Core

Possible additional

API

Dashboards

In the first iteration we will only provide a general dashboard. In a second step this API can be extended to provide different dashboards based on circles/user groups/projects that only show related entries.

Possible considerations for later

Panels

Apps can register their implementation of IPanel at a DashboardManager. The panel has a set of static properties (appId, title, order, icon). For the second iteration additional interfaces can be implemented so apps can indicate their support for a group or circle dashboard.

For registering we would dispatch an event that apps can use then.

Frontend

Apps that do not provide a list of entries can register a custom handler to render their UI like this:

registerDashboardPanel(appId, (view, el) => {
  const app = new VueComponent()
  app.$mount(el)
})

The frontend would then just receive a list of panels from the backend and call the related callback in order to let the apps render their panel UI.

Considered alternative

The app integration that were collected can be abstracted to a simple list view for each dashboard column where each list entry would be provided by the backend and mapped to the following wireframe for rendering: icon/avatar, title, description (optional), link (optional) which would be similar to how activities work.

This should be suitable for most of the app scenarios from above. While the static frontend approach would have the benefit of being a more standardized UI and most likely would be better from a performance perspective, I think we will run into limitations with that as soon as we want to add more interaction on the dashboard panels (e.g. writing a social post directly from there) or if apps need custom rendering (e.g. talk messages containing mentions or images) this approach will not be suitable anymore and we need to allow apps to provide their own frontend logic. That is I decided to mainly propose the dynamic frontend approach.

To clarify: Depending on if and how we want to integrate mobile apps at a later point, we still might need to have something like that so apps can fetch the list of entries and render it with native UI elements. If mobile integration is a requirement from the beginning on, we would need to implement both approaches.

Acceptance criteria

To be extended.

Spartachetto commented 4 years ago

I do think that a dashboard would be extremely useful.

My impression is that you should consider if you want only something that offers an overview of the different apps (Recent files, Upcoming events, ...) or if you want to provide also other two possibilities:

splitt3r commented 4 years ago

I think https://github.com/nextcloud/dashboard should be the base fot that. It is not mentionbed yet but looks like a good starting point for your idea.

juliushaertl commented 4 years ago

I've added some basic writeup of my thoughts regarding the implementation to the first post. Please have a look @rullzer and also @jancborchardt. Feedback is very welcome.

Spartachetto commented 4 years ago

First of all excuse me if I am hijacking an organisational issue and tell me if my feedback is improper. Second point: If you are interested I could try to prepare mockups even if I am not a designer.

Said that I stress that the mockup of @juliushaertl is exactly what I was describing with "having an overview of the different apps". I think that, as an user, I am not interested in the different Nextcloud apps, but in my different things to do. So it could be more interesting to know that Julius communicated with me (via an email and a comment in a file and a Talk message) rather than having mail, file and talk apps resumes. At the same time I'd like to have a quick overview of my ToDos (apps: calendar + tasks + deck +...). And also a resume of my current projects (new files, updates from members, ToDos, maybe trending tags,....).

Let me know if you are interested in these ideas.

juliushaertl commented 4 years ago

@Spartachetto Feedback is of course always welcome. :wink:

As written in the proposal above we aim for small steps here. The first part will be implementing a generic dashboard that tries to give important information to the user in general. That would already cover what you describe with your "todos" (e.g. calendar would show the next upcoming events, tasks/deck your todo list for today/upcoming due, talk your recent mentions for example).

For a second iteration we can then think about how we can provide filters that would offer different dashboards e.g. based on a a group or circle for example as proposed. If course we could also consider having something like a user profile dashboard, but as mentioned let's try to get the basics done first and see if that is adopted and how we can extend that to further use cases.

Spartachetto commented 4 years ago

@juliushaertl Thank you!

I agree with the small steps. I just hope that the beginning will make possible the next steps. If you could build something that makes possible (even if not realized in the first iterations) a section like the following: Mentions you were mentioned by:

That would be more than enough for my taste ;)

juliushaertl commented 4 years ago

So from the technical specification this would not be an issue, the limitation to an app is just from a code perspective, so there could be one app that provides the mentions list panel but collects all of those from across different deck, talk, comments.

cc @jancborchardt As this sounds like nice additional app integration :wink:

juliushaertl commented 4 years ago

and cc @Clementine46 on this issue since we were talking about the dashboard during our projects design call

Spartachetto commented 4 years ago

That sounds great!!! Maybe, if technically meaningful, the files app could provide a set of basic functionalities that collect the different apps data, like mentions, tags and DAV (calendars)...

ChristophWurst commented 4 years ago

For registering we would dispatch an event that apps can use then.

How about we do it via #20573/#20865 instead? :grimacing:

juliushaertl commented 4 years ago

Sounds good, I can move that over when it is ready :grin:

Let me add a todo to the pr.

ChristophWurst commented 4 years ago

Sounds good, I can move that over when it is read

Awesome. I want to continue this evening!

ChristophWurst commented 4 years ago

when it is ready

Go go go :koala: :rocket:

e-alfred commented 4 years ago

Is there a way for apps using the old dashboard app to migrate to the new dashboard?

juliushaertl commented 4 years ago

@nickvergessen @ChristophWurst @georgehrke I'd prepare some basic implementation skeleton for the Talk/Mail/Calendar dashboard panels similar to what I already started in Talk. Do you have time to look into this so we have at least a basic dashboard panel for our core apps in 20? Would you be able to pick up from the provided skeleton then, since you basically know your apps internals a lot better, especially how the relevant data to show could be obtained?

cc @rullzer

ChristophWurst commented 4 years ago

Sure, but I'll need some specs about what to show there :)

Mail: Important & unread, important mails, unread, favorite, recent.

Just some stats or actual messages?

juliushaertl commented 4 years ago

Sure, I'll discuss that with @jancborchardt and provide you with details in the skeleton pr then.

rullzer commented 4 years ago

Sure, but I'll need some specs about what to show there :)

Mail: Important & unread, important mails, unread, favorite, recent.

Just some stats or actual messages?

Basically what you show in the mail client as well. Then when you click on it we open mail.

georgehrke commented 4 years ago

What would we need for the calendar? Something like "What's on your schedule today?"

juliushaertl commented 4 years ago

Here is what we collected in the first post:

Files: recommended files, shares to accept. Additional: recent, favorite, commented with @mention of you.
Talk: mentions and ongoing calls. Future possibly: favorites, recent conversations. When only one conversation is linked to a project, it can be directly shown. Possibly even only show the messages where you were @mentioned.
Mail: Important & unread, important mails, unread, favorite, recent.
Calendar: upcoming, invitations

Nothing fixed decided yet, but so you get an idea

Spartachetto commented 4 years ago

First of all, I'd like to say that this new dashboard looks really cool!!!

I'd like to provide a suggestion in a better way of what i did before. Sorry if the images are not high quality...!

What you are doing is a sort of summary of the different apps: what is happening in the Talk app, in the email app, ...

I think that a really interesting possibility would be to provide other visualizations that are not bound to the apps and display informations of different apps but logically related.

I do get that this could be an evolution and having a functional and useful dashboard is a really good step. Yet I am just trying to provide what I deem a good suggestion.

Let me try to provide some examples to better clarify what I mean:

Looking at your time-line you would have something like this: 2Timeline It tries to display your dates and deadline of today and this week taking them from your calendars, your tasks, your deck boards, ..... It also try to display your ongoing activities, like the four months language course, but this is really just a suggestion.

Looking at your communications you would have something like this: 3Communication Again it tries to display your communications of interest taking them from your emails, the comments other users put on common files, talk messages, ..... It is clear that this is not easy, yet you could try to leverage all the work made in the email app on the Importance classifier to select the displayed emails and also the work made for the reccomendations app for the displayed comments. In addition this could maybe take advantage of the work done in #19075 .

Another possible visualization could be all the info connected to a specific Project; 4Projects trying to display all the "actions" connected to the project, from new folders to new comments to the calendar items of today.

Hope this suggestion will help you. I am also clearly more than willing to clarify more what I mean, especially if my mockups are not clear ....

Spartachetto commented 4 years ago

Another medium/long term suggestion: it could be interesting to have the possibility to interact with the dashboard via Flow.

I mean to have the possibility to create a rule in Flow that allows as an output a "message" in the dashboard

MarkPartlett commented 4 years ago

Why are you calling this new screen a 'dashboard' when it is a 'workspace' ? :) Why didn't you add 'panels' to the Talk interface? ...and leave the dashboard app for dashboard chart/gauge widgets?

MarkPartlett commented 4 years ago

I didn’t see a request to the Nextcloud Community before disabling functionality of the iwidget service? DashboardCharts videos on YouTube have passed 10K views and the DashboardCharts app has been downloaded over 20K times. DashboardCharts requires the iwidget service.

Spartachetto commented 4 years ago

@MarkPartlett I am a simple user of Nextcloud. I was proposing what in my humble opinion are improvements of the mockups at the beginning of this issue.

I never used the DashboardCharts app, yet I've seen the videos and I find it really cool.

About the path taken by the developers, you have to talk with them.... Really hope you find a way for your app to coexist with the new tools

MarkPartlett commented 4 years ago

I like the mockups and applaud the work done, it looks awesome! 'Dashboard' is the wrong name for it and depreciating the iwidget service is unfair. Why not create a ‘hub’ or ‘workspace’ app/service as the ‘start-screen’?

Spartachetto commented 4 years ago

@jancborchardt , @rullzer and @juliushaertl not sure that the naming of this fits in UI... Could you have a look at @MarkPartlett proposal?

As a non-native English speaker I'd probably pick ‘workspace’, but that's just my 2 cents...

ChristophWurst commented 4 years ago

depreciating the iwidget service is unfair

Mind elaborating on this claim?

MarkPartlett commented 4 years ago

The iwidget service is used by multiple apps. Disabling it because of one requirement is unfair. Dashboard API #21346:

Deprecating the old dashboard(iwidget) API code :

 * Returns the IWidgetConfig for a widgetId and userId
 *
 * @since 15.0.0
 * @deprecated 20.0.0
MarkPartlett commented 4 years ago

I believe the nextcloud community should have a right to decide if a 'service' should be removed?

MarkPartlett commented 4 years ago

As I have stated before, I think the new mockup looks great…. But why remove functionality ?

ChristophWurst commented 4 years ago

Because the API was simply so complex that nobody even dared implementing it. The new one is much smoother. So we didn't really remove it but iterate on the design and add a better version.

PS: why do you upvote your own comment? Is this fishing for :+1:?

ChristophWurst commented 4 years ago

I believe the nextcloud community should have a right to decide if a 'service' should be removed?

Guess why we opened this ticket on May 11th already, long before any changes were made? Check the ticket and you'll notice that you're the only one objecting with the changes. This change was done with the community.

MarkPartlett commented 4 years ago

https://youtu.be/3TzOXOcAV2I and https://youtu.be/V9At1sSHgUk prove that the iwidget service is easy to implement.

MarkPartlett commented 4 years ago

@ChristophWurst because I don't 'watch' the nextcloud server ... I 'watch' the Nextcloud 'Dashboard' app, which you are proposing on breaking.

MarkPartlett commented 4 years ago

@Spartachetto as a native English first language person, a 'dashboard' is device with 'instruments' and 'gauges' , not a device with 'paragraphs' and 'information'. A 'dashboard' can be seen in Cars , Trucks and Airplanes. A 'workspace' can be found in an 'Enterprise' or 'Business' to conduct business processes. https://en.wikipedia.org/wiki/Dashboard vs https://en.wikipedia.org/wiki/Workspace

ChristophWurst commented 4 years ago

Alright, keep downvoting our comments and upvoting your own. I don't have the impression you're here to discuss anything constructively. Have a good one.

MarkPartlett commented 4 years ago

? ...I'm giving a suggestion for a name (of the app) that doesn't overlap an existing app and service.

MarkPartlett commented 4 years ago

@karlitschek ?? the community is broken?

kesselb commented 4 years ago

Hey @MarkPartlett,

please read the https://nextcloud.com/contribute/code-of-conduct/. I find it very annoying that you comment on related pull requests and create new issues for this topic. #20930 is the right place for your criticism. Keep the discussion at one place. Otherwise it's hard to follow.

I see your point. Dashboard is not the best name for the new feature / api. Unfortunately it's already merged and the integration with other apps started. A last minute change to something different is unlikely.

I looked at your app and the dashboard app and wonder if this change is such a bummer for you? The dashboard app is not shipped by default and the latest release is for Nextcloud 16. Only the interface is part of nextcloud/server. Have you thought about merging your app with the dashboard app?

Spartachetto commented 4 years ago

@MarkPartlett please, do not overreact...

The rational of this new approach was explained (and nobody can deny that the old Dashboard app was ... not really successful).

You can see that the development of this functionality is advanced, and if you look arounfìd you'll find that some apps already are ready to use it.

Your point on the name was acknowledged (but do consider that we non native speakers are a lot and maybe our interface will not show that name...)

@kesselb suggested you a technical solution to the problem caused to your app... I guess it will not be super easy, yet a solution does exist and, if you are collaborative, maybe someone could help.....

As a general reflection, what I am missing in the DashboardCharts app is the possibility to use internal Nextcloud data. This new approach should sort of solve it.

I did miss so much the possibility to analyse internal Nextcloud data that I suggestd it also to @rello for the Data Analytics app and you can find it in the app roadmap: https://github.com/Rello/analytics/issues/1 I hope this last info is useful to everybody...

jospoortvliet commented 4 years ago

Why are you calling this a 'dashboard' when it is a 'workspace' ? :) Why didn't you add 'panels' to the Talk interface? ...and leave the dashboard app for dashboard widgets?

Hey @MarkPartlett

I get your complaint about the name, but you are a LITTLE late - as this Dashboard app is a replacement for the earlier Dashboard app:

https://apps.nextcloud.com/apps/dashboard

And as you noted yourself - its API was scheduled for being deprecated in Nextcloud 20. Which is what will happen... Luckily a nice new interface will be implemented.

We have worked on the dashboard app on and off over the years (see also this announcement and the talk from our conference in 2018 for Nextcloud 15) but we decided to make major changes now, christoph gave some reasons for that.

I agree that the name 'dashboard' is a bit complicated. That previous dashboard app was developed on request of and together with a partner which had already developed its own dashboard, even from before Nextcloud existed - and it was the same type of dashboard as we are building now. So the name isn't really insane, the only change is the API. Which was scheduled for deprecation.

So if you had a problem with the name of the old dashboard you're a few years late - as this is a different approach to solve the same thing.

MarkPartlett commented 4 years ago

Hi @kesselb , I don't believe I have gone outside the bounds of code-of-conduct. How is raising a request wrong?

Hi @Spartachetto & @jospoortvliet ,

The dashboardcharts app has 6 months of development waiting to be released.(https://github.com/MarkPartlett/dashboardcharts) I am currently waiting on @daita to release a new version of the dashboard app.. I have been sending him emails/github links asking him to release a new version for over a year. The new dashboardcharts version has JSON/CSV polling within all widgets... not just the High-Charts widget. (I had Flow populating the charts in the past)

@jospoortvliet , the deprecation was merged in 3 days ago. https://github.com/nextcloud/server/pull/21346 I raised an issue as soon as I knew about it.

The Data Analytics app is good...but a different use-case! I've been giving feedback to @Rello during his development.

Thank you Nextcloud community for your support.

kesselb commented 4 years ago

How is raising a request wrong?

Raising a request is not wrong. But it's wrong and disrespectful to create new issues (https://github.com/nextcloud/server/issues/21883 or https://github.com/nextcloud/server/issues/21895) because the outcome of another discussion is not what you want.

The dashboardcharts app has 6 months of development waiting to be released. I am currently waiting on @daita to release a new version of the dashboard app..

Merge the dashboard app into dashboardcharts, use the internal api to register the widgets and the api deprecation is not a issue for you anymore. It's also much easier to add new features as there is no dependency to an abandoned app anymore.

MarkPartlett commented 4 years ago

Raising a request is not wrong. But it's wrong and disrespectful to create new issues (#21883 or #21895) because the outcome of another discussion is not what you want.

I guess we can agree to disagree.

Merge the dashboard app into dashboardcharts, use the internal api to register the widgets and the api deprecation is not a issue for you anymore. It's also much easier to add new features as there is no dependency to an abandoned app anymore.

I like this idea. cheers!

marcelklehr commented 4 years ago

If I may offer my two cents. I think it's great that there are people focusing on a new iteration of the dashboard and breaking changes as such, while cumbersome to deal with, may always be necessary for innovation to happen, IMO.

On a meta level, I think that discussing this kind of change in the core github repo may once have been pragmatic but is prone to exclude anyone nowadays that isn't following the core repo -- a concern that I have raised before wrt. the list of breaking changes in new versions of nextcloud. I myself do not follow the core repo because the majority of issues don't concern me, so when important discussions happen here, I can only take part if a kind soul CCs me or if somebody creates an issue on my repo pointing me to the discussion (as was the case with this one). Thus, I was very happy to see @ChristophWurst ask for feedback on new changes affecting app developers on the forum recently and would hope that this happens more often.

Spartachetto commented 4 years ago

I'd emphasize also the effort @kesselb is doing on the forum to communicate the new features of the upcoming releases (like for example in New for Nextcloud 20 ). I do get that it is not targeted specifically towards developers, yet I think that it is a good way to keep the community informed.

On a "personal" note, as I am not a developer I try to contribute as I can. So thank you @marcelklehr for citing my comment as useful! :smiley:

e-alfred commented 4 years ago

Well, my question wasn't even answered (or should I say "not even ignored" @ChristophWurst should understand that one). @berdosi implemented a Weather dashboard for the now deprecated Dashboard app (see https://github.com/nextcloud/weather/pull/76), is it possible to migrate this to the new implementation without a complete rewrite?

Aside from that nobody over at the Dashboard app repository told anyone about the deprecation yet: https://github.com/nextcloud/dashboard/issues/61

MarkPartlett commented 4 years ago

I have to agree with @marcelklehr , the Nextcloud community needs to be more mature. Where is the breaking changes register? Where is the roadmap? Who takes responsibility for the community direction? ...this is my bread and butter. :)

Thank you @e-alfred for posting in the dashboard app https://github.com/nextcloud/dashboard/issues/61 , This should have been done when the other work started.

https://github.com/nextcloud/dashboard/issues/58 shows that the community were asking for the old dashboard to be upgraded to the current version of Nextcloud.

I like the new design.

fyi. the dashboardcharts iframe widget can load any Nextcloud app into a widget.

Rello commented 4 years ago

Hello all, I think this is an interesting discussion with many viewpoints. The proposal from the first post is for sure not a "Dashboard" in business language. Thats my daily job. Its just an other grouping/listing of connected topics. "Workspace" or "Hub" would in fact be a better name.

But let this apply for the current mockup for the moment. If there is really the plan to go into the flexible direction as the current "Dashboard" app, it might earn back its name.

I had 2 widgets in the pipeline:

With the current "Workspace" I would publish just more lists into the display like playlists or report-names as jump-off into the app. But this effort is questionable

I personally hoped for further UI polishing of the dashboard app. Now I am hoping for more "Dashboard" of this proposal.