{"action":"created","issue":{"url":"https://api.github.com/repos/fsharp/FsCheck/issues/63","labels_url":"https://api.github.com/repos/fsharp/FsCheck/issues/63/labels{/name}","comments_url":"https://api.github.com/repos/fsharp/FsCheck/issues/63/comments","events_url":"https://api.github.com/repos/fsharp/FsCheck/issues/63/events","html_url":"https://github.com/fsharp/FsCheck/issues/63","id":46185073,"number":63,"title":"Revamp C#/VB.NET API","user":{"login":"kurtschelfthout","id":164917,"avatar_url":"https://avatars.githubusercontent.com/u/164917?v=3","gravatar_id":"","url":"https://api.github.com/users/kurtschelfthout","html_url":"https://github.com/kurtschelfthout","followers_url":"https://api.github.com/users/kurtschelfthout/followers","following_url":"https://api.github.com/users/kurtschelfthout/following{/other_user}","gists_url":"https://api.github.com/users/kurtschelfthout/gists{/gist_id}","starred_url":"https://api.github.com/users/kurtschelfthout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kurtschelfthout/subscriptions","organizations_url":"https://api.github.com/users/kurtschelfthout/orgs","repos_url":"https://api.github.com/users/kurtschelfthout/repos","events_url":"https://api.github.com/users/kurtschelfthout/events{/privacy}","received_events_url":"https://api.github.com/users/kurtschelfthout/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/fsharp/FsCheck/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/fsharp/FsCheck/labels/up-for-grabs","name":"up-for-grabs","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"kurtschelfthout","id":164917,"avatar_url":"https://avatars.githubusercontent.com/u/164917?v=3","gravatar_id":"","url":"https://api.github.com/users/kurtschelfthout","html_url":"https://github.com/kurtschelfthout","followers_url":"https://api.github.com/users/kurtschelfthout/followers","following_url":"https://api.github.com/users/kurtschelfthout/following{/other_user}","gists_url":"https://api.github.com/users/kurtschelfthout/gists{/gist_id}","starred_url":"https://api.github.com/users/kurtschelfthout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kurtschelfthout/subscriptions","organizations_url":"https://api.github.com/users/kurtschelfthout/orgs","repos_url":"https://api.github.com/users/kurtschelfthout/repos","events_url":"https://api.github.com/users/kurtschelfthout/events{/privacy}","received_events_url":"https://api.github.com/users/kurtschelfthout/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2014-10-18T19:30:30Z","updated_at":"2015-04-18T08:18:25Z","closed_at":null,"body":"This is a spin off of issue #61. I've gathered my thoughts on what I think is wrong with the existing C# API and what I'd like to see changed. This issue is very much up for grabs, but I would be very supportive of anyone tackling this project; unfortunately I will not be doing this myself.\r\n\r\nI think the idea of having a fluent API for generator building (and a little integration with LINQ) is sound. I am a little bit less sure about the same approach for properties. But haven't really thought it through.\r\n\r\nOverall this API could at least use some maintenance and spring cleaning. It is still mostly in the same state since I first committed it.\r\n\r\nSome things that bother me:\r\n- the names of functions in both APIs are completely different. I mostly use the F# API, occassionally using the C# API. I get confused. (and I'm the author of this thing, so I'm not surprised folks are complaining). There is little reason for this; they should be harmonized.\r\n- The C# API pre-dates the major refactoring of the F# API; there is no concept of Arbitrary for example. This can be limiting.\r\n- There are no tests or documentation, hence bugs. E.g. see #5.\r\n- It is not complete; some things like the model based checking for example I haven't tried to do from C#. May be possible but likely there is some ugliness.\r\n- I don't think the integration with Xunit and NUnit works that well; again the API predates that integration so I think you probably have to jump through some hoops. It should just run any method that returns a Spec, I suppose, although without type inference that makes the return type look a bit ugly.\r\n- If we keep the Spec approach, we should have some code generation so we can generate the thing for higher arities.\r\n\r\nOverall, I would like the whole thing revamped and think it's worth breaking all users of the C# API to do the revamp. I would very much appreciate a dedicated volunteer to work on this with me."},"comment":{"url":"https://api.github.com/repos/fsharp/FsCheck/issues/comments/94143005","html_url":"https://github.com/fsharp/FsCheck/issues/63#issuecomment-94143005","issue_url":"https://api.github.com/repos/fsharp/FsCheck/issues/63","id":94143005,"user":{"login":"mausch","id":95194,"avatar_url":"https://avatars.githubusercontent.com/u/95194?v=3","gravatar_id":"","url":"https://api.github.com/users/mausch","html_url":"https://github.com/mausch","followers_url":"https://api.github.com/users/mausch/followers","following_url":"https://api.github.com/users/mausch/following{/other_user}","gists_url":"https://api.github.com/users/mausch/gists{/gist_id}","starred_url":"https://api.github.com/users/mausch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mausch/subscriptions","organizations_url":"https://api.github.com/users/mausch/orgs","repos_url":"https://api.github.com/users/mausch/repos","events_url":"https://api.github.com/users/mausch/events{/privacy}","received_events_url":"https://api.github.com/users/mausch/received_events","type":"User","site_admin":false},"created_at":"2015-04-18T08:18:25Z","updated_at":"2015-04-18T08:18:25Z","body":"I might be able to help with this today during the fsharpex hackday. Is there anything pending to do, or is this done and you're simply looking for feedback about this? Tests, maybe?"}}