The Story of Synchronized Settings

The Story of Synchronized Settings

Rate This
  • Comments 55

As you may have read in our post about signing into Visual Studio 2013, one benefit of signing in is the ability to roam your product’s settings across machines. In this post I’ll tell you more about the Synchronized Settings feature.

When looking at feedback from customers or requests for new features that enhance productivity, a few requests easily surfaced right to the top. Everyone wanted their Visual Studio IDE installed in minutes, set up in seconds, and ready to use in a blink! This request wasn’t just about a faster install & setup process but begged us to broaden the scope of user convenience when setting up machines as well as the convenience of use during continued usage of the product. We tried to understand how we could set up the IDE the way a customer likes it without them having to make all the setting tweaks for every new install of Visual Studio. From these questions came the idea of a Connected IDE where the IDE is connected to the cloud participating in services and features that enhance the productivity of Visual Studio users.

When we asked MVPs what comes to mind when they think about a Connected IDE, one of the top answers was "Settings". That is where the journey of Synchronized Settings began.

Listening to customers

It started off as a simple idea to synchronize all settings changes from one machine to another, but we soon realized that it really wasn't as simple as that. It quickly became clear that if this capability was to work well we needed to identify the top most commonly modified settings. To learn what users expected, we asked team members (close and far), as well as customers early on to see if what we considered the top settings to synchronize matched their expectations. Feedback we got from the public survey as well as various customer councils, helped solidify the scope.

Based on feedback received from the survey we also defined some core principles to ensure we delivered a seamless and smooth synchronized settings experience:

  1. It just works
  2. Don’t disturb the developer
  3. Start with a small yet impactful scope, and learn

We decided to keep settings synchronized only within the same product families. Our product editions differ in their features, capabilities and default settings. Maintaining one set of settings that safely applied across all of them and across multiple devices created conflicts that were difficult to resolve automatically. Settings therefore synchronize between Visual Studio 2013 Professional, Premium and Ultimate editions across devices. For our Express family of products, settings will only synchronize across devices for the same edition.

Once the feature was up and running, we also conducted user studies to verify that the experience we were building around this scope was what our customers expected. Based on what we heard, we made tweaks and adjustments to the experience.

Settings we decided to synchronize, and why

The key to delivering a seamless, exciting, and impactful experience, is to pick the most impactful scope and ensure that every scenario for that scope works perfectly. Applying this strategy to Synchronized Settings we picked the top settings that our customers most often modify. These are the settings that made it in -

First Launch Settings: Default collection of settings chosen when Visual Studio is launched

When you launch Visual Studio 2013 for the first time, you will be asked to select a default collection of settings. We make a note of this default collection and then apply it on the initial configuration of subsequent machines where you sign in, so we won’t waste your time asking for the same information again.

First launch settings and theme selection dialog

Settings under Tools Options

With Synchronized Settings, IDE options like enabling line numbers, editor tab settings vs spaces, enhanced scrollbar, font size, show start page on startup will get synchronized across machines automatically for you. Here is the complete list of options that will synchronize across machines.

Settings under Tools Options that are synchronized across machines

 

Command Window Aliases

User created aliases to perform functions within Visual Studio from the Command Window will also synchronize across machines.

Command windows aliases

Fast is good!

Fast performing Visual Studio is not just expected by developers but it is most definitely important to the teams building the features. Throughout the design of Synchronized Settings we kept performance in mind. To help us identify potential performance bottlenecks and less-common error conditions we added detailed telemetry logged as anonymous product usage data. This telemetry included data on every failure and time taken for every download, upload, and application of settings. This data helped us gauge whether the feature's performance met our principles and goals. We set a high bar for performance and strove to meet it.

Feedback in all shapes and forms is important, but especially important is how our customers use the products and features we build. We rely on telemetry from customers who have opted into our Customer Experience Improvement Program via “Help -> Customer Feedback Options” to help us take data driven decisions. With Visual Studio 2013 Preview now released, the team is reviewing incoming data to help find and fix remaining performance and functional issues.

Synchronized Settings Options

Developers want control over how their product behaves, so we have an options page where you can tell us exactly which settings you’d like to keep synchronized across all machines and which ones you’d like to isolate per machine. These options are not synchronized across your machines, so any selection made here is specific to the machine it is made on.

Synchronized Settings options page

Sticking to our guiding principle of never disturbing our customers, we opted for smart defaults whenever possible as to not interrupt your work. Only when we cannot be sure of the right next step do we send you a notification. Acting on a settings conflict notification offers three choices: accepting the settings stored online (online wins), uploading local settings to all other machines (local wins), or keeping Synchronized Settings disabled on this machine.

Try it out - we want Feedback!

I’ve already mentioned how important feedback is, but here goes one more time!

Your feedback will help ensure we are providing the best user experience with the Synchronized Settings feature. We hope you will install Visual Studio 2013 Preview, try the Synchronized Settings feature, and send us feedback. It's important we hear back from you on what settings we should synchronize next. Every comment and bug is reviewed and used in the continuous improvement of the feature and product. If you find bugs or encounter something that doesn't work as expected, please send us feedback using the Visual Studio Feedback Tool or file a bug at the Visual Studio Connect site. Emotions are key! However productive we may think a feature makes you it’s important to know what it makes you feel. If you love what you see or hate it, make sure you send us a smile or frown from the upper right corner of the IDE.

We have more settings on the wish list and are aware that there will be additional settings that you'd like to see synchronized. It's important we hear back from you on what settings we should synchronize next.

Thanks!

clip_image009

Radhika Tadinada - Program Manager, Visual Studio Platform Team

Short Bio – Radhika joined Microsoft as a Program Manager on the Visual Studio team in 2011. She owns the Synchronized Settings feature and is responsible for other IDE features like search and document management.

Leave a Comment
  • Please add 7 and 1 and type the answer here:
  • Post
  • The way normal devs address disgruntled feedback: fix bugs.

    The way the Visual Studio team addresses disgruntled feedback: write an arrogant blog post.

  • This is cool, but what I really need is solution based settings. If I'm working on an internal project I use tabs, if an open source project spaces. And then there is that crazy customer who wants 3 spaces and the open brace on the line above. Changing settings everytime I change tasks is a royal pain.  

  • Jonathan is pretty much spot on. I would like to have different settings for different projects/solutions while still being able to keep them in a repository for easy access.

  • ... with all of the above.

  • Will immediately turn this off. Keep the spyware. Don't want to log in to VS.

  • Yeah, because it's so much work to save the settings to a file locally and load them up on another machine if you need to.  A connected Visual Studio?  I don't think so.  Yet another version of Visual Studio that our company will be skipping.

  • @Feedback:

    Being arrogant in the face or criticism is not isolated to the Visual Studio team. It appears to be endemic across all of Microsoft. c.f. Don Mattrick for another recent example.

  • Oh, and most of us already have our own cloud storage.  If we need to, we can save our settings to a file and transfer it to our own cloud service.  We don't need Visual Studio connected to the cloud.  Stop creating problems and ridiculous "features".

  • Great feature, but big +1 for what Jonathan Allen said about solution based settings. I know Mads Kristensen did some work to enable solution level settings specifically for the Web Essentials add-in, but this should be a Visual Studio wide feature. Whatever's defined at the solution level should then override your personal settings.

    This would be huge for those of us who are working in the OSS community and encounter all sorts of projects that have different source code formatting requirements just as an example.

  • Is this just a way to make DRM in Visual Studio?

  • Stop being afraid of change!

    Nothing big ever happened by doing the same things all over again!

  • Seems that the feedback you looked at did not include all the negative comments of this blog.

    "Based on feedback...we delivered a seamless and smooth synchronized settings experience:

    1    It just works

    2   Don’t disturb the developer..."

    That's just dead words. I' mean every software should "just work" and "not disturb" me.

    I'm with many commenters here:

    - Having all settings in a single local file, one can decide for oneself how to deal with it.

    - And for the cloud loving crowd, why not provide a plugin that auto-drops the file to azure.

    - And businesses users will have the file roamed, and you might attach your log-in system to active directory (optionally).

    Simple as that - going the route of plugin based modular software.

  • Personally, I am a fan of this idea. I don't know how many times I have had go and change my preferred tab settings when either installing new versions or setting up new machines. If this can solve some of those problems then that's great. Of course that would mean that stored settings for 2013 would have to at the least populate the defaults for 2014 if not synchronize with the newer versions as well.

    Synchronizing between Express editions would have been nice. Alternatively, if I didn't need 3 separate Express editions in the first place, that would be even better. Its a pain to have and maintain entirely separate installs of visual studio to do windows store, desktop, and windows phone development. They should all just be signed extensions to the Express shell.

  • A nice addition - I can think of many ways this can be used in my custom apps.

    Will the synchronization feature be surfaced via the SDK / API's? It would be nice if Addins and Packages could serialize their own settings - whatever form they might take - by leveraging the underlying "Visual Studio Connected" infrastructure.

  • > Everyone wanted their Visual Studio IDE installed in minutes, set up in seconds, and ready to use in a blink

    Yeah... Well, you realize that you now added a login screen which takes 20-30 seconds to even display?

    I realize that the problem is the *incredibly* slow Microsoft Account (or Live Account? Microsoft Live? Whatever it's called this week) backend and not Visual Studio, but you took a dependency on it, and made it the very first thing a developer sees when setting up Visual Studio.

    I have no strong feelings either way on *optional* cloud sync, but you really need to pick a faster backend for it. If Microsoft Accounts really takes 30 seconds to respond to a request for the HTML form showing the login dialog, then maybe you should go with Facebook Connect or OpenID or something instead? At least then your users can experience response times below half a minute.

Page 1 of 4 (55 items) 1234