-
Notifications
You must be signed in to change notification settings - Fork 14k
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
[SIP-30] Remove Tabs in SQL Lab #8655
Comments
Issue-Label Bot is automatically applying the label Links: app homepage, dashboard and code for this bot. |
Can you rename this to SIP-30 ? |
Oops! Thanks |
This good ideal !!!We are looking forward to your revised !Thank you very much. @suddjian |
Personally, I do not like this as I like to have multiple queries open for reference. This would get a -1 from me. |
Well the idea here is to better support native browser tab workflows so that people can still have multiple queries open with a less complicated UI. Do you think that could be a good option for your use case? Is there specific value you see in page-based tabs that can't be done with browser tabs? |
About change management, we did something similar for both "explore v2" and "dashboard v2", where in the case of "dashboard v2", the dashboards had to be validated (and in some cases tweaked) manually individually. Things can get intricate as components, endpoints and objects may become shared in intricate ways. For example, the work of deprecating "explore v1" became fairly intricate as it was sharing things with v2. Clearly there are pros and cons here, and if we decide to have 2 versions overlap, we should be deliberate on whether we want to go with a "not DRY" (where code is duplicated to evolve independently) or a tangled approach (where both versions share components and objects). One thing to mention is that the design is not very clear around state management, and making sure people don't loose work. Personally I'd push towards a "Google Docs"-type pattern, forcing people to title the session quickly, and autosaving as the query is executed. We want to make sure that whatever happens to the browser tab, no work will be lost. We should have clear answers to "what happens if I have 6 tabs open, close the browser, and want to get back to some of the tabs that were opened before? what if I had not explicitly saved? is a tab really a query session? can I restore the session if I close the tab, or just the latest state? |
I've edited the SIP with the latest updates to this proposal. I think this addresses the concerns that have been raised. |
The primary goal of state management in SQL Lab seems to be to ensure queries are not lost, though I'd love to see more feedback on this point. This could be solved for by a robust query history mechanism, as currently exists, or like the one proposed in the screenshot above from SIP-34. Creating a unique ID for a SQL Lab browser tab could be useful for grouping queries by session, or to retain some additional state upon page reload, though using UUIDs for this would be preferable. We'll also need to differentiate between the SQL Lab session ID and a saved query ID, as these represent separate objects. This open PR is also relevant to the query sharing conversation. |
To clarify, this SIP is to enable the start of removing tabs (feature flag), but we are not voting on the end result of what sqllab would look like without tabs? As part of this SIP it would be useful to describe what the process will be to get feedback from users and align on the end result for sqllab designs and when that will happen. I know some of the use cases were already discussed in the cartel meetings, but since this will be a big change, it would be nice to get feedback from current superset users to make sure the designs cover their use cases. Can you also add details about what the migration strategy should be for existing superset deployments that have tabs? Once we switch over all of the existing queries in tabs will be lost right?, so we'll need to do some work to encourage users to save their queries because tabs will be going away. Are their ways to have a smoother transition, maybe an option to have warnings in the app before people switch over? |
The redesign of sqllab is being treated as an ever-evolving north star to align everyone on while developing Superset. This SIP is just about how we can go about achieving a tabless UI. I agree that feedback from users will be highly useful in implementing the new designs, but I think that's out of scope for this SIP. There are other ongoing efforts to set up user feedback channels. Migration is an important part of this work, since this has such a large impact on users. My proposal as outlined in the SIP is to give each user a button to switch to a tabless UI. Until the tabless UI is deemed "stable", there will be an option to switch back to tabs, with your tab state kept intact. Before you decide to go tabless, we can have a message describing the change to the user. We will need to explain that saving queries is the best way to avoid lost work, but you will also be able to use the sqllab history feature or your browser history to find past queries. I think you're correct regarding state management. The way I'm thinking of this change is to use the existing tab ID in the same way that you're describing a unique session ID. I think migrating to UUIDs or something similar is a good idea. We can differentiate between ID types with different URL paths, perhaps |
+1 to all of the questions above. As the folks on this thread are aware, Tabs are a very popular feature in our deployment so we want to be careful about changes and want to make sure we know what we're voting on. (I also recognize that folks have iterated on the proposal based on feedback, and I appreciate it :)) A few additional questions I have: Also, apologies that I didn't send this sooner -- I had a lengthy comment half-written that I lost :( |
Thanks for the clarification on the migration process, that makes sense. |
Thanks for all the feedback @sylvia-tomiyama! I think I can address all of these, but let me know if I missed anything.
|
Thanks for clarifying! Makes a lot of sense. (1)/(2) My goal was to confirm that we'd use the feedback/experience during this period to make any changes, and I think that your answer shows we will, so you have my +1 on the migration process. Thanks :) (3)/(4)/(5) I talked to a couple users at our company and I think I understand why switching from SQL lab tabs to browser tabs could help with organization, but I'm not totally convinced it's enough value to counteract the loss of the current ease of preserving and re-accessing in-progress work. I really like your suggestion to show a list of SQL lab "sessions" and think this would would tip this into the "obvious net positive for users" category. Here's my thought process on this: I want to reiterate that saving in-progress work is really important. We ran some in-depth research on Superset with users at our company, and this was one of the key painpoints (losing work) that came up that contributed to a lot of mistrust in Superset. In a world where people are used to working with things like google docs (and honestly even pre-cloud word autosaved), I feel like the baseline expectation is that all in-progress work is saved automatically. That's why re: #5 I understand this brittleness with tabs and have been advocating for addressing it for a while now. Even though we provide the same suggestion you do to our users, every time the local storage gets cleared for some reason or another, we get frustrated and surprised users complaining that their work has been lost. So I really like your suggestion of providing a list view of your SQL lab sessions (assuming that your sessions get auto-saved, which I think it would since we generate a unique session id each time?) -- it seems like it would address both the permanence issue AND also make it easier to manage the clutter of your work. (I think that searching through browsing history is a stretch and unlikely to be discoverable). If we have this, it seems like a complete solution and one that seems more clearly like an improvement. (6) OK. Especially with the careful consideration and process we have for migration, I feel comfortable with moving that conversation outside of this SIP. Thanks for taking the time to comment and iterate! I shared this proposal with a couple of users here and they appreciated the thought that was put into it. |
I want to respond to questions raised in the Superset Meetup, and clarify the scope and purpose of this proposal. This proposal is specifically about improving user experience by moving the tab implementation from the UI to the browser, and not about changing state management - though it does depend on the state management improvements from SIP-23. This should allow the same user productivity, while being a more modern and practical solution. Browser tabs will allow for better support of upcoming features such as more powerful edit history/undo. Supporting unique URLs for each SQL Lab session will also unlock new use cases that are currently impossible. For example, if you close a tab in SQL Lab you can never get it back, but in this design, if you close a tab you simply have to get back to the same URL again. This pattern was identified during the redesign process as a better UX pattern than the current design. Participants were generally in favor of the change due to the improved usability, stability, and cleaner UI of browser tabs, as well as some positive user feedback. I’d like to get some more votes on this SIP in the email thread. If you have not voted yet, your vote will be much appreciated. |
The goal here was to clarify the scope and functionality (the "What"), understanding that some implementation details (the "How") will be further addressed in the subsequent PR. But I will be glad to discuss further - even in a small group format or chat - if anyone thinks the intended functionality needs to be clarified further. Please see the attached PDF with wireframes of the current/new interaction. |
Development started? Any timelines roughly? Thanks. |
Hi @benceorlai I think understanding some implementation details (the "How") part will help me make decision. In the current behavior, I can easily see all my old queries in a list of sql lab tabs (and within 1 browser tab). Do we still have this benefit (see all the old queries in a central place) in the single sql lab tab solution? |
@jiegzhan No timelines currently to my knowledge, but I'll let you know if that changes. |
Is anyone working on this? Thanks. |
Voted through, so closing! Thanks! |
请问你这个是什么版本,界面比较好看 |
Does anyone on this thread have any intention to follow through on this? If not, I think we should consider it closed/denied. |
[SIP-30] Remove Tabs in SQL Lab
Motivation
SQL Lab is devoting screen space to a custom tab UI that is less effective than that offered natively by the browser. Other upcoming features such as more powerful edit history/undo, and better navigation/discovery make tabs less important. The new design directions coming from the superset design group specify a tabless UI. Browser-based tabs would be a better solution for nearly every SQL Lab use case.
Proposed Change
queryEditor
in the SQL Lab url:myapp.com/superset/sqllab/42
queryEditor
idThis change can actually be made without significant changes to state management. SQL Lab state includes some number of
queryEditor
s ("tabs"). Instead of eachqueryEditor
referencing an in-page tab, the SQL Lab url will contain the id of thequeryEditor
being used.This will depend on the backend implementation of state management for SQL Lab which is currently behind a feature flag. Without backend SQL Lab state, your local state would accumulate until there is too much to manage, without a practical way to clean it besides clearing your localStorage or editing it laboriously.
One change that will be tricky is offering users a quality migration experience to the tabless UI. More details on that down the page.
A note on preventing lost work in a tabless UI
Nobody wants to write a query, then close their browser and lose it forever. Mitigating that in this new design will be important. The full UI/UX redesigns call for a robust history feature, but there are some things we can do to protect people's work without the history feature.
When you navigate to SQL Lab without specifying an id in the URL, an id will be generated for you just as if you had clicked the "+ tab" button in the current UI. This will allow users to re-open a closed tab from the browser history, even if they didn't save the query. If a user wrote a query but didn't save it, and closes the browser tab, SQLLab should also warn and offer to save the query before the tab closes. If you run or save your query, those will also be ways to recover your work.
Just for reference, here's the design we're working towards. This SIP is not about implementing everything on this screen, only replacing the in-page tabs with browser tabs.
New or Changed Public Interfaces
Migration Plan and Compatibility
We should allow users to migrate to the new system at their own pace. Tabs are a heavily-used feature, and should not be ripped out without a proper transition phase to educate and re-orient users.
A per-user feature flag will be added indicating whether they are using the tabful or tabless version of SQLLab. SQLLab will appear unchanged as long as a user's flag is off, with the exception of a small banner in the corner notifying the user of the new tabless experience, and allowing them to flip the flag on. Once they flip the flag SQLLab will change to the tabless UI. There should be an explanation of the change, with useful info on how to navigate this brave new world.
After some time, we can turn this flag on by default for new users. Eventually when the tabless UI is deemed stable, people are happy with the change, and we've made sure that there isn't a negative impact to existing user needs, we can switch everyone over.
Rejected Alternatives
The text was updated successfully, but these errors were encountered: