{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/vscode/issues/66030","repository_url":"https://api.github.com/repos/Microsoft/vscode","labels_url":"https://api.github.com/repos/Microsoft/vscode/issues/66030/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/vscode/issues/66030/comments","events_url":"https://api.github.com/repos/Microsoft/vscode/issues/66030/events","html_url":"https://github.com/Microsoft/vscode/issues/66030","id":395947820,"node_id":"MDU6SXNzdWUzOTU5NDc4MjA=","number":66030,"title":"Provide GlobalStoragePath for large workspace independent extension data","user":{"login":"tboby","id":447391,"node_id":"MDQ6VXNlcjQ0NzM5MQ==","avatar_url":"https://avatars1.githubusercontent.com/u/447391?v=4","gravatar_id":"","url":"https://api.github.com/users/tboby","html_url":"https://github.com/tboby","followers_url":"https://api.github.com/users/tboby/followers","following_url":"https://api.github.com/users/tboby/following{/other_user}","gists_url":"https://api.github.com/users/tboby/gists{/gist_id}","starred_url":"https://api.github.com/users/tboby/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tboby/subscriptions","organizations_url":"https://api.github.com/users/tboby/orgs","repos_url":"https://api.github.com/users/tboby/repos","events_url":"https://api.github.com/users/tboby/events{/privacy}","received_events_url":"https://api.github.com/users/tboby/received_events","type":"User","site_admin":false},"labels":[{"id":343063018,"node_id":"MDU6TGFiZWwzNDMwNjMwMTg=","url":"https://api.github.com/repos/Microsoft/vscode/labels/extensions","name":"extensions","color":"1d76db","default":false}],"state":"open","locked":false,"assignee":{"login":"jrieken","id":1794099,"node_id":"MDQ6VXNlcjE3OTQwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1794099?v=4","gravatar_id":"","url":"https://api.github.com/users/jrieken","html_url":"https://github.com/jrieken","followers_url":"https://api.github.com/users/jrieken/followers","following_url":"https://api.github.com/users/jrieken/following{/other_user}","gists_url":"https://api.github.com/users/jrieken/gists{/gist_id}","starred_url":"https://api.github.com/users/jrieken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrieken/subscriptions","organizations_url":"https://api.github.com/users/jrieken/orgs","repos_url":"https://api.github.com/users/jrieken/repos","events_url":"https://api.github.com/users/jrieken/events{/privacy}","received_events_url":"https://api.github.com/users/jrieken/received_events","type":"User","site_admin":false},"assignees":[{"login":"jrieken","id":1794099,"node_id":"MDQ6VXNlcjE3OTQwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1794099?v=4","gravatar_id":"","url":"https://api.github.com/users/jrieken","html_url":"https://github.com/jrieken","followers_url":"https://api.github.com/users/jrieken/followers","following_url":"https://api.github.com/users/jrieken/following{/other_user}","gists_url":"https://api.github.com/users/jrieken/gists{/gist_id}","starred_url":"https://api.github.com/users/jrieken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrieken/subscriptions","organizations_url":"https://api.github.com/users/jrieken/orgs","repos_url":"https://api.github.com/users/jrieken/repos","events_url":"https://api.github.com/users/jrieken/events{/privacy}","received_events_url":"https://api.github.com/users/jrieken/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2019-01-04T14:39:39Z","updated_at":"2019-01-05T08:55:18Z","closed_at":null,"author_association":"NONE","body":"This feature request is related to #37137 and #22557, but is more focused on global state.\r\n\r\nSome extensions, especially language servers, need global data that cannot be bundled in the extension. There are two main reason I know of:\r\n- Allowing server updates independently of extension updates. E.g. ms-vscode.csharp and omnisharp I believe\r\n- Caching of global data for performance\r\n\r\nThe current options for storing extension data are:\r\n1. `extensionPath`, which is wiped on extension update\r\n2. `storagePath`, which is not global\r\n3. `globalState`, which is not appropriate for file storage\r\n4. System specific user data storage location, e.g. `%appdata%` and equivalent.\r\n\r\nCurrently, 4 is the only workable solution. However:\r\n1. It hides the data from the user (not stored in vscode space)\r\n2. It can't be removed by vscode on extension uninstallation (although I'm not sure vscode does this for `storagePath`)\r\n3. It adds fragility (reliance on extension author handling of OS-specific user file storage).\r\n4. It's effectively undocumented\r\n\r\n**The addition of a `globalStoragePath`, an extra `workspaceStorage` folder with global scope, would resolve all of above issues**\r\n\r\nMy context for the requirement:\r\n\r\n[My language server extension](https://marketplace.visualstudio.com/items?itemName=tboby.cwtools-vscode) creates 200-300MB of serialized binary data from a system library which is cached to speed up subsequent activation. Creating this data is time-consuming (1-3 minutes) but it is global for the language. The library may not be available on future runs, so loss of the cache is undesirable (hence `extensionPath` wiping on update being a problem). \r\nMy extension is cross-platform, but I have little experience of linux or OSX user data, so would be reluctant to manually implement a cross-platform user file management layer."},"comment":{"url":"https://api.github.com/repos/Microsoft/vscode/issues/comments/451639196","html_url":"https://github.com/Microsoft/vscode/issues/66030#issuecomment-451639196","issue_url":"https://api.github.com/repos/Microsoft/vscode/issues/66030","id":451639196,"node_id":"MDEyOklzc3VlQ29tbWVudDQ1MTYzOTE5Ng==","user":{"login":"bpasero","id":900690,"node_id":"MDQ6VXNlcjkwMDY5MA==","avatar_url":"https://avatars3.githubusercontent.com/u/900690?v=4","gravatar_id":"","url":"https://api.github.com/users/bpasero","html_url":"https://github.com/bpasero","followers_url":"https://api.github.com/users/bpasero/followers","following_url":"https://api.github.com/users/bpasero/following{/other_user}","gists_url":"https://api.github.com/users/bpasero/gists{/gist_id}","starred_url":"https://api.github.com/users/bpasero/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bpasero/subscriptions","organizations_url":"https://api.github.com/users/bpasero/orgs","repos_url":"https://api.github.com/users/bpasero/repos","events_url":"https://api.github.com/users/bpasero/events{/privacy}","received_events_url":"https://api.github.com/users/bpasero/received_events","type":"User","site_admin":false},"created_at":"2019-01-05T08:55:18Z","updated_at":"2019-01-05T08:55:18Z","author_association":"MEMBER","body":"I think this is already in proposed: https://github.com/Microsoft/vscode/blob/28e7467/src/vs/vscode.proposed.d.ts#L1123"}}
{"actor":{"display_login":"bpasero"}}