Non-prerelease WampSharp version
Yesterday I released the first non-prerelease version of WampSharp. This was requested and discussed by the community in this issue.
I thought to take this opportunity to write a bit about this open source project, and my journey in the WAMP world.
I began working on WampSharp in April 2013. I looked for a WebSocket subprotocol which supports both RPC and PubSub, and came across this answer on StackOverflow. The first version was released around July 2013 and contained WAMP v1 support for both server and client sides. During its first year, the project did not receive almost any attention from the community.
Around December 2013, work on WAMP v2 spec began. Around late September 2014, the first WampSharp version supporting WAMP v2 was released. Since then, I’ve released every year at least one major WampSharp version, and several hotfix versions, summing up to 53 versions. Usually the annual major version tries to catch up with Crossbar.io.
Community
Nowadays, WampSharp has dozens of users, spread all over the world. A lot of WampSharp’s development is due to the community. This involves some features (mainly authentication features), bug reporting and bug fixes. There were several times where community members helped me figure out how to reproduce a previously reported bug.
Contribution to other open source projects
WampSharp’s presence made me and others contribute to other non-WAMP related projects, as some of the issues filed for WampSharp turned out to be issues of other libraries. These include feature requests and issue filing for WebSockets libraries, and sometimes even pull requests to resolve these! Beside these, I submitted various pull requests for LibLog and also filed issues for the .NET MessagePack implementation, and even for Mono and IIS Express! These were all found via WampSharp related scenarios.
I also tried to contribute to the WAMP ecosystem in various ways. These include providing a C# template to Crossbar.io, providing type declarations for AutobahnJS (the most popular JavaScript implementation of WAMP), providing WAMP messages parsing code for a Firefox developer extension. I also created a project called meta-wamp which provides WAMP messages declaration files, from which one can generate a WAMP related library.
Bringing WampSharp features to other languages
In my opinion, the reflection based roles are among the nicest features WampSharp has to offer. I tried mimicking this in other languages. One attempt was the TypedAutobahn project, which, unfortunately, was never completed. A couple months ago, I submitted an initial reflection based features pull request to autobahn-java, which was merged. Hopefully, this feature will be useful for WAMP Java developers.
Future
It seems that WAMPv2 has kind of staled, and that the most critical period of its development was around 2014-2015. Hopefully, .NET Core has staled, and I won’t have to make any more crazy changes in order to keep supporting this platform. I do plan to continue maintaining WampSharp, which includes answering questions and handling issues on GitHub. I hope I’ll be able to release at least one major version per year.