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

Split JSON settings editor discussion #125952

Closed
roblourens opened this issue Jun 10, 2021 · 95 comments
Closed

Split JSON settings editor discussion #125952

roblourens opened this issue Jun 10, 2021 · 95 comments
Assignees
Labels
feature-request Request for new features or functionality settings-editor VS Code settings editor issues verification-needed Verification of issue is requested verified Verification succeeded
Milestone

Comments

@roblourens
Copy link
Member

roblourens commented Jun 10, 2021

I'd like to start a discussion around simplifying the split JSON settings editor to make it easier for us to maintain.

Keeping "deprecated" features around for a long time is not free and leads to a trail of tech debt that costs developer time that could be spent improving other areas of VS Code. It also represents many lines of code, and as the complexity and download size of VS Code grows, we need to take available opportunities to reduce it. I know it still has some fans, but telemetry shows that it is used very little compared to other features.

I want to think about how to keep some of the benefits of the split JSON editor implemented using typical VS Code UX patterns, rather than custom code just for one editor. Reading through past discussion on the settings editor, it's clear that the most valued element of the split editor is the ability to read the default settings and the user's overrides easily on one screen. We can actually do this easily in VS Code by showing the default settings as a simple text editor side by side with the overrides using the same sort of split editor that we use for diffing.

image

This lets us clean up code related to the custom search bar, the scope switcher, the pencil icon for editing settings, and some other UI decorations. We could even have an action to toggle the default settings split on or off, which would make this feature useful to people who currently just use the basic json editor. I think this plan is a good balance between serving this user workflow and software maintenance cost.

The settings editor GUI remains for fuzzy search and switching scopes quickly.

@roblourens roblourens added settings-editor VS Code settings editor issues under-discussion Issue is under discussion for relevance, priority, approach labels Jun 10, 2021
@roblourens roblourens added this to the June 2021 milestone Jun 10, 2021
@roblourens roblourens self-assigned this Jun 10, 2021
@eamodio
Copy link
Contributor

eamodio commented Jun 10, 2021

While I will miss the fuzzy search filtering, I think this is a good compromise. As for switching scopes, could we maybe just have a toggle button in the editor toolbar to switch from user to workspace settings?

@roblourens
Copy link
Member Author

I had the idea of adding a quick access for switching scopes:

image

For example, the settings prefix would show User, Remote, Workspace, Folder1, Folder2

@eamodio
Copy link
Contributor

eamodio commented Jun 10, 2021

Not sure I'm following exactly -- typing settings would list the available scopes and then open either the GUI or JSON based on your settings? I still think a quick toggle in the editor toolbar would be helpful -- but maybe the button just shows a menu with those same choices (User, Workspace, etc)

@roblourens
Copy link
Member Author

roblourens commented Jun 10, 2021

Just JSON. Since the GUI has it's own scope switcher. And yeah it could also be launched by an editor action.

roblourens added a commit that referenced this issue Jun 10, 2021
@jeanp413
Copy link
Contributor

Oh no! I've been using the split JSON editor since the beginning.
Hope there's more feedback from the community to reconsider this decision if possible 😞

@eamodio
Copy link
Contributor

eamodio commented Jun 14, 2021

@jeanp413 What features of the split json editor would you miss that won't be addressed by this? I've also used the split editor since the start and I will definitely miss the filtering, but I don't think I will miss too much else.

@jeanp413
Copy link
Contributor

@eamodio Definitely the search box to filter the settings and the pencil action to quickly add it to my settings.json instead of typing or copying some setting

@kkm000
Copy link

kkm000 commented Jun 17, 2021

The fuzzy search box is priceless. That would be a huge loss of productivity for me. I can copy stuff between panes manually, but it seems to me that finding that setting without fuzzy search would be simply impossible. Now it's so intuitive that I am finding what I want to change by trying 2-3 fuzzy searches, and sometimes hit the bullseye from the first attempt. Please keep it if at all possible. Pretty please.

It's like Emacs Ido mode, only much better. Please don't kill it.

@carlocardella
Copy link
Member

carlocardella commented Jun 17, 2021

I second @kkm000 about the fuzzy search. Using the GUI for fussy search, copy the setting id and then move to the json settings editor seems to overcomplicate things, I see lots of back and forth between panels and frustration in my future if the fuzzy search in the json editor goes away...

@roblourens roblourens modified the milestones: June 2021, July 2021 Jul 1, 2021
@NatoBoram
Copy link

NatoBoram commented Jul 2, 2021

There's many places where the split JSON settings could be improved while it's changed and these changes should be reflected in the rest of the editor, without being tied to settings specifically.

  • The fuzzy search should be added as an option to the default search box.
    • There should be an option to hide keys that aren't found by the search feature in key-value languages
  • Searching in one panel should optionally search on the other sides, too (Ctrl+Alt+Enter?)
  • Selecting a key either side should focus on that key on the other panel
    • That's similar to the Markdown preview behaviour, but it could be used with any key-value-based languages like JSON/YAML/Properties/XML. It could even work across languages, provided the same keys are found in the other file.
  • The little pencil icon should frankly be added to any file that has a JSON/YAML schema to it to make it easier to select from enums.
    • The "copy to settings" could be replaced by "copy to other panes" so that opened JSON/YAML/Properties/XML files can receive the key-value pair in the correct format with a cursor highlighting the value.

These improvements could work in many split-panel scenarios, like editing i18n files in a project.

I hope you will consider how awesome the split JSON settings editor is and add its features to the rest of VSCode before removing it. It really is the #1 best feature of VSCode.

@wenfangdu
Copy link
Contributor

wenfangdu commented Jul 4, 2021

The current settings JSON split editor is one of the best features of VSCode, using it from the start, tried the UI editor, never got used to it. Please don't nerf it 🙏.

@kandros
Copy link

kandros commented Jul 5, 2021

This settings page was the first feature that really pushed me to give VSCode a try, is so natural to use and easy to share settings

If I had to choose only one it would be JSON view 100%, the GUI is cumbersome

Please keep it 🙏

@OneOfOne
Copy link

OneOfOne commented Jul 8, 2021

Please leave the json settings editor, the GUI one is annoying to use.

@rs1052
Copy link

rs1052 commented Jul 9, 2021

The split JSON editor makes it easy to see exactly what is overridden in the user settings, workspace, and folder at a glance. The features being cited to removed (custom search bar, the scope switcher, the pencil icon for editing settings) streamline the experience. JSON should go back to the default, in my opinion. Telemetry is showing not a lot of people using it because the default was changed to the UI version, that doesn't make it superior. I'd also guess that those who went in and changed it may have also disabled telemetry.

I'm not too knowledgeable in the code for these features but what are we talking about in terms of actually maintaining these? It's only tech debt if it is costly (paying "interest" on that debt). As you said, it is custom code just for one editor, can't it exist and function without any need to constantly update it? It is a JSON editor with features on top, which doesn't seem like it would be in flux all the time. If it were intertwined with a bunch of other features, yeah I could see that being a headache and a huge slowdown.

I'm not sure I'm buying the download size either, how much larger are we talking? Surely there are much bigger fish to fry when it comes to the app size.

@zaatas
Copy link

zaatas commented Jul 10, 2021

Should this occur, I'll leave VScode!! I will take the dive and make the investment into Neovim and Lua.

@pcjmfranken
Copy link

pcjmfranken commented Jul 10, 2021

If there are only resources to streamline and maintain either the visual menu or the JSON editor, can we have a pol which one to keep? And to save some time, work on removing the visual menu can start right away :)

But in all seriousness, to me, some of the JSON view's main benefits are:

  • Higher information density: Quickly see what settings and options are available
  • Discover "hidden"/undocumented options in-app
  • Very clear overview of your setting overrides
  • The ability to annotate your overrides thanks to the jsonc format
  • An easy way to copy settings and overrides for use or documentation elsewhere
  • Less clicking, more clacking

The visual editor will never come close to the JSON one in those areas. I do not believe that the minor seeming benefits of the proposed changes outweigh the negative impact those will have on the things that make the JSON editor so fantastic!

@Mellbourn
Copy link

I would really miss the ability to comment my settings. I often write explanations for me to remember motives for specific settings.

@JohnSpindler
Copy link

I would really miss the ability to comment my settings. I often write explanations for me to remember motives for specific settings.

+1 to this in addition to adding in some clarifying notes for myself when a setting isn't documented in a way I understand.

@ZUIcat
Copy link

ZUIcat commented Jul 11, 2021

I don't like GUI, I would rather remove GUI instead of Json.

@roblourens
Copy link
Member Author

I agree that the fuzzy search is useful, and it would be interesting to experiment with a way to search settings using this same search logic using a quick pick control. This seems like a way to tackle it that works within existing VS Code UI conventions, without changing the meaning of the basic editor find widget, or other special logic. It's hard for me to think about how to apply the fuzzy search (or pencil icon) to generic JSON documents since it's implementation is very settings-specific, and I don't think there are other real examples of this split pane defaults/overrides editor pattern.

@ryan3E0 It feels like it should be a standalone thing that we never have to touch, but it exists as a component within a larger system that is often in flux. For example, as we've made changes to how opening an editor works in VS Code to support custom editors and notebooks, we recently had to spend a lot of developer hours changing the split JSON editor code to adapt to these changes. And we periodically make cross-cutting changes across the entire codebase or across feature areas which can impact this code.

Just in case this point gets lost in the thread, I want to be clear, the thing that is being changed is only the custom split-pane JSON editor. Editing settings in a JSON file will never go away.

@carlocardella
Copy link
Member

carlocardella commented Jul 12, 2021

@roblourens, I think the quality of the JSON settings editing experience is important. I understand the JSON settings file will not go away (a similar point was discussed the last time this topic was brought previously: #62964) and I do not have a reason to doubt you guys are motivated to do what is best, but I also understand why people may be wary of this change.

For comparison, Atom (I just installed it after a really long time to check) has eerily similar Settings and Keybindings GUIs and offers the ability to edit the config file directly (it's yaml in Atom's case). Anyway there is no advanced editing experience, there is no intellisense, I have not found a way to have a side-by-side view with both default settings and my settings (which as other mentioned, I found invaluable to learn about settings and their use, and see at a glance what is the default and what I am using as override). In other words, it is not really usable (one might as well just open the file in Notepad).

So, I understand things will change (I'm not sure how much room for discussion is left since this issue is already scheduled for the July release), I really hope the experience will not degrade too much. It would be a real shame.

You know what? I would be really curious to see the reaction if you opened a similar issue to remove the Settings GUI, I'd be curioius to see how many people would miss it 😄

@kkm000
Copy link

kkm000 commented Jul 12, 2021

@roblourens, I hear you, and I think that I understand this feeling. I have been a software engineer for most of my working life, and I know that some parts of code look like a burden. I experienced this too many times: a feature is a mess, and it just does not fit the rest of design, but users like it. This happened both in open-source and for-bread-and-butter projects. You see how many people came here to say how they find the feature indispensable. And sometimes it takes more effort to keep something alive, but it's a gratifying effort.

Think of this. I have read Raymond Chen's blog for years, and his book too, and can relate to engineers having to jump through hoops on fire to keep the Windows features that even make no sense—like keeping it backward compatible with bugs in enterprise software whose developers had been long out of business. That's necessary for Windows business, but not really a gratifying part of the job. And here you have two dozens of flesh-and-blood GitHub nicks fellow engineers begging to keep the feature. Yes, that's a minuscule number compared to the total number of VSCode users, but we're not just a number, we're the real hardcore ones who push the pedal to the metal. And there are much more who did not notice the announce, or were too busy to voice their displeasure. Please think of all of us who you can make happy by keeping it, or an equally efficient equivalent.

Settings is always a tough topic to discuss; a complex highly customizable environment—take Visual Studio, VSCode, Emacs—have thousands of them. For example, key bindings in Visual Studio have a search box, but it first appeared in VS2012, IIRC. How tortuous was it to simply change a key binding back then. VSCode beats the other two in this small sample in its simplicity of finding and changing what you want to customize: Emacs has M-x apropos to search both customize variables and descriptions, not fuzzy; Visual Studio does not have anything even close for settings; neither comes close to a fuzzy search in a single pane which reflects the changes as you type.

Then, for VSCode it is much more essential than for Emacs. For the latter, there is Emacs.SO where I can go and find or ask about a particular customization. VSCode is very agile, and in my experience the vast majority of customizing recipes that I'm finding on the internet do not work any more when they are a year or two old, without minor or major tweaks. Options search is perhaps the only way for advanced users to keep up with the changes. It's not a "nice to have" feature. It's an essential feature, really.

the custom search bar, the scope switcher, the pencil icon for editing settings, and some other UI decorations

The main sticking point for me is the custom search bar. Scope switcher is nice to have, but it's already incomplete in remote development: the UI editor has all three scopes, user, workspace and remote ssh; this switcher omits the remote scope. The pencil icon more often failed on me than not with a cryptic error (in essence, "files have changed, try again", but this did not go away with saving a file, or adding-removing a space and saving it). Search bar is of essence: when I know what to change or to try, I can copy-paste or type, very fast thanks to autocompletion; this is not a big deal. Knowing is.

@jeanp413
Copy link
Contributor

@roblourens, I didn't know this is the third time (after #62964 and #64932) bringing up this subject, somehow I missed those previous discussions and surely many other people missed them and will miss this one too.
So, if you are looking for reasons to not simplify the split JSON editor, you should revisit those previous discussions where the stated arguments against doing it are in concord with the ones stated here.

@NatoBoram
Copy link

NatoBoram commented Jul 31, 2021

Aight, I'd like to point out the irony behind the feature-request label on a feature removal that no user actually requested. I know it's just a procedure, but you know... It still hurts.

Since you weren't listening in the first place, then I guess you can lock the issue before the release of the public build so that people surprised by a sudden heavy downgrade of functionality can come here, confused and dismayed, and really feel the warm welcome of a locked thread? That would be on-brand for someone who opened thrice the same issue and got thrice the same feedback but still decided to go with it anyway. Third time's the charm?

@carlocardella
Copy link
Member

carlocardella commented Jul 31, 2021

The split editor as it is today is useless to me, at this point it would make sense to just get rid of the entire thing and leave the simple JSON file, why bother with the split view now? It's nothing more than two files side by side

I will keep watching this though, I bet more and more people will complain once the change makes it to Stable in just a few days

@TheWyo
Copy link

TheWyo commented Jul 31, 2021

Found my way here from the little note that's now appeared in the split JSON editor's view and this is possibly the most baffling 'discussion' I've ever seen.
You've done the equivalent of walking up to someone holding a swiss army knife, taking it off them and handing them a corkscrew instead, and then when questioned about it, have reassured them they can still open wine bottles.
They're well aware of that fact, but what about everything else they used the knife for?

@pcjmfranken
Copy link

pcjmfranken commented Jul 31, 2021

In the future @roblourens, I suggest you either find a more suitable word for... well, whatever this was, or, better yet, don't bother with a farce like this at all.

As insignificant as the removal of this feature may be in the grand scheme, the way this is handled is nothing less than insulting and has left a very bad aftertaste. Goodwill is not an unlimited resource, you know.

@ionut-botizan
Copy link

ionut-botizan commented Aug 5, 2021

For me, the split JSON editor doesn't make much sense these days. I've been using it from the beginning and it was great (at first). However, my user settings file has grown to 700+ lines of settings (no comments, just settings) and finding anything in that file is a pain.
I'd rather have a regular JSON editor with IntelliSense and regular search and that would be enough.

Besides, how often does anyone go into the settings file anyway? You'll do it a few times in the beginning, when you're getting started with VSCode, then you'll just go occasionally, when a new feature is added or (maybe) when you install a new extension.


P.S.: The proof of a 700+ lines settings file, in case anyone doubts that. 🙄

Screenshot

image

@carlocardella
Copy link
Member

Everyone has his workflow; my settings file is over 1200 lines (I'm pretty sure many people in this thread have large settings files), I do not edit it every single day but fairly often. Often enough to make what we have today (the GUI or the now broken split editor) very inefficient to use

@vadimcn
Copy link
Contributor

vadimcn commented Aug 5, 2021

Those wishing to suspend updates on Ubuntu, run this: sudo apt-mark hold code

@KerkDovan
Copy link

The release notes don't even mention the removal of fuzzy search! People who rarely open settings.json but read the release notes won't even know about this change. The purpose of this is to prevent a wave of negativity immediately after the update? Otherwise, I see no point in such silence - this is not an insignificant change.

@wenfangdu
Copy link
Contributor

The release notes don't even mention the removal of fuzzy search! People who rarely open settings.json but read the release notes won't even know about this change. The purpose of this is to prevent a wave of negativity immediately after the update? Otherwise, I see no point in such silence - this is not an insignificant change.

I wish I could thumb down this release note, and there's not even a way to do it.

@wenfangdu
Copy link
Contributor

To disable further updates, use the following settings (ironically, you can't even do this in one step via the GUI editor):

{
  "update.enableWindowsBackgroundUpdates": false,
  "update.mode": "manual"
}

@tifrel
Copy link

tifrel commented Aug 6, 2021

As many of the commenters, I came from a tiny little notification in my settings editor to read this abomination of a discussion. I don't know how many people might have missed the notification. And how many will be taken by surprise.

I am not sure if it's only me, but I used to avoid anything from Microsoft like it's the plague. VS Code was different, as it was just too good of a product to ignore. VS Code made me reconsider my stance on MS. I know it's a big brand, and mass compatibility counts more than power user friendliness. VS Code struck the balance, as it was easy to get started with for the masses, yet highly efficient/productive for power users. I know this balance is hard, and that is one of the reasons I liked VS Code so much. Mutilating this tool, and doing so despite all the negative, yet constructive feedback, is sticking the finger to the power users and early adopters. And thus, the better image that MS painted themselves over the past few years breaks down into shattered pieces. It doesn't matter now because most users will never read this thread or not even notice the change. But you leave room for others to attract the power users, as you deprecate their beloved features. As soon as they find something better than VS Code, they will move, and they will draw the crowd with them.

Congratulations, you paid technical debt by taking on usability debt.

Edit: I even came to late, my VS Code updated, probably while I applied @redomar's hotfix. My disappointment is immeasurable.

@carlocardella
Copy link
Member

Here we go, it didn't take long, one day after Stable got updated: #130245

@carlocardella
Copy link
Member

#130262

@lijh8
Copy link

lijh8 commented Aug 6, 2021

To disable further updates, use the following settings (ironically, you can't even do this in one step via the GUI editor):

If you refuse to receive updates there's no reason to stay. Both Qt creator and Eclipse have outline / symbol list feature and are cross platform and worth a try.

@Ticmea
Copy link

Ticmea commented Aug 6, 2021

Like many others I have visited this "discussion" from time to time to vote on the comments. I didn't comment myself because what I wanted to say was already said by other users and I didn't want to spam this issue. But now as this has reached stable I feel like I have to voice my opinion as a comment, since it feels like the votes on the comments are being ignored (given that this was implemented despite the overwhelming opposition to this change).

For now I will stick to 1.58.2 for a while and see if maybe our voice will be heard when stable users notice the change and (presumably) voice their opinion here.

@tifrel
Copy link

tifrel commented Aug 6, 2021

PSA: Links to last usable version

  • Source
  • Binary (VSCodium, compiled for several architectures and in several package formats)

If someone knows a good guide of how to build/install from source, please let me know.

@x80819091
Copy link

@roblourens Congrats! It is now the most downvoted issue in the entire vscode repo, well done!

@OneOfOne
Copy link

OneOfOne commented Aug 7, 2021

Judging by the lack of response from Microsoft, this is pretty much over.

So for those who want the last stable version (official links):

https://update.code.visualstudio.com/1.58.2/linux-x64/stable => vscode_linux_x64_1.58.2.tar.gz
https://update.code.visualstudio.com/1.58.2/linux-rpm-x64/stable => vscode_linux_x64_1.58.2.rpm
https://update.code.visualstudio.com/1.58.2/linux-deb-x64/stable => vscode_linux_x64_1.58.2.deb
https://update.code.visualstudio.com/1.58.2/linux-arm64/stable => vscode_linux_arm64_1.58.2.tar.gz
https://update.code.visualstudio.com/1.58.2/linux-rpm-arm64/stable => vscode_linux_arm64_1.58.2.rpm
https://update.code.visualstudio.com/1.58.2/linux-deb-arm64/stable => vscode_linux_arm64_1.58.2.deb
https://update.code.visualstudio.com/1.58.2/linux-armhf/stable => vscode_linux_armhf_1.58.2.tar.gz
https://update.code.visualstudio.com/1.58.2/linux-rpm-armhf/stable => vscode_linux_armhf_1.58.2.rpm
https://update.code.visualstudio.com/1.58.2/linux-deb-armhf/stable => vscode_linux_armhf_1.58.2.deb
https://update.code.visualstudio.com/1.58.2/darwin/stable => vscode_darwin_1.58.2.zip
https://update.code.visualstudio.com/1.58.2/darwin-arm64/stable => vscode_darwin_arm64_1.58.2.zip
https://update.code.visualstudio.com/1.58.2/darwin-universal/stable => vscode_darwin_universal_1.58.2.zip
https://update.code.visualstudio.com/1.58.2/win32/stable => vscode_win32_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-x64/stable => vscode_win32_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-arm64/stable => vscode_win32_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-user/stable => vscode_win32_user_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-x64-user/stable => vscode_win32_user_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-arm64-user/stable => vscode_win32_user_1.58.2.exe
https://update.code.visualstudio.com/1.58.2/win32-archive/stable => vscode_win32_archive_1.58.2.zip
https://update.code.visualstudio.com/1.58.2/win32-x64-archive/stable => vscode_win32_archive_1.58.2.zip
https://update.code.visualstudio.com/1.58.2/win32-arm64-archive/stable => vscode_win32_archive_1.58.2.zip

Make sure to disable automatic updates.

I'm also maintaining a copy on my site at https://oneofone.dev/pkgs/vscode-1.58.2/ in case they decide to remove the files, feel free to use the links, or use the download script to host them yourself.

Time to re-learn vim or emacs I guess.

@thernstig
Copy link
Contributor

thernstig commented Aug 9, 2021

Is this really a VS Code "team decision", or is it just rob that has been hellbent on removing this since the start, to get his way through?

I cannot fathom how a much-belowed feature like this can get removed. Technical debt is a bad argument when we talk about a feature used by many. It is way better than the not-so-good, to put it mildly, GUI experience. VS Code is a tool for coders. The JSON editor is much more natural for any coder worth its salt.

@Rory-Sullivan
Copy link

Sadly it seems I am way too late to this discussion and the damage is already done. Nonetheless I feel I should weigh in to "pour one out" for a much loved feature. 🍻

@wenfangdu
Copy link
Contributor

wenfangdu commented Aug 9, 2021

For those who downvoted this issue, please upvote the following reverse issue as well:

@lonix1
Copy link

lonix1 commented Aug 10, 2021

I added feature request #130457 to port features from the old to the new editor. Please upvote. We need 20 upvotes in 60 days.

Then, according to their own rules, they can't ignore our pain. (Of course it could go onto the backlog forever. 😞)

Nonetheless we need to make a formal request.

@Ticmea
Copy link

Ticmea commented Aug 10, 2021

I added feature request #130457 to port features from the old to the new editor. Please upvote. We need 20 upvotes in 60 days.

24 upvotes in 17 hours; well that was fast. Let's hope that this pace continues, so it becomes obvious just how much these features are missed.

@wenfangdu
Copy link
Contributor

wenfangdu commented Aug 23, 2021

In case this is a permanent change, I proposed some features that mimic the split JSON editor when using the UI editor, please upvote the issue if you feel the mentioned features are useful (Need 20 Upvotes):

@github-actions github-actions bot locked and limited conversation to collaborators Sep 13, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature-request Request for new features or functionality settings-editor VS Code settings editor issues verification-needed Verification of issue is requested verified Verification succeeded
Projects
None yet
Development

No branches or pull requests