As with most open source projects, I not only welcome contributions to Succinc<T>, when I get them it makes the hours spent on it feel worthwhile. It let's me know others know about it, use it and even care about it.
There are numerous ways that contributions can be made; I welcome all of them:
Whilst nuget tells me the number of times the package has been downloaded, it doesn't reveal whether its then used, or soon discarded after trying it. So if you do use it, please tell me about it. Give me a shout on twitter, or leave a comment on my blog.
If you try to use Succinc<T> and run into a problem, again please tell me. If you find a bug, or simply feel it's missing an important feature, create an issue on Github to tell me about it.
The wiki is open to all to edit. If you spot a mistake, or feel you could add a useful explanation or example to the documentation, then please edit away.
If you feel there's something useful you could add yourself, then please do. Fork and clone the repo, make your changes and then send me a Pull Request (PR).
A few points to note regarding this:
- Succinc<T> uses the MIT licence and I intend to keep it that way. As such, there is no need to sign anything to say you grant me copyright. Your work remains your own and the more contributors I get, the harder it would be to get all of us to agree to switching the licence. By default, I tend not to explicitly acknowledge others' copyright in the licence file, but if you wish me to, tell me and I will.
- Please try to supply unit tests if you can. Well tested PR's are easier to approve and merge. If you aren't confident about writing your own tests, let me know and I'll add them, but that will delay things.
- Please try to follow my coding style. There's no hard and fast rules, but generally if your code looks like mine, things will be good. Again, code in very different styles to my own will be rewritten before being merged, so sticking to the same style speeds things up.
- Before starting work, please check on which branches are currently active and only work against those (though PRs from your own branch to one of those active ones are fine).
The following folk have already contributed many useful additions to Succinc<T>:
- Ability to directly compare
Option<T>
andMaybe<T>
without casting.
- Fix to how hashcodes are calculated in unions
- Added caching of Option.None() values
- Union creation performance enhancements
Option.Some
,Option.Choose
,x.ToOption
,x.TryCast
,Option.AsNullable
,Option.Or
,Option.Map
andOption.Flattern
extensions- Piping into
Action<*>
TryGetValue
forIDictionary<,>
- Accessing Union values directly
Copy
,TryCopy
,With
andTryWith
methods (coming in v4.0)