-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improvements #214
Improvements #214
Conversation
565a418
to
a9e9e23
Compare
Hi, |
Hi, Thanks for the PR, but please note we follow the C4 process: https://rfc.zeromq.org/spec:42/C4/ It would be better to avoid breaking the existing APIs, as that is a major pain for users. And when that is not possible, we mark the old one as deprecated (but keep it there for a long transitional period) and add a new one. |
Ok no problem, I understand. The goal is to consolidate the API, which can be tricky with the need to deprecated the old one. I am opened to recomandations |
Hi - I agree with @bluca - the best is to add an another messaging pattern ("MULTISTREAM"??). I am closing the PR. |
Okay. As the API is un draft mode, i was thinking that was a good idea to uniformize the API. |
Oh I thought it was stable? @vyskocilm didn't we mark all current malamute APIs as stable a while ago? |
Some places as the headers descibe the API as draft. |
@bluca @diorcety Sorry for jumping in this thread, but from what I recall Malamute API was never marked as stable, not even after v1.0 release. I think we are long due to mark this API as stable by making another release. As there are users already relying on this API (at least I do) I think it would be good to wait until we make another release with the current API marked as stable and after that we could think on changing the API to something else or adding another messaging pattern as @vyskocilm suggested. |
Yeah, it was a mistake too keep API as draft in 1.0 release. Can we declare
it as stable in master?
Dne 19. 7. 2017 10:04 odpoledne napsal uživatel "Lucas Russo" <
[email protected]>:
… @bluca <https://github.com/bluca> @diorcety <https://github.com/diorcety>
Sorry for jumping in this thread, but from what I recall Malamute API was
never marked as stable, not even after v1.0 release. I think we are long
due to mark this API as stable by making another release.
As there are users already relying on this API (at least I do) I think it
would be good to wait until we make another release with the current API
marked as stable and after that we could think on changing the API to
something else.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#214 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AIa-1DNY4LOtccVozFBuoYcX9v3OiOfvks5sPmFagaJpZM4J-p-Q>
.
|
Yes please do, I honestly thought it already was as part of 1.0, sorry for the confusion @diorcety |
I think we need at least to bump minor version, right? |
From the user's point of view there's no change, so it's not urgent to do a tagged release |
I have no problem at all on this position. This PR is only the result of my experience with malamute, with one client I can call or provide multiple services, I can listen multiples streams but I can't provide multiples streams. |
I am agree with jour position because i can see the backward compatibily as an issue, It seems there is no tech pitfall. |
@bluca But that''s just because malamute has only draft APIs maybe. If it had an stable API, draft API and the user built without --enable-drafts=yes (which I think is the default), promoting the draft API to stable would change the user's perspective, as new methods would be enabled by default. Maybe I'm just being too pedantic about tagged releases? =] |
Yeah you are indeed right, we should do 1.1 |
Actually given there were only DRAFT classes, DRAFT APIs were enabled by default so there should not be any chances:
|
Hum... yes. It seems that in this case --enable-drafts was not needed as you said. Regardless, I think it would be a good thing to bump the minor version as to indicate an API left DRAFT state as went into STABLE. The case with the --enable-drafts on by default seems to me more as a convenience to the user, as building without it would render the generated binary useless. |
Sure. If you guys give it a good testing, tomorrow I can tag a release. |
Okey. No problem. I will test against the current master to be sure. |
Actually, there's a minor issue in file src/malamute.c: #include "mlm_classes.h"
#define PRODUCT "Malamute service/0.2.0"
#define COPYRIGHT "Copyright (c) 2014-16 the Contributors" Instead it should be something like: #include "mlm_classes.h"
#define STRINGIFY(s) PRIMITIVE_STRINGIFY(s)
#define PRIMITIVE_STRINGIFY(s) #s
#define MLM_VERSION_MAJOR_STR STRINGIFY(MLM_VERSION_MAJOR)
#define MLM_VERSION_MINOR_STR STRINGIFY(MLM_VERSION_MINOR)
#define MLM_VERSION_PATCH_STR STRINGIFY(MLM_VERSION_PATCH)
#define PRODUCT "Malamute service/" MLM_VERSION_MAJOR_STR"."MLM_VERSION_MINOR_STR"."MLM_VERSION_PATCH_STR
#define COPYRIGHT "Copyright (c) 2014-16 the Contributors" |
Could you please send a PR? |
Sure. I will send it in a minute. |
One possible issue is that there have been a few changes in the protocol between client and server: So I wonder if interoperability has been broken since 1.0? Does a 1.0 client still work with a 1.1 server and viceversa? |
Yes, you're right, but we only need to keep compatibility from v1.0 -> v1.1, I think, right? Anyway, Do you think running the v1.0 client self-tests against a v1.1 server should be enough? |
The selftest will use the same library for server&client, so it will not expose protocol problems. @vyskocilm can you guys help? |
Hi,
I will try to test it manually.
Dne 22. 7. 2017 12:59 odpoledne napsal uživatel "Luca Boccassi" <
[email protected]>:
… The selftest will use the same library for server&client, so it will not
expose protocol problems.
The only way is if anyone has an application, and can test one side with
1.0 and the other side with master.
@vyskocilm <https://github.com/vyskocilm> can you guys help?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#214 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AIa-1DyKWlUkhSFhQ-5V1DdzEyO6V5vqks5sQdYTgaJpZM4J-p-Q>
.
|
thanks |
Hi @bluca,
However it fails:
|
Ok, thanks for testing it.
What do we do? The mlm protocol is not versioned at the moment, perhaps we should, like we do for ZMTP and then have the same restrictions on modifications? Or do we instead declare that the protocol is an internal matter, and that compatibility is not guaranteed between different versions of libmlm? I don't use malamute in production but IIRC you guys all do, so in the end it's up to you. |
I vote for Option #1: |
I also think it's best to version MLM protocol separately and guarantee
compatibility between MLM library versions, but how would this work?
MLM protocol versioned as an RFC (like majordomo protocol and others) and
MLM library with independent versioning?
I'm not really familiar with the way ZMTP is versioned. I know that there
is a set of RFCs and version numbers for it and that
the libzmq is versioned independently of it. Is there somewhere I can read
about this?
…On Sat, Jul 22, 2017 at 2:55 PM, karolhrdina ***@***.***> wrote:
I vote for Option #1 <#1>:
IMHO compatibility should be guaranteed in between versions and i agree
with you suggestion to version the protocol and apply certain rules to it's
modification, just like with ZMTP.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#214 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AA9LCqsiTlX_6IOXZtBg3b59TdnofB2Dks5sQjeRgaJpZM4J-p-Q>
.
|
Yes ZMTP has its own RFC and versions: https://rfc.zeromq.org/spec:23/ZMTP/ As you guessed, MLM would have its own RFC and so on. |
Nice. I'm all up for it then!
…On Jul 22, 2017 16:49, "Luca Boccassi" ***@***.***> wrote:
Yes ZMTP has its own RFC and versions: https://rfc.zeromq.org/spec:
23/ZMTP/
libzmq is just a 3.0 compliant implementation.
As you guessed, MLM would have its own RFC and so on.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#214 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AA9LCo09FHU-KqswEE5V525SVDF6BEZ5ks5sQlJjgaJpZM4J-p-Q>
.
|
Hi,
Having RFC of mlm proto would be awesome. Any editors? 😉
Dne 22. 7. 2017 10:11 odpoledne napsal uživatel "Lucas Russo" <
[email protected]>:
… Nice. I'm all up for it then!
On Jul 22, 2017 16:49, "Luca Boccassi" ***@***.***> wrote:
> Yes ZMTP has its own RFC and versions: https://rfc.zeromq.org/spec:
> 23/ZMTP/
> libzmq is just a 3.0 compliant implementation.
>
> As you guessed, MLM would have its own RFC and so on.
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <#214 (comment)>,
or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AA9LCo09FHU-
KqswEE5V525SVDF6BEZ5ks5sQlJjgaJpZM4J-p-Q>
> .
>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#214 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AIa-1HUqHVGE9uON4IGtC_Se4sQL1D_xks5sQldbgaJpZM4J-p-Q>
.
|
I'm not 100% familiar with Malamute protocol and, for this reason, I was thinking a more experienced contributor would be better suited to make this. Anyway, I will try to give it a shot at this. The RFCs are collected in this repository right? https://github.com/zeromq/rfc I will open another issue regarding the Malamute RFC so we can discuss there ok? The original subject of this topic has been greatly abused. =] |
Unify the way to send/receive a message.
Currently, stream api is different than service/mailbox. The client must register itself as producer to the server (related to only one stream). Instead of that you can send the stream with the message itself. This will allow a client to send a message on multiple streams as service/mailbox
This PR is more a POC or a Issue entry with some example code, there is certainly missing binding changes to do. related to #208