The Story of Synchronized Settings
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:
- It just works
- Don’t disturb the developer
- 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.
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.
- Text Editor Settings – All settings under top-level Text Editor node including settings under each language node.
- Theme, Fonts, and Colors Settings – All settings under Fonts & Colors options page as well as Theme options selected when Visual Studio is first launched
- Keybinding – Keyboard shortcut modifications made on Keyboard options page
- StartUp – Settings on the StartUp options page
Command Window Aliases
User created aliases to perform functions within Visual Studio from the Command Window will also synchronize across machines.
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.
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.
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.