-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Hi, Jim!
I've had a blast the last few weeks in my continued study of and work on your protocol-monads library. Just last night, I capped off my recent work by creating a 1.1.0-SNAPSHOT branch and deploying it to my clojars account, to facilitate internal reuse and tire-kicking.
GitHub makes it fairly easy to compare branches between forks of the same project:
michaelsbradleyjr/protocol-monads@jduey:master...1.1.0-SNAPSHOT
What I plan to do is take a day and compose a gist detailing the changes I made, my motivations for making them, and questions that arose during my work. There will be a lot (!!) to it, as I've made more than a few adjustments, and in the process of learning and coding I came upon all sorts of interesting possibilities and quandaries which would benefit from your insights.
I don't think I will have time to do the write-up this week, but I wanted to at least point you to my current work (that's why I've submitted this issue).
I'll go ahead and make a few quick points and ask a question ... question first:
License
Would you be willing to indicate a license for protocol-monads?
I think EPLv1 would be appropriate: it's the "standard license" in the world of open source Clojure projects; also, your project seems to be partially derived from algo.monads, and that library is licensed under EPLv1, and thus the "derivative work" terms may be applicable.
Notes
There is a NOTES.md file in my fork of protocol-monads. It outlines some (but not all) of the questions and possibilities I alluded to above. It needs to be cleaned up, since I've already taken action on some of the points therein. I'll do that clean-up on the same day I do the write-up.
Changes you may not agree with
I've renamed some things, re-organized parts of the library and test suite, etc. I don't expect that you will agree to everything I've changed and that's fine, since I don't expect that you will simply merge in all my commits. I'll provide more context in the write-up and then you can decide what changes of mine to keep or not. And if you end up deciding to take protocol-monads in a different direction, that's great too, since that's the beauty of open source development -- a fork can diverge from its parent project, and there's no harm done.
Lots more tests
I expanded the test suite. The code coverage is pretty good, I think, and writing the additional tests was a good learning exercise.
Examples
I've roughly ported the examples from Hinsen's algo.monads library:
protocol-monads/src/monads/examples.clj
Only the outputs of examples ex25, ex26 and ex27 diverge from their algo.monads counterparts, and this is owing to some decisions I made in my work on the factory function and bind method for monads.core.MaybeTransformer. I will provide more of an explanation in the forthcoming write-up.