{"action":"created","issue":{"url":"https://api.github.com/repos/conda/conda/issues/3912","repository_url":"https://api.github.com/repos/conda/conda","labels_url":"https://api.github.com/repos/conda/conda/issues/3912/labels{/name}","comments_url":"https://api.github.com/repos/conda/conda/issues/3912/comments","events_url":"https://api.github.com/repos/conda/conda/issues/3912/events","html_url":"https://github.com/conda/conda/issues/3912","id":190215199,"number":3912,"title":"Private application environments","user":{"login":"kalefranz","id":1418419,"avatar_url":"https://avatars.githubusercontent.com/u/1418419?v=3","gravatar_id":"","url":"https://api.github.com/users/kalefranz","html_url":"https://github.com/kalefranz","followers_url":"https://api.github.com/users/kalefranz/followers","following_url":"https://api.github.com/users/kalefranz/following{/other_user}","gists_url":"https://api.github.com/users/kalefranz/gists{/gist_id}","starred_url":"https://api.github.com/users/kalefranz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalefranz/subscriptions","organizations_url":"https://api.github.com/users/kalefranz/orgs","repos_url":"https://api.github.com/users/kalefranz/repos","events_url":"https://api.github.com/users/kalefranz/events{/privacy}","received_events_url":"https://api.github.com/users/kalefranz/received_events","type":"User","site_admin":false},"labels":[{"id":16544532,"url":"https://api.github.com/repos/conda/conda/labels/Feature","name":"Feature","color":"84b6eb","default":false}],"state":"open","locked":false,"assignee":{"login":"soapy1","id":976973,"avatar_url":"https://avatars.githubusercontent.com/u/976973?v=3","gravatar_id":"","url":"https://api.github.com/users/soapy1","html_url":"https://github.com/soapy1","followers_url":"https://api.github.com/users/soapy1/followers","following_url":"https://api.github.com/users/soapy1/following{/other_user}","gists_url":"https://api.github.com/users/soapy1/gists{/gist_id}","starred_url":"https://api.github.com/users/soapy1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soapy1/subscriptions","organizations_url":"https://api.github.com/users/soapy1/orgs","repos_url":"https://api.github.com/users/soapy1/repos","events_url":"https://api.github.com/users/soapy1/events{/privacy}","received_events_url":"https://api.github.com/users/soapy1/received_events","type":"User","site_admin":false},"assignees":[{"login":"soapy1","id":976973,"avatar_url":"https://avatars.githubusercontent.com/u/976973?v=3","gravatar_id":"","url":"https://api.github.com/users/soapy1","html_url":"https://github.com/soapy1","followers_url":"https://api.github.com/users/soapy1/followers","following_url":"https://api.github.com/users/soapy1/following{/other_user}","gists_url":"https://api.github.com/users/soapy1/gists{/gist_id}","starred_url":"https://api.github.com/users/soapy1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soapy1/subscriptions","organizations_url":"https://api.github.com/users/soapy1/orgs","repos_url":"https://api.github.com/users/soapy1/repos","events_url":"https://api.github.com/users/soapy1/events{/privacy}","received_events_url":"https://api.github.com/users/soapy1/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/conda/conda/milestones/5","html_url":"https://github.com/conda/conda/milestone/5","labels_url":"https://api.github.com/repos/conda/conda/milestones/5/labels","id":1933335,"number":5,"title":"4.4","description":"","creator":{"login":"kalefranz","id":1418419,"avatar_url":"https://avatars.githubusercontent.com/u/1418419?v=3","gravatar_id":"","url":"https://api.github.com/users/kalefranz","html_url":"https://github.com/kalefranz","followers_url":"https://api.github.com/users/kalefranz/followers","following_url":"https://api.github.com/users/kalefranz/following{/other_user}","gists_url":"https://api.github.com/users/kalefranz/gists{/gist_id}","starred_url":"https://api.github.com/users/kalefranz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalefranz/subscriptions","organizations_url":"https://api.github.com/users/kalefranz/orgs","repos_url":"https://api.github.com/users/kalefranz/repos","events_url":"https://api.github.com/users/kalefranz/events{/privacy}","received_events_url":"https://api.github.com/users/kalefranz/received_events","type":"User","site_admin":false},"open_issues":32,"closed_issues":1,"state":"open","created_at":"2016-08-09T19:27:25Z","updated_at":"2016-11-30T07:33:30Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2016-11-18T01:45:38Z","updated_at":"2016-12-20T03:27:30Z","closed_at":null,"body":"In the near future, and in preparation for Anaconda 4.3, we will be offering a miniconda installer that installs conda into a *private env*, while leaving the *default user env* empty except for links of conda's executables into the default user env. It would be naive and a disservice to users to treat conda as a special case. \r\n\r\nPrivate named environments are generally useful for any \"top-level application\" that the prototypical user is likely to install only once on the system.  Most users, for example, wouldn't (intentionally) install multiple instances of Firefox on their systems.  Advantageously, an application may leverage explicitly pinned dependencies for its own operational safety without worrying about creating unsatisfiability in the user's broader default environment.  Examples could include Anaconda Navigator and Spyder.\r\n\r\nThe convention for a private application environment will be the application's name, prefixed and suffixed by an underscore. This distinguishes a private environment from the established use case of an environment name prefixed by underscore (prefixed only, not suffixed); the prefix-only convention allows conda to be installed in the environment without complaint.\r\n\r\nAn application may request that it be installed in a private named environment by indicating so in [non-index package metadata](https://github.com/conda/conda-build/pull/1539).  The request will be respected for conda create, install, update, and remove commands when\r\n\r\n* the *user default env* is the active environment, and\r\n* the user does not specify the `--name` or `--prefix` command-line flags.\r\n\r\nPrivate environment preference will only be respected for packages explicitly requested by the user.  Packages installed as dependencies of a user-requested package will not be installed in private environments, but rather the environment into which the user-requested package is installed.\r\n\r\nWhen a package specifies a preferred private environment, it need not be a private environment for itself.  It can instead be the private environment of another package.  For example, conda-build can indicate that its preferred private environment is the conda private environment.\r\n\r\nWhen a private environment request is respected, entry points are created in the *user default environment*, linking executable-marked paths in the private prefix's `bin`/`Scripts` directory. The entry point for an `application` executable will be similar to \r\n\r\n```\r\n#!/bin/bash\r\nCONDA_ROOT=\"$(dirname $0)..\"\r\nsource \"$CONDA_ROOT/bin/activate\" \"$CONDA_ROOT/envs/_myapp_\"\r\nexec \"$CONDA_ROOT/envs/_myapp_/bin/myapp\" \"$@\"\r\n```\r\n\r\nA package may limit the executables being linked by providing an explicit list of desired paths to symlink in the package's non-index metadata.\r\n\r\nTo track user-requested packages that have been installed in private environments, a file\r\n`conda-meta/private_envs.json` is used.  It is present only in the *user default env* `conda-meta` directory.  This tracking is necessary to unlink packages (either during update or remove) that have been installed in private environments.\r\n\r\nThe issue https://github.com/conda/conda/issues/3074 discusses the more-limited conda-specific implementation.\r\n"},"comment":{"url":"https://api.github.com/repos/conda/conda/issues/comments/268144899","html_url":"https://github.com/conda/conda/issues/3912#issuecomment-268144899","issue_url":"https://api.github.com/repos/conda/conda/issues/3912","id":268144899,"user":{"login":"kalefranz","id":1418419,"avatar_url":"https://avatars.githubusercontent.com/u/1418419?v=3","gravatar_id":"","url":"https://api.github.com/users/kalefranz","html_url":"https://github.com/kalefranz","followers_url":"https://api.github.com/users/kalefranz/followers","following_url":"https://api.github.com/users/kalefranz/following{/other_user}","gists_url":"https://api.github.com/users/kalefranz/gists{/gist_id}","starred_url":"https://api.github.com/users/kalefranz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalefranz/subscriptions","organizations_url":"https://api.github.com/users/kalefranz/orgs","repos_url":"https://api.github.com/users/kalefranz/repos","events_url":"https://api.github.com/users/kalefranz/events{/privacy}","received_events_url":"https://api.github.com/users/kalefranz/received_events","type":"User","site_admin":false},"created_at":"2016-12-20T03:27:30Z","updated_at":"2016-12-20T03:27:30Z","body":"Yeah my perspective is really limited to posix command line use cases. You have a much broader perspective Ray. And that's awesome. Let's figure out solutions :) I don't think these are intractable hurdles. "}}
{"actor":{"display_login":"kalefranz"}}