{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/corefx/issues/1625","labels_url":"https://api.github.com/repos/dotnet/corefx/issues/1625/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/1625/comments","events_url":"https://api.github.com/repos/dotnet/corefx/issues/1625/events","html_url":"https://github.com/dotnet/corefx/issues/1625","id":72942698,"number":1625,"title":"[public api] System.Runtime.Environment - OSName(\"FreeBSD\") or OSName(\"BSD\")","user":{"login":"ghuntley","id":127353,"avatar_url":"https://avatars.githubusercontent.com/u/127353?v=3","gravatar_id":"","url":"https://api.github.com/users/ghuntley","html_url":"https://github.com/ghuntley","followers_url":"https://api.github.com/users/ghuntley/followers","following_url":"https://api.github.com/users/ghuntley/following{/other_user}","gists_url":"https://api.github.com/users/ghuntley/gists{/gist_id}","starred_url":"https://api.github.com/users/ghuntley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghuntley/subscriptions","organizations_url":"https://api.github.com/users/ghuntley/orgs","repos_url":"https://api.github.com/users/ghuntley/repos","events_url":"https://api.github.com/users/ghuntley/events{/privacy}","received_events_url":"https://api.github.com/users/ghuntley/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-05-04T07:22:01Z","updated_at":"2015-06-11T21:34:36Z","closed_at":null,"body":"This issue is to discuss what the final identifier will be within the entire public API surface and what will be the build target identifier that msbuild will use.\r\n\r\nhttps://github.com/dotnet/corefx/issues/1576 started the discussion of wether to use `OSName(\"FreeBSD\")` vs `OSName(\"BSD\")` in the unit tests and is recommended reading before progressing with reading this issue. `FreeBSD` won but it can be easily refactored due to being a non-public contract.\r\n\r\nThe BSD's (FreeBSD/NetBSD/OpenBSD/DragonFlyBSD) unlike Linux all have different kernels so potentially it might be required to split them out as separate platforms. This might be completely unnecessary whereby the additional BSD's may just work as a direct result of the port team's efforts. There are enough differences between the different BSDs that it could be needed to differentiate between them however.\r\n\r\nWe have some time before a decision needs to be cemented in as there is a more pressing issue as mentioned by @stephentoub and registered as issue #1626\r\n\r\n>There's what's likely a more pressing issue, which is actually building for FreeBSD. Today, when we need to specialize an assembly for a particular platform, we effectively have three builds, producing three different managed assemblies: Windows, Linux, OSX. Sounds like at least for now we'll need a fourth, FreeBSD. I suggest you start by modifying the build to support an IsFreeBSD property (or just IsBSD of you think there's a high chance that the implementations across BSDs will be the same even with varied kernels) along with the appropriate OSGroup targets. That can then be used in the csproj files as needed to specialize an assembly with FreeBSD-specific code.\r\n\r\nI feel uneasy about using either `OSName(\"FreeBSD\")` (platform fragmentation) or `OSName(\"BSD\")` (too generic) with the amount of information available at this point in time but obviously a direction needs to be chosen. \r\n\r\n@janhenke @josteink (core members of the portteam) have put forward on multiple times that they would prefer `FreeBSD` and I have no strong preferences in any which direction as long as the _future_ implications are considered carefully because this decision affects the public API surface.\r\n\r\nUltimately advice, direction and a decision will be needed by MSFT on this matter.\r\n\r\nnote: issue was edited/refactored based on feedback from josenink since original post."},"comment":{"url":"https://api.github.com/repos/dotnet/corefx/issues/comments/111283471","html_url":"https://github.com/dotnet/corefx/issues/1625#issuecomment-111283471","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/1625","id":111283471,"user":{"login":"ghuntley","id":127353,"avatar_url":"https://avatars.githubusercontent.com/u/127353?v=3","gravatar_id":"","url":"https://api.github.com/users/ghuntley","html_url":"https://github.com/ghuntley","followers_url":"https://api.github.com/users/ghuntley/followers","following_url":"https://api.github.com/users/ghuntley/following{/other_user}","gists_url":"https://api.github.com/users/ghuntley/gists{/gist_id}","starred_url":"https://api.github.com/users/ghuntley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghuntley/subscriptions","organizations_url":"https://api.github.com/users/ghuntley/orgs","repos_url":"https://api.github.com/users/ghuntley/repos","events_url":"https://api.github.com/users/ghuntley/events{/privacy}","received_events_url":"https://api.github.com/users/ghuntley/received_events","type":"User","site_admin":false},"created_at":"2015-06-11T21:34:36Z","updated_at":"2015-06-11T21:34:36Z","body":"See https://github.com/dotnet/corefx/pull/1999#issuecomment-111279577\r\n\r\n> I think it's completely reasonable to use #1625 to claim the \"FreeBSD\"\r\n> identifier (I would suggest that we use \"FREEBSD\" since we put the other\r\n> monikers in all caps). Folks that want to do platform detection can use\r\n> OSPlatfom.Create(\"FREEBSD\") and I'd be happy if part of bringing up the stack\r\n> includes the work to produce a version of System.Runtime.Environment for\r\n> FreeBSD that returns true for an OSPlatform name of \"FREEBSD\". But I don't\r\n> think we should feel like we need to add the property right away. The design we\r\n> have was built in order to be able to decouple adding property to the surface\r\n> area from having an implementation be able to return true for it."}}