Hi Louis,
Thank you for the milestones information, and am comfortable to hear that more options are being evaluated for engaging users with the progress. Some of the milestones make sense, but some feel like tickets on issues, and the Jenkins ones I do not believe fall under user features.
Since gRPC is a multi-project endeavour, the releases should usually progress in step, with the assumption that features and API methods are the same in all languages. For instance, the
MetadataCredentialsPlugin seems to be unique to C++. Imagine if Protocol Buffers varied between languages. Since the motivation was to
rework Stubby, then a new clean framework is assumed to be the end-goal. Thus any piece of code of this framework would stem from a behavior-driven development (BDD) specification plan, that matches the usage requirements, where the flow of information is detailed. To have a purpose for each piece of code and thus make it intuitively ubiquitous among languages, a test-driven development (TDD) process follows to provide minimum satisfiability requirements of functionality. Each test would have a documented purpose, so as to link them accordingly and allow for proper class/function contract definitions. This is all a mechanical process - including predictability of all pull-requests - and ensures compatibility of implementation among languages, which naturally brings end-users great joy when working with it. We unfortunately still do not seem to have any project plan.
To accomplish consistency, the simplest approach would entail building a feature matrix to connect implementations together, and then to use as roadmaps for different versions. Such roadmaps would become project plan with dated milestones. The features would reside on the right-hand side, with languages at the top - with one per column. Below is a link to an example:
http://blog.cloudera.com/wp-content/uploads/2013/01/features.pngAn example of released features, the Google Dataflow approach looks very appealing, as noted by the following link:
https://cloud.google.com/dataflow/release-notes/javaLately the gRPC-Java releases reflect more like features:
https://github.com/grpc/grpc-java/releases/I propose that more frequent engagement with the user community through organized gathering of features, and voting of highly requested features would go along way to include key sought-after features. A project plan and detailed documentation on the shared core C library implementation, would allow other languages to be plugged in as surface APIs. A centrally located, periodically updated project plan would allow users to not only engage with, but plan for. Additional documentation that allows for users of different levels to have a welcome experience in using the API will also go a long way. I am happy to see - based on the last gRPC User Forum - that my recommendation to use
ReadTheDocs was utilized to document at least the Python API.
Let's keep working together to help each other out, as it will go a long way to inspire even more user engagement and the continued growth of a fruitful community. By facilitating more adoption, one never knows where a great idea might reside just like how SPDY, HTTP/2, and QUIC motivated this project.
Hope these are all points of agreement, and I welcome elaborative discussions on any of them.
Thank you,
Paul