AutobahnPython: upcoming changes

#1

Hi AutobahnPython users,

this is a notice of an upcoming change (in the next version, which will be 0.9.4) that might affect user code:

···

***
The basic router code in AutobahnPython is gonna be removed, and fully integrated into Crossbar.io
***

Please note that this is irrelevant to most users of AutobahnPython:

* if you only use WebSocket stuff, you're NOT affected
* if you do WAMP, and have all your app's code inside WAMP app components (as has been recommended since ever), you're NOT affected

If however you created a custom WAMP router based on the one included with AutobahnPython, or have put application code into a custom router, this change will affect you.

Also note that nothing is taken away:

1. there are multiple open-source routers available, including of course Crossbar.io which continues the code line the basic AutobahnPython started
2. you can just continue to use AutobahnPython v0.9.3-3 (the last version with the old basic router code inside)
3. you can just fork/copy the old classes from AutobahnPython into your code (under Apache 2.0 license)

[I'd recommend 1. however - using whatever router you prefer]

If you are affected: I am sorry. I understand breaking code sucks. But we have big plans and we need to move faster. Please see the reasoning that follows.

We are accelerating our development with Crossbar.io, implementing features from the WAMP "Advanced Profile".

E.g. upcoming stuff includes pattern based subscriptions/registrations and router clustering/federation.

This requires moving bits deep down in the routing core.

The basic router in AutobahnPython was originally planned to only implement features from the "basic profile", and all stuff from the "advanced profile" would have been implemented only in Crossbar.io.

However, we now realized that this doesn't make sense, since we would essentially have to maintain 2 router implementations, since AP features touch code deep inside the core, and both code lines would diverge more and more.

We cannot afford this. We have limited resources and need to concentrate those.

Hence, we will focus all energy on Crossbar.io, making it the most advanced, powerful, scalable, robust, whatever WAMP router out there. Well, I'd say it already is, but you will need to fasten your seat belts - we only started;)

We need to reduce confusion.

All AutobahnXXX libraries but AutobahnPython have been WAMP client libraries exclusively from the beginning. With above change, AutobahnPython will now take a similar approach.

This is easier to communicate to new users also: Autobahn is all "WAMP client" libraries, whereas Crossbar.io is a "WAMP router" (one of multiple to choose from). Simple.

Despite my continued efforts to convince people that putting app code into routers is a bad thing, I have that feeling that I didn't succeed fully;)

Removing any router code from AutobahnPython will help with arguing here. If you want to write a WAMP router, that is perfectly fine of course. But that should be a deliberate decision, with a higher entry bar that simply creating a WAMP app by writing WAMP app components.

WAMP users / app developers should NOT be bothered with any router code or router code writing.

Cheers,
/Tobias

0 Likes

#2

I currently have a router from AutobahnPython running in my Twisted project. It is trivial to get it up and running:

router_factory = wamp.RouterFactory()

session_factory = wamp.RouterSessionFactory(router_factory)

transport_factory = websocket.WampWebSocketServerFactory(

session_factory,

debug=False,

debug_wamp=False

)

server = serverFromString(reactor, “tcp:” + str(self.port))

server.listen(transport_factory)

If I understand this correctly, autobahn.twisted.wamp.RouterFactory / RouterSessionFactory / WampWebSocketServerFactory will not longer be available in future AP releases?

If so, what will be the change for me if I don’t wish to fork the eventually discarded code? Import crossbar and instantiate something similar? Will using crossbar for just the router be somewhat heavy handed?

···

On Monday, 8 December 2014 10:08:55 UTC-5, Tobias Oberstein wrote:

Hi AutobahnPython users,

this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:


The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io


Please note that this is irrelevant to most users of AutobahnPython:

  • if you only use WebSocket stuff, you’re NOT affected

  • if you do WAMP, and have all your app’s code inside WAMP app
    components (as has been recommended since ever), you’re NOT affected

If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.

Also note that nothing is taken away:

  1. there are multiple open-source routers available, including of course
    Crossbar.io which continues the code line the basic AutobahnPython started

  2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)

  3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

[I’d recommend 1. however - using whatever router you prefer]

If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.

We are accelerating our development with Crossbar.io, implementing
features from the WAMP “Advanced Profile”.

E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.

This requires moving bits deep down in the routing core.

The basic router in AutobahnPython was originally planned to only
implement features from the “basic profile”, and all stuff from the
“advanced profile” would have been implemented only in Crossbar.io.

However, we now realized that this doesn’t make sense, since we would
essentially have to maintain 2 router implementations, since AP features
touch code deep inside the core, and both code lines would diverge more
and more.

We cannot afford this. We have limited resources and need to concentrate
those.

Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I’d say it already is, but you will need to fasten your seat belts

  • we only started;)

We need to reduce confusion.

All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.

This is easier to communicate to new users also: Autobahn is all “WAMP
client” libraries, whereas Crossbar.io is a “WAMP router” (one of
multiple to choose from). Simple.

Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn’t succeed
fully;)

Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.

WAMP users / app developers should NOT be bothered with any router code
or router code writing.

Cheers,

/Tobias

0 Likes

#3

Hi Jonathan,

I currently have a router from AutobahnPython running in my Twisted
project. It is trivial to get it up and running:

...

         router_factory = wamp.RouterFactory()
         session_factory = wamp.RouterSessionFactory(router_factory)
         transport_factory = websocket.WampWebSocketServerFactory(
             session_factory,
             debug=False,
             debug_wamp=False
         )
         server = serverFromString(reactor, "tcp:" + str(self.port))
         server.listen(transport_factory)
...

If I understand this correctly, autobahn.twisted.wamp.RouterFactory /
RouterSessionFactory / WampWebSocketServerFactory will not longer be
available in future AP releases?

Yes.

If so, what will be the change for me if I don't wish to fork the
eventually discarded code? Import crossbar and instantiate something

The idea is that you simply let your Twisted app connect to a running Crossbar.io instance. A WAMP router (Crossbar.io) would be a prerequisite for your app similar as Python is. That is, not as a Python level dependency (setup.py), but an "external prerequisite".

> similar? Will using crossbar for _just_ the router be somewhat heavy
> handed?

Running Crossbar.io with a node configuration that only runs a router (and nothing else) isn't (significantly) more heavy weight than e.g. what you get by manually setting up a router from classes.

The Crossbar.io package currently is about 1MB, but we want to get rid of the "app templates" included, which have gotten a little out of hand. We should be able to cut down to like 200-300kB.

Crossbar.io also only requires some small packages itself in addition to autobahn[twisted] - none of the deps are for binary extensions.

So I'd argue these are quite minor issues, if at all, and you get a router with WAMP advanced profile support.

Cheers,
/Tobias

···

Am 08.12.2014 17:15, schrieb Jonathan Dobson:

On Monday, 8 December 2014 10:08:55 UTC-5, Tobias Oberstein wrote:

    Hi AutobahnPython users,

    this is a notice of an upcoming change (in the next version, which will
    be 0.9.4) that might affect user code:

    ***
    The basic router code in AutobahnPython is gonna be removed, and fully
    integrated into Crossbar.io
    ***

    Please note that this is irrelevant to most users of AutobahnPython:

    * if you only use WebSocket stuff, you're NOT affected
    * if you do WAMP, and have all your app's code inside WAMP app
    components (as has been recommended since ever), you're NOT affected

    If however you created a custom WAMP router based on the one included
    with AutobahnPython, or have put application code into a custom router,
    this change will affect you.

    Also note that nothing is taken away:

    1. there are multiple open-source routers available, including of
    course
    Crossbar.io which continues the code line the basic AutobahnPython
    started
    2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)
    3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

    [I'd recommend 1. however - using whatever router you prefer]

    If you are affected: I am sorry. I understand breaking code sucks. But
    we have big plans and we need to move faster. Please see the reasoning
    that follows.

    We are accelerating our development with Crossbar.io, implementing
    features from the WAMP "Advanced Profile".

    E.g. upcoming stuff includes pattern based subscriptions/registrations
    and router clustering/federation.

    This requires moving bits deep down in the routing core.

    The basic router in AutobahnPython was originally planned to only
    implement features from the "basic profile", and all stuff from the
    "advanced profile" would have been implemented only in Crossbar.io.

    However, we now realized that this doesn't make sense, since we would
    essentially have to maintain 2 router implementations, since AP
    features
    touch code deep inside the core, and both code lines would diverge more
    and more.

    We cannot afford this. We have limited resources and need to
    concentrate
    those.

    Hence, we will focus all energy on Crossbar.io, making it the most
    advanced, powerful, scalable, robust, whatever WAMP router out there.
    Well, I'd say it already is, but you will need to fasten your seat
    belts
    - we only started;)

    We need to reduce confusion.

    All AutobahnXXX libraries but AutobahnPython have been WAMP client
    libraries exclusively from the beginning. With above change,
    AutobahnPython will now take a similar approach.

    This is easier to communicate to new users also: Autobahn is all "WAMP
    client" libraries, whereas Crossbar.io is a "WAMP router" (one of
    multiple to choose from). Simple.

    Despite my continued efforts to convince people that putting app code
    into routers is a bad thing, I have that feeling that I didn't succeed
    fully;)

    Removing any router code from AutobahnPython will help with arguing
    here. If you want to write a WAMP router, that is perfectly fine of
    course. But that should be a deliberate decision, with a higher entry
    bar that simply creating a WAMP app by writing WAMP app components.

    WAMP users / app developers should NOT be bothered with any router code
    or router code writing.

    Cheers,
    /Tobias

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#4

Great - thanks for the advisement. So I’d just run crossbar as an external router, and my Twisted app would become a client, along with the existing wamp clients.
B instead of A:

B: [Twisted] <—> [crossbar Router] <—> [Clients]

···

A: [Twisted + Router] <—> [Clients]

On Monday, 8 December 2014 13:02:16 UTC-5, Tobias Oberstein wrote:

Hi Jonathan,

Am 08.12.2014 17:15, schrieb Jonathan Dobson:

I currently have a router from AutobahnPython running in my Twisted

project. It is trivial to get it up and running:

     router_factory = wamp.RouterFactory()
     session_factory = wamp.RouterSessionFactory(router_factory)
     transport_factory = websocket.WampWebSocketServerFactory(
         session_factory,
         debug=False,
         debug_wamp=False
     )
     server = serverFromString(reactor, "tcp:" + str(self.port))
     server.listen(transport_factory)

If I understand this correctly, autobahn.twisted.wamp.RouterFactory /

RouterSessionFactory / WampWebSocketServerFactory will not longer be

available in future AP releases?

Yes.

If so, what will be the change for me if I don’t wish to fork the

eventually discarded code? Import crossbar and instantiate something

The idea is that you simply let your Twisted app connect to a running
Crossbar.io instance. A WAMP router (Crossbar.io) would be a
prerequisite for your app similar as Python is. That is, not as a Python
level dependency (setup.py), but an “external prerequisite”.

similar? Will using crossbar for just the router be somewhat heavy

handed?

Running Crossbar.io with a node configuration that only runs a router
(and nothing else) isn’t (significantly) more heavy weight than e.g.
what you get by manually setting up a router from classes.

The Crossbar.io package currently is about 1MB, but we want to get rid
of the “app templates” included, which have gotten a little out of hand.
We should be able to cut down to like 200-300kB.

Crossbar.io also only requires some small packages itself in addition to
autobahn[twisted] - none of the deps are for binary extensions.

So I’d argue these are quite minor issues, if at all, and you get a
router with WAMP advanced profile support.

Cheers,

/Tobias

On Monday, 8 December 2014 10:08:55 UTC-5, Tobias Oberstein wrote:

Hi AutobahnPython users,
this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:
***
The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io
***
Please note that this is irrelevant to most users of AutobahnPython:
* if you only use WebSocket stuff, you're NOT affected
* if you do WAMP, and have all your app's code inside WAMP app
components (as has been recommended since ever), you're NOT affected
If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.
Also note that nothing is taken away:
1. there are multiple open-source routers available, including of
course
Crossbar.io which continues the code line the basic AutobahnPython
started
2. you can just continue to use AutobahnPython v0.9.3-3 (the last
version with the old basic router code inside)
3. you can just fork/copy the old classes from AutobahnPython into your
code (under Apache 2.0 license)
[I'd recommend 1. however - using whatever router you prefer]
If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.
We are accelerating our development with Crossbar.io, implementing
features from the WAMP "Advanced Profile".
E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.
This requires moving bits deep down in the routing core.
The basic router in AutobahnPython was originally planned to only
implement features from the "basic profile", and all stuff from the
"advanced profile" would have been implemented only in Crossbar.io.
However, we now realized that this doesn't make sense, since we would
essentially have to maintain 2 router implementations, since AP
features
touch code deep inside the core, and both code lines would diverge more
and more.
We cannot afford this. We have limited resources and need to
concentrate
those.
Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I'd say it already is, but you will need to fasten your seat
belts
- we only started;)
We need to reduce confusion.
All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.
This is easier to communicate to new users also: Autobahn is all "WAMP
client" libraries, whereas Crossbar.io is a "WAMP router" (one of
multiple to choose from). Simple.
Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn't succeed
fully;)
Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.
WAMP users / app developers should NOT be bothered with any router code
or router code writing.
Cheers,
/Tobias

You received this message because you are subscribed to the Google

Groups “Autobahn” group.

To unsubscribe from this group and stop receiving emails from it, send

an email to autobahnws+...@googlegroups.com

mailto:autobahnws+unsub...@googlegroups.com.

To post to this group, send email to auto...@googlegroups.com

mailto:autob...@googlegroups.com.

To view this discussion on the web visit

https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com

<https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com?utm_medium=email&utm_source=footer>.

For more options, visit https://groups.google.com/d/optout.

0 Likes

#5

Yep. Exactly.

···

Sent from Mobile (Google Nexus 5)

Am 08.12.2014 19:48 schrieb “Jonathan Dobson” jon.m....@gmail.com:

Great - thanks for the advisement. So I’d just run crossbar as an external router, and my Twisted app would become a client, along with the existing wamp clients.
B instead of A:

A: [Twisted + Router] <—> [Clients]

B: [Twisted] <—> [crossbar Router] <—> [Clients]

On Monday, 8 December 2014 13:02:16 UTC-5, Tobias Oberstein wrote:

Hi Jonathan,

Am 08.12.2014 17:15, schrieb Jonathan Dobson:

I currently have a router from AutobahnPython running in my Twisted

project. It is trivial to get it up and running:

     router_factory = wamp.RouterFactory()
     session_factory = wamp.RouterSessionFactory(router_factory)
     transport_factory = websocket.WampWebSocketServerFactory(
         session_factory,
         debug=False,
         debug_wamp=False
     )
     server = serverFromString(reactor, "tcp:" + str(self.port))
     server.listen(transport_factory)

If I understand this correctly, autobahn.twisted.wamp.RouterFactory /

RouterSessionFactory / WampWebSocketServerFactory will not longer be

available in future AP releases?

Yes.

If so, what will be the change for me if I don’t wish to fork the

eventually discarded code? Import crossbar and instantiate something

The idea is that you simply let your Twisted app connect to a running
Crossbar.io instance. A WAMP router (Crossbar.io) would be a
prerequisite for your app similar as Python is. That is, not as a Python
level dependency (setup.py), but an “external prerequisite”.

similar? Will using crossbar for just the router be somewhat heavy

handed?

Running Crossbar.io with a node configuration that only runs a router
(and nothing else) isn’t (significantly) more heavy weight than e.g.
what you get by manually setting up a router from classes.

The Crossbar.io package currently is about 1MB, but we want to get rid
of the “app templates” included, which have gotten a little out of hand.
We should be able to cut down to like 200-300kB.

Crossbar.io also only requires some small packages itself in addition to
autobahn[twisted] - none of the deps are for binary extensions.

So I’d argue these are quite minor issues, if at all, and you get a
router with WAMP advanced profile support.

Cheers,

/Tobias

On Monday, 8 December 2014 10:08:55 UTC-5, Tobias Oberstein wrote:

Hi AutobahnPython users,
this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:
***
The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io
***
Please note that this is irrelevant to most users of AutobahnPython:
* if you only use WebSocket stuff, you're NOT affected
* if you do WAMP, and have all your app's code inside WAMP app
components (as has been recommended since ever), you're NOT affected
If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.
Also note that nothing is taken away:
1. there are multiple open-source routers available, including of
course
Crossbar.io which continues the code line the basic AutobahnPython
started
2. you can just continue to use AutobahnPython v0.9.3-3 (the last
version with the old basic router code inside)
3. you can just fork/copy the old classes from AutobahnPython into your
code (under Apache 2.0 license)
[I'd recommend 1. however - using whatever router you prefer]
If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.
We are accelerating our development with Crossbar.io, implementing
features from the WAMP "Advanced Profile".
E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.
This requires moving bits deep down in the routing core.
The basic router in AutobahnPython was originally planned to only
implement features from the "basic profile", and all stuff from the
"advanced profile" would have been implemented only in Crossbar.io.
However, we now realized that this doesn't make sense, since we would
essentially have to maintain 2 router implementations, since AP
features
touch code deep inside the core, and both code lines would diverge more
and more.
We cannot afford this. We have limited resources and need to
concentrate
those.
Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I'd say it already is, but you will need to fasten your seat
belts
- we only started;)
We need to reduce confusion.
All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.
This is easier to communicate to new users also: Autobahn is all "WAMP
client" libraries, whereas Crossbar.io is a "WAMP router" (one of
multiple to choose from). Simple.
Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn't succeed
fully;)
Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.
WAMP users / app developers should NOT be bothered with any router code
or router code writing.
Cheers,
/Tobias

You received this message because you are subscribed to the Google

Groups “Autobahn” group.

To unsubscribe from this group and stop receiving emails from it, send

an email to autobahnws+...@googlegroups.com

mailto:autobahnws+unsub...@googlegroups.com.

To post to this group, send email to auto...@googlegroups.com

mailto:autob...@googlegroups.com.

To view this discussion on the web visit

https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com

<https://groups.google.com/d/msgid/autobahnws/068d8ce7-143d-4bdf-90db-28985df558dd%40googlegroups.com?utm_medium=email&utm_source=footer>.

For more options, visit https://groups.google.com/d/optout.

You received this message because you are subscribed to the Google Groups “Autobahn” group.

To unsubscribe from this group and stop receiving emails from it, send an email to autobahnws+...@googlegroups.com.

To post to this group, send email to autob...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/autobahnws/4725a4ac-d1e7-4c1e-b5e8-d10a6855c862%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

0 Likes

#6

Hello Tobias,

We are using the Autobahn|Python router as a lightweight-component from which we can quickly start multiple instances (ports).

We are running the router over asyncio (trollius) on Python 2.7.

One router instance is responsible for the communication of one (of many possible) HTML5 presentation component with a .NET/CPython application.

This application is distributed with a dedicated installer.

What are the minimal dependencies of crossbar.io to start it as a plain router? Does it run with asyncio too?

Thank you,

Matthias

0 Likes

#7

Hi Matthias,

Hello Tobias,

We are using the Autobahn|Python router as a lightweight-component from
which we can quickly start multiple instances (ports).
We are running the router over asyncio (trollius) on Python 2.7.
One router instance is responsible for the communication of one (of many
possible) HTML5 presentation component with a .NET/CPython application.
This application is distributed with a dedicated installer.
What are the minimal dependencies of crossbar.io to start it as a plain
router? Does it run with asyncio too?

Crossbar.io essentially depends on AutobahnPython and Twisted, and not much else (in particular, no binary packages). Crossbar.io does run on Twisted, not asyncio.

···

Am 19.12.2014 14:18, schrieb 'Matthias K.' via Autobahn:

Thank you,

Matthias

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/1f69e1b7-b158-4ef8-9bf2-3b0d9329a3df%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/1f69e1b7-b158-4ef8-9bf2-3b0d9329a3df%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#8

Thanks for the update. Does this break any of the beginning examples, in particular, the autobahn.twisted.wamp.ApplicationRunner?

···

On Monday, December 8, 2014 10:08:55 AM UTC-5, Tobias Oberstein wrote:

Hi AutobahnPython users,

this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:


The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io


Please note that this is irrelevant to most users of AutobahnPython:

  • if you only use WebSocket stuff, you’re NOT affected

  • if you do WAMP, and have all your app’s code inside WAMP app
    components (as has been recommended since ever), you’re NOT affected

If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.

Also note that nothing is taken away:

  1. there are multiple open-source routers available, including of course
    Crossbar.io which continues the code line the basic AutobahnPython started

  2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)

  3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

[I’d recommend 1. however - using whatever router you prefer]

If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.

We are accelerating our development with Crossbar.io, implementing
features from the WAMP “Advanced Profile”.

E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.

This requires moving bits deep down in the routing core.

The basic router in AutobahnPython was originally planned to only
implement features from the “basic profile”, and all stuff from the
“advanced profile” would have been implemented only in Crossbar.io.

However, we now realized that this doesn’t make sense, since we would
essentially have to maintain 2 router implementations, since AP features
touch code deep inside the core, and both code lines would diverge more
and more.

We cannot afford this. We have limited resources and need to concentrate
those.

Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I’d say it already is, but you will need to fasten your seat belts

  • we only started;)

We need to reduce confusion.

All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.

This is easier to communicate to new users also: Autobahn is all “WAMP
client” libraries, whereas Crossbar.io is a “WAMP router” (one of
multiple to choose from). Simple.

Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn’t succeed
fully;)

Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.

WAMP users / app developers should NOT be bothered with any router code
or router code writing.

Cheers,

/Tobias

0 Likes

#9

Well… this was a bit disastrous for me.

I tried crossbar a few months ago, but it was broken with horribly out of date documentation. After struggling to get it working I gave up and I wrote my own router using the Autobahn library. I actually invested quite a bit of time into this. It supports (support_ed_ now?), among other features, PAM style authentication chains, as well as multiple database backends. I would like to keep using it, however I would also like to benefit from the advantages of getting security and code updates. At the very least, I would like to salvage what I can. As far as I can tell, the router code in crossbar is basically identical to what was in Autobahn. Can I simply use the corresponding modules from crossbar? Or, since you deliberately removed the router from Autobahn, should I assume the upcoming changes to crossbar will be highly non-backwards compatible?

Finally, I understand you have your own development goals, but I feel this was a very serious and uncalled for change. I certainly appreciate the work you do. The main reason I stick with Autobahn is because I know the code is very high quality. I am also aware I cannot expect anything more than I already get (especially since it is free!). However, this is a huge change. It potentially wipes out months of work on my part. It seems this is becoming a pattern too. The change from WAMPv1 was big. This change followed soon after. I am not sure my project can survive another. I am not angry, but I am disappointed. ;(

-Yury

···

On Monday, December 8, 2014 10:08:55 AM UTC-5, Tobias Oberstein wrote:

Hi AutobahnPython users,

this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:


The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io


Please note that this is irrelevant to most users of AutobahnPython:

  • if you only use WebSocket stuff, you’re NOT affected

  • if you do WAMP, and have all your app’s code inside WAMP app
    components (as has been recommended since ever), you’re NOT affected

If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.

Also note that nothing is taken away:

  1. there are multiple open-source routers available, including of course
    Crossbar.io which continues the code line the basic AutobahnPython started

  2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)

  3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

[I’d recommend 1. however - using whatever router you prefer]

If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.

We are accelerating our development with Crossbar.io, implementing
features from the WAMP “Advanced Profile”.

E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.

This requires moving bits deep down in the routing core.

The basic router in AutobahnPython was originally planned to only
implement features from the “basic profile”, and all stuff from the
“advanced profile” would have been implemented only in Crossbar.io.

However, we now realized that this doesn’t make sense, since we would
essentially have to maintain 2 router implementations, since AP features
touch code deep inside the core, and both code lines would diverge more
and more.

We cannot afford this. We have limited resources and need to concentrate
those.

Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I’d say it already is, but you will need to fasten your seat belts

  • we only started;)

We need to reduce confusion.

All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.

This is easier to communicate to new users also: Autobahn is all “WAMP
client” libraries, whereas Crossbar.io is a “WAMP router” (one of
multiple to choose from). Simple.

Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn’t succeed
fully;)

Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.

WAMP users / app developers should NOT be bothered with any router code
or router code writing.

Cheers,

/Tobias

0 Likes

#10

Hi Yury,

first off, happy new year!

Well... this was a bit disastrous for me.

I tried crossbar a few months ago, but it was broken with horribly out
of date documentation. After struggling to get it working I gave up and

The documentation has improved a lot since then, and we've just recently hired someone to help here. But yes, we've been hearing this a lot: "you guys do incredible work, but the docs suck".

You can help! Help us improving the docs ..

I wrote my own router using the Autobahn library. I actually invested
quite a bit of time into this. It supports (support_ed_ now?), among
other features, PAM style authentication chains, as well as multiple
database backends. I would like to keep using it, however I would also

That's cool! And it should be possible to migrate that custom authentication/authorization code to Crossbar.io.

Crossbar.io supports hooking up both custom authentication, as well as authorization code.

E.g. here is how you hook into WAMP-Ticket authentication

https://github.com/crossbario/crossbarexamples/tree/master/authenticate/ticketdynamic/python

and here is how to hook into WAMP-CRA

https://github.com/crossbario/crossbarexamples/tree/master/authenticate/wampcradynamic/python

The cool thing is: you can write your custom authentication/authorization code in _any WAMP supported language_!

And: you don't need to touch Crossbar.io code

Apart from authentication/authorization, what other features does your custom router have?

like to benefit from the advantages of getting security and code
updates. At the very least, I would like to salvage what I can. As far
as I can tell, the router code in crossbar is basically identical to
what was in Autobahn. Can I simply use the corresponding modules from
crossbar? Or, since you deliberately removed the router from Autobahn,

Technically (obviously) yes, but don't do it.

Nothing of the Crossbar.io code base is intended for inclusion at the class level. Crossbar.io should be treated as a black box! Think like this: we might rewrite Crossbar.io in C++ in the future .. at which point there is no Python class to derive from anymore.

should I assume the upcoming changes to crossbar will be highly
non-backwards compatible?

The routing code will change and expand drastically over the coming months.

Finally, I understand you have your own development goals, but I feel
this was a very serious and uncalled for change. I certainly appreciate

"uncalled":

I am not a native speaker, so I am sorry if I get upset wrongly, but "uncalled" .. forgive me: we don't wait for you to call us to do something or not.

If "uncalled" would mean "unneeded", then: you don't judge what's needed or not for this project.

Then: as far as I can tell, this is the very first posting by you on this list, right?

So what exactly have _you_ contributed to this community? You didn't even care to _announce_ that you use this stuff, that you wrote a custom router, not to speak of trying to get your custom code integrated upstream.

Seriously, this attitude (again sorry if I misunderstood) does make _me_ disappointed.

the work you do. The main reason I stick with Autobahn is because I know
the code is very high quality. I am also aware I cannot expect anything
more than I already get (especially since it is free!). However, this is

No, you can and should demand more, even though it's free;) This is a community, but the model is "benevolent dictator". Stand up, have your say. You _will_ be heard. Ask other users here or elsewhere: I may be hard to discuss with, but in the end, good arguments convince me, and the final outcome then is far superior.

E.g. take WAMP as a protocol. A lot of developers contributed (and actively do contribute e.g. with respect to the WAMP Advanced Profile). In fact, WAMP2 grew out of that interaction/feedback. I can assure you: it's a _lot_ of work only trying to integrate all the requirements and demands that people have. And more so: it is a challenge to maintain overall integrity and cohesion in the design. And with the latter, sometimes this means "saying no" or make a change. It's better than trying to be everything to everybody ..

a huge change. It potentially wipes out months of work on my part. It
seems this is becoming a pattern too. The change from WAMPv1 was big.

Let me ask a question: do you think the benefits of WAMP2 outweight the break with WAMP1?

There is always a stretch between moving forward, inonvating, and keeping the state of affairs.

This change followed soon after. I am not sure my project can survive
another. I am not angry, but I am disappointed. ;(

I can understand your feelings.

Let's make it concrete: I am willing to assist you porting your custom authentication/authorization code to Crossbar.io.

Cheers,
/Tobias

···

Am 03.01.2015 um 05:17 schrieb Yury Sobolev:

-Yury

On Monday, December 8, 2014 10:08:55 AM UTC-5, Tobias Oberstein wrote:

    Hi AutobahnPython users,

    this is a notice of an upcoming change (in the next version, which will
    be 0.9.4) that might affect user code:

    ***
    The basic router code in AutobahnPython is gonna be removed, and fully
    integrated into Crossbar.io
    ***

    Please note that this is irrelevant to most users of AutobahnPython:

    * if you only use WebSocket stuff, you're NOT affected
    * if you do WAMP, and have all your app's code inside WAMP app
    components (as has been recommended since ever), you're NOT affected

    If however you created a custom WAMP router based on the one included
    with AutobahnPython, or have put application code into a custom router,
    this change will affect you.

    Also note that nothing is taken away:

    1. there are multiple open-source routers available, including of
    course
    Crossbar.io which continues the code line the basic AutobahnPython
    started
    2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)
    3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

    [I'd recommend 1. however - using whatever router you prefer]

    If you are affected: I am sorry. I understand breaking code sucks. But
    we have big plans and we need to move faster. Please see the reasoning
    that follows.

    We are accelerating our development with Crossbar.io, implementing
    features from the WAMP "Advanced Profile".

    E.g. upcoming stuff includes pattern based subscriptions/registrations
    and router clustering/federation.

    This requires moving bits deep down in the routing core.

    The basic router in AutobahnPython was originally planned to only
    implement features from the "basic profile", and all stuff from the
    "advanced profile" would have been implemented only in Crossbar.io.

    However, we now realized that this doesn't make sense, since we would
    essentially have to maintain 2 router implementations, since AP
    features
    touch code deep inside the core, and both code lines would diverge more
    and more.

    We cannot afford this. We have limited resources and need to
    concentrate
    those.

    Hence, we will focus all energy on Crossbar.io, making it the most
    advanced, powerful, scalable, robust, whatever WAMP router out there.
    Well, I'd say it already is, but you will need to fasten your seat
    belts
    - we only started;)

    We need to reduce confusion.

    All AutobahnXXX libraries but AutobahnPython have been WAMP client
    libraries exclusively from the beginning. With above change,
    AutobahnPython will now take a similar approach.

    This is easier to communicate to new users also: Autobahn is all "WAMP
    client" libraries, whereas Crossbar.io is a "WAMP router" (one of
    multiple to choose from). Simple.

    Despite my continued efforts to convince people that putting app code
    into routers is a bad thing, I have that feeling that I didn't succeed
    fully;)

    Removing any router code from AutobahnPython will help with arguing
    here. If you want to write a WAMP router, that is perfectly fine of
    course. But that should be a deliberate decision, with a higher entry
    bar that simply creating a WAMP app by writing WAMP app components.

    WAMP users / app developers should NOT be bothered with any router code
    or router code writing.

    Cheers,
    /Tobias

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/95cc1c00-c8a1-4e56-94cb-c3cc1e019e4e%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/95cc1c00-c8a1-4e56-94cb-c3cc1e019e4e%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#11

Hi Tobias,

first off, happy new year!

Please forgive my lack of manners. Happy New Year!

The documentation has improved a lot since then, and we’ve just recently hired someone to help here. But yes, we’ve been hearing this a lot: “you guys do incredible work, but the docs suck”.

This is good to hear, but comes a little late.

The cool thing is: you can write your custom authentication/authorization code in any WAMP supported language!

This is very cool.

Apart from authentication/authorization, what other features does your custom router have?

Various custom logging, a modular plugin system (reusable), and many months of infrastructure and integration that will need to be tossed.

“uncalled”:

I am not a native speaker, so I am sorry if I get upset wrongly, but “uncalled” … forgive me: we don’t wait for you to call us to do something or not.

No.

If “uncalled” would mean “unneeded”, then: you don’t judge what’s needed or not for this project.

No, but closer. I mean I believe that there is rarely a time when the right call is to break backwards compatibility. Of course, it is quite presumptuous of me to assume where the project is headed. I apologize for that.

Then: as far as I can tell, this is the very first posting by you on this list, right?

Yes.

So what exactly have you contributed to this community? You didn’t even care to announce that you use this stuff, that you wrote a custom router, not to speak of trying to get your custom code integrated upstream.

I contributed a WAMP1 client (which you posted). I opened several issues, and I spoke up from time to time on IRC. All this has happened over the past year. My involvement is minimal, so I do not expect you to remember me. I am sorry if I overstepped my bounds.

The reason I do not announce everything is that unfortunately I am not allowed to discuss most of my work. I try to contribute where I can.

Seriously, this attitude (again sorry if I misunderstood) does make me disappointed.

I definitely said some things I should not have. I was honestly hoping this was the last rewrite I would have to do and was just putting on the finishing touches. I was quite distraught when I upgraded to the latest version and saw all my work break. My post was too emotional. I am sorry about that.

No, you can and should demand more, even though it’s free;) This is a community, but the model is “benevolent dictator”. Stand up, have your say. You will be heard. Ask other users here or elsewhere: I may be hard to discuss with, but in the end, good arguments convince me, and the final outcome then is far superior.

I have noticed this. You have taken my suggestions in the past. Thank you.

I will take you up on your offer then. I ask that the project offer long term stability.

Let me ask a question: do you think the benefits of WAMP2 outweight the break with WAMP1?

Well… Yes and no. Theoretically, yes. Practically, there had been no complete, stable Advanced Profile WAMP2 implementation I can use. So, no.

There is always a stretch between moving forward, inonvating, and keeping the state of affairs.

Stability is a requirement for me. After the switch to WAMP2, I assumed (I guess “hoped” is the better word), things would settle and begin to mature.

Let’s make it concrete: I am willing to assist you porting your custom authentication/authorization code to Crossbar.io.

Your kindness is truly appreciated. I think the biggest problem is infrastructure changes and how my router was integrated. I will post later with an example of my authentication stack and maybe we can see if it has a place in crossbar.

Thank you for the quick reply.

-Yury

0 Likes

#12

While I understand the struggle, I can’t help but notice the software hasn’t reached version 1.0.0 yet. Actually both crossbar and autobahn Python are in V 0.9.x. This is usually the only time a software designer can break all the stuff he wants.

If we don’t allow this, then you remove flexibility for the core dev and the lib would start being bloated and unadapted before it even reache it’s first official stable release.

I’m not in the core dev team, but I did some big projects and also been on the side of the guys with breaking dependancies.
Yes, it has a cost, but I do feel it’s a good balance and a necessary stage to craft great software.

0 Likes

#13

You are right on all points. I would however add the counter point that breaking major functionality on minor version changes (0.9.3 -> 0.9.4) is considered bad form. At least for the WAMP2 change there was a full mid version worth of warning and a transition period where both were supported.

This was barely a month. I suppose it would have happened eventually.

···

On Jan 3, 2015 3:18 PM, “Michel Desmoulin” desmoul...@gmail.com wrote:

While I understand the struggle, I can’t help but notice the software hasn’t reached version 1.0.0 yet. Actually both crossbar and autobahn Python are in V 0.9.x. This is usually the only time a software designer can break all the stuff he wants.

If we don’t allow this, then you remove flexibility for the core dev and the lib would start being bloated and unadapted before it even reache it’s first official stable release.

I’m not in the core dev team, but I did some big projects and also been on the side of the guys with breaking dependancies.
Yes, it has a cost, but I do feel it’s a good balance and a necessary stage to craft great software.

You received this message because you are subscribed to a topic in the Google Groups “Autobahn” group.

To unsubscribe from this topic, visit https://groups.google.com/d/topic/autobahnws/bCj7O2G2sxA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to autobahnws+...@googlegroups.com.

To post to this group, send email to autob...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/autobahnws/f5a80f42-ac1e-4e65-91c5-715db45d5171%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

0 Likes

#14

This raises a good question : are these software using Semver or not ?

If yes, it’s freestyle untill 1.0.0 and they cran break it all. But they should disclose it on the doc.

If not, then Yury got a point.

···

On Sunday, January 4, 2015 3:45:54 AM UTC+7, Yury Sobolev wrote:

You are right on all points. I would however add the counter point that breaking major functionality on minor version changes (0.9.3 -> 0.9.4) is considered bad form. At least for the WAMP2 change there was a full mid version worth of warning and a transition period where both were supported.

This was barely a month. I suppose it would have happened eventually.

On Jan 3, 2015 3:18 PM, “Michel Desmoulin” desmo...@gmail.com wrote:

While I understand the struggle, I can’t help but notice the software hasn’t reached version 1.0.0 yet. Actually both crossbar and autobahn Python are in V 0.9.x. This is usually the only time a software designer can break all the stuff he wants.

If we don’t allow this, then you remove flexibility for the core dev and the lib would start being bloated and unadapted before it even reache it’s first official stable release.

I’m not in the core dev team, but I did some big projects and also been on the side of the guys with breaking dependancies.
Yes, it has a cost, but I do feel it’s a good balance and a necessary stage to craft great software.

You received this message because you are subscribed to a topic in the Google Groups “Autobahn” group.

To unsubscribe from this topic, visit https://groups.google.com/d/topic/autobahnws/bCj7O2G2sxA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to autobahnws+...@googlegroups.com.

To post to this group, send email to auto...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/autobahnws/f5a80f42-ac1e-4e65-91c5-715db45d5171%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

0 Likes

#15

Hi Yury,

> > The documentation has improved a lot since then, and we've just

recently hired someone to help here. But yes, we've been hearing this a
lot: "you guys do incredible work, but the docs suck".

This is good to hear, but comes a little late.

The first version of Crossbar.io was release 2013-11-21 to PyPI. So this project exists for roughly 12 month (in the public).

So "late" is relative;) Anyway, I absolutely agree on this: the docs need to improve.

I am probably not good at writing easy, approachable docs. And I personally definitely can't ramp up my workload more .. I have reached the limits of what I can do.

> Apart from authentication/authorization, what other features does
your custom router have?

Various custom logging, a modular plugin system (reusable), and many
months of infrastructure and integration that will need to be tossed.

=( I can feel your pain.

And I am feeling guilty for not having tried even harder to raise awareness to the following paradigm / strong opinion:

Routers should _not_ contain application logic. Never.

Actually, _app_ developers should not even think about writing or hacking on routers.

Are you hacking the PostgreSQL codebase to inject some application logic? (rethoric question)

It was a mistake to not splitting out all routing code from the very beginning into a separate project. Yes. In _hindsight_ that's clear.

But that's how things evolve. In fact, if you go back in the code history of AutobahnPython, you will find _WebSocket testsuite_ code! Which had long ago then be split out into a separate project (AutobahnTestsuite).

Now, logging sounds to me it should be in the router. So I'd also offer to work with you on getting that migrated.

"plugin system": unsure what this means. If it is about app logic, then this is IMO the wrong approach to put into a router. The "plugin" system of Crossbar.io are standard WAMP components.

But, here is what you can do: just take the classes and code from AutobahnPython 0.9.3-3 and put that into your proprietory codebase. It's Apache 2.0. Do what you want.

Of course that means you then have a fully custom router to maintain on your own. Sure. But nothing that existed was taken away from you.

> If "uncalled" would mean "unneeded", then: you don't judge what's
needed or not for this project.

No, but closer. I mean I believe that there is rarely a time when the
right call is to break backwards compatibility. Of course, it is quite

That would mean no project can evolve ever. Doesn't make sense. No, now (<1.0) is the time to do so. It's not either or. It's shades of grey .. need to find a balanced approach. And: I am still learning on how to manage a growing, open-source project. It's tricky in ways .. so I do make mistakes. Yes.

> So what exactly have _you_ contributed to this community? You didn't
even care to _announce_ that you use this stuff, that you wrote a custom
router, not to speak of trying to get your custom code integrated upstream.

I contributed a WAMP1 client (which you posted). I opened _several_
issues, and I spoke up from time to time on IRC. All this has happened
over the past year. My involvement is minimal, so I do not expect you to
remember me. I am sorry if I overstepped my bounds.

Oh, ok. Sorry for not recognizing! To be honest, I didn't remember you (I am communicating about this stuff with a lot of people all the time over various channels) .. but now I see. And will remember you;)

The reason I do not announce everything is that unfortunately I am not
_allowed_ to discuss most of my work. I try to contribute where I can.

Never mind, I think I found your startup;)

I will take you up on your offer then. I ask that the project offer long
term stability.

I agree. A statement on that is critical:

https://github.com/tavendo/AutobahnPython/issues/313
https://github.com/crossbario/crossbar/issues/194

> Let me ask a question: do you think the benefits of WAMP2 outweight
the break with WAMP1?

Well... Yes and no. Theoretically, yes. Practically, there had been no
complete, stable Advanced Profile WAMP2 implementation I can use. So, no.

WAMP BP already goes way beyond WAMP1.

WAMP AP as a spec is neither stable nor complete. So there can't be such an implementation. Having said that, Crossbar.io is the most complete implementation I am aware of.

> There is always a stretch between moving forward, inonvating, and
keeping the state of affairs.

Stability is a requirement for me. After the switch to WAMP2, I assumed
(I guess "hoped" is the better word), things would settle and begin to
mature.

Protocol-wise, WAMP2 BP _is_ stable. There won't be a WAMP3. In general, WAMP2 AP is work in progress. Selected features of WAMP2 AP are stable.

AutobahnPython is still <1.0. But see the issues I filed above ..

> Let's make it concrete: I am willing to assist you porting your
custom authentication/authorization code to Crossbar.io.

Your kindness is truly appreciated. I think the biggest problem is
infrastructure changes and how my router was integrated. I will post
later with an example of my authentication stack and maybe we can see if
it has a place in crossbar.

Sure. Also note, that you can keep your stuff proprietory: e.g. if you implement your custom authentication as a WAMP component, you can hook that up to Crossbar.io without touching CB code, and only using AutobahnPython. The latter is Apache 2.0, so you can go closed source. There is no need to contribute anything into the CB codebase for such things.

Cheers,
/Tobias

···

Thank you for the quick reply.

-Yury

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/CAA4O5QgnOra%2BsXidTK95w4hjMwcfR-ccnnviCxXDOit1Vq4Ykw%40mail.gmail.com
<https://groups.google.com/d/msgid/autobahnws/CAA4O5QgnOra%2BsXidTK95w4hjMwcfR-ccnnviCxXDOit1Vq4Ykw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#16

Hi Michel,

While I understand the struggle, I can't help but notice the software
hasn't reached version 1.0.0 yet. Actually both crossbar and autobahn
Python are in V 0.9.x. This is usually the only time a software designer
can break all the stuff he wants.

If we don't allow this, then you remove flexibility for the core dev and
the lib would start being bloated and unadapted before it even reache
it's first official stable release.

I'm not in the core dev team, but I did some big projects and also been
on the side of the guys with breaking dependancies.
Yes, it has a cost, but I do feel it's a good balance and a necessary
stage to craft great software.

Yes. That's also my view. Great software needs to have an incubation phase .. in which some pivoting is allowed, mistakes made and dead ends explored.

In fact, regarding WAMP, it was planned from day 1 (!) to have a v1, gain experience, and then do v2. That's in the mailing lists for everyone to read up.

On the other hand, the stability is required for others to build/rely on:

https://github.com/tavendo/AutobahnPython/issues/313
https://github.com/crossbario/crossbar/issues/194

Cheers,
/Tobias

···

Am 03.01.2015 um 21:18 schrieb Michel Desmoulin:

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/f5a80f42-ac1e-4e65-91c5-715db45d5171%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/f5a80f42-ac1e-4e65-91c5-715db45d5171%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#17

I agree. Was a mistake. Should have been 0.10.0, not 0.9.4.

···

Am 03.01.2015 um 21:45 schrieb Yury Sobolev:

You are right on all points. I would however add the counter point that
breaking _major_ functionality on _minor_ version changes (0.9.3 ->
0.9.4) is considered bad form. At least for the WAMP2 change there was a

0 Likes

#18

Hi Tobias,

Just to clarify, the database backend is for authentication. The password hashes for CRA need to be stored somewhere.

Anyway, thank you for the feedback. I will try to migrate as much as possible to crossbar.

-Yury

···

On Jan 3, 2015 4:39 PM, “Tobias Oberstein” tobias.o...@gmail.com wrote:

Hi Yury,

The documentation has improved a lot since then, and we’ve just
recently hired someone to help here. But yes, we’ve been hearing this a

lot: “you guys do incredible work, but the docs suck”.

This is good to hear, but comes a little late.

The first version of Crossbar.io was release 2013-11-21 to PyPI. So this project exists for roughly 12 month (in the public).

So “late” is relative;) Anyway, I absolutely agree on this: the docs need to improve.

I am probably not good at writing easy, approachable docs. And I personally definitely can’t ramp up my workload more … I have reached the limits of what I can do.

Apart from authentication/authorization, what other features does

your custom router have?

Various custom logging, a modular plugin system (reusable), and many

months of infrastructure and integration that will need to be tossed.

=( I can feel your pain.

And I am feeling guilty for not having tried even harder to raise awareness to the following paradigm / strong opinion:

Routers should not contain application logic. Never.

Actually, app developers should not even think about writing or hacking on routers.

Are you hacking the PostgreSQL codebase to inject some application logic? (rethoric question)

It was a mistake to not splitting out all routing code from the very beginning into a separate project. Yes. In hindsight that’s clear.

But that’s how things evolve. In fact, if you go back in the code history of AutobahnPython, you will find WebSocket testsuite code! Which had long ago then be split out into a separate project (AutobahnTestsuite).

Now, logging sounds to me it should be in the router. So I’d also offer to work with you on getting that migrated.

“plugin system”: unsure what this means. If it is about app logic, then this is IMO the wrong approach to put into a router. The “plugin” system of Crossbar.io are standard WAMP components.

But, here is what you can do: just take the classes and code from AutobahnPython 0.9.3-3 and put that into your proprietory codebase. It’s Apache 2.0. Do what you want.

Of course that means you then have a fully custom router to maintain on your own. Sure. But nothing that existed was taken away from you.

If “uncalled” would mean “unneeded”, then: you don’t judge what’s

needed or not for this project.

No, but closer. I mean I believe that there is rarely a time when the

right call is to break backwards compatibility. Of course, it is quite

That would mean no project can evolve ever. Doesn’t make sense. No, now (<1.0) is the time to do so. It’s not either or. It’s shades of grey … need to find a balanced approach. And: I am still learning on how to manage a growing, open-source project. It’s tricky in ways … so I do make mistakes. Yes.

So what exactly have you contributed to this community? You didn’t

even care to announce that you use this stuff, that you wrote a custom

router, not to speak of trying to get your custom code integrated upstream.

I contributed a WAMP1 client (which you posted). I opened several

issues, and I spoke up from time to time on IRC. All this has happened

over the past year. My involvement is minimal, so I do not expect you to

remember me. I am sorry if I overstepped my bounds.

Oh, ok. Sorry for not recognizing! To be honest, I didn’t remember you (I am communicating about this stuff with a lot of people all the time over various channels) … but now I see. And will remember you;)

The reason I do not announce everything is that unfortunately I am not

allowed to discuss most of my work. I try to contribute where I can.

Never mind, I think I found your startup;)

I will take you up on your offer then. I ask that the project offer long

term stability.

I agree. A statement on that is critical:

https://github.com/tavendo/AutobahnPython/issues/313

https://github.com/crossbario/crossbar/issues/194

Let me ask a question: do you think the benefits of WAMP2 outweight

the break with WAMP1?

Well… Yes and no. Theoretically, yes. Practically, there had been no

complete, stable Advanced Profile WAMP2 implementation I can use. So, no.

WAMP BP already goes way beyond WAMP1.

WAMP AP as a spec is neither stable nor complete. So there can’t be such an implementation. Having said that, Crossbar.io is the most complete implementation I am aware of.

There is always a stretch between moving forward, inonvating, and

keeping the state of affairs.

Stability is a requirement for me. After the switch to WAMP2, I assumed

(I guess “hoped” is the better word), things would settle and begin to

mature.

Protocol-wise, WAMP2 BP is stable. There won’t be a WAMP3. In general, WAMP2 AP is work in progress. Selected features of WAMP2 AP are stable.

AutobahnPython is still <1.0. But see the issues I filed above …

Let’s make it concrete: I am willing to assist you porting your

custom authentication/authorization code to Crossbar.io.

Your kindness is truly appreciated. I think the biggest problem is

infrastructure changes and how my router was integrated. I will post

later with an example of my authentication stack and maybe we can see if

it has a place in crossbar.

Sure. Also note, that you can keep your stuff proprietory: e.g. if you implement your custom authentication as a WAMP component, you can hook that up to Crossbar.io without touching CB code, and only using AutobahnPython. The latter is Apache 2.0, so you can go closed source. There is no need to contribute anything into the CB codebase for such things.

Cheers,

/Tobias

Thank you for the quick reply.

-Yury

You received this message because you are subscribed to the Google

Groups “Autobahn” group.

To unsubscribe from this group and stop receiving emails from it, send

an email to autobahnws+unsubscribe@googlegroups.com

mailto:autobahnws+unsub...@googlegroups.com.

To post to this group, send email to autob...@googlegroups.com

mailto:autobahnws@googlegroups.com.

To view this discussion on the web visit

https://groups.google.com/d/msgid/autobahnws/CAA4O5QgnOra%2BsXidTK95w4hjMwcfR-ccnnviCxXDOit1Vq4Ykw%40mail.gmail.com

<https://groups.google.com/d/msgid/autobahnws/CAA4O5QgnOra%2BsXidTK95w4hjMwcfR-ccnnviCxXDOit1Vq4Ykw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

For more options, visit https://groups.google.com/d/optout.

You received this message because you are subscribed to a topic in the Google Groups “Autobahn” group.

To unsubscribe from this topic, visit https://groups.google.com/d/topic/autobahnws/bCj7O2G2sxA/unsubscribe.

To unsubscribe from this group and all its topics, send an email to autobahnws+unsubscribe@googlegroups.com.

To post to this group, send email to autob...@googlegroups.com.

To view this discussion on the web visit https://groups.google.com/d/msgid/autobahnws/54A8618F.2000208%40gmail.com.

For more options, visit https://groups.google.com/d/optout.

0 Likes

#19

Hi Tobias,

We are trying to implement Autobahn Android with Ratchet server. The iOS and JS clients are already working fine with pubsub. However, I am unable to use include and exclude session IDs from receiving the messages in android. It was very easy to do it in JS and iOS but android does not seem to have any API for it. In short I am trying to avoid server broadcast my message back to me, it only needs to go out to others subscribed to topic.

Please help.

Thanks

Sheraz Jamshed

···

On Monday, December 8, 2014 at 8:08:55 PM UTC+5, Tobias Oberstein wrote:

Hi AutobahnPython users,

this is a notice of an upcoming change (in the next version, which will
be 0.9.4) that might affect user code:


The basic router code in AutobahnPython is gonna be removed, and fully
integrated into Crossbar.io


Please note that this is irrelevant to most users of AutobahnPython:

  • if you only use WebSocket stuff, you’re NOT affected

  • if you do WAMP, and have all your app’s code inside WAMP app
    components (as has been recommended since ever), you’re NOT affected

If however you created a custom WAMP router based on the one included
with AutobahnPython, or have put application code into a custom router,
this change will affect you.

Also note that nothing is taken away:

  1. there are multiple open-source routers available, including of course
    Crossbar.io which continues the code line the basic AutobahnPython started

  2. you can just continue to use AutobahnPython v0.9.3-3 (the last
    version with the old basic router code inside)

  3. you can just fork/copy the old classes from AutobahnPython into your
    code (under Apache 2.0 license)

[I’d recommend 1. however - using whatever router you prefer]

If you are affected: I am sorry. I understand breaking code sucks. But
we have big plans and we need to move faster. Please see the reasoning
that follows.

We are accelerating our development with Crossbar.io, implementing
features from the WAMP “Advanced Profile”.

E.g. upcoming stuff includes pattern based subscriptions/registrations
and router clustering/federation.

This requires moving bits deep down in the routing core.

The basic router in AutobahnPython was originally planned to only
implement features from the “basic profile”, and all stuff from the
“advanced profile” would have been implemented only in Crossbar.io.

However, we now realized that this doesn’t make sense, since we would
essentially have to maintain 2 router implementations, since AP features
touch code deep inside the core, and both code lines would diverge more
and more.

We cannot afford this. We have limited resources and need to concentrate
those.

Hence, we will focus all energy on Crossbar.io, making it the most
advanced, powerful, scalable, robust, whatever WAMP router out there.
Well, I’d say it already is, but you will need to fasten your seat belts

  • we only started;)

We need to reduce confusion.

All AutobahnXXX libraries but AutobahnPython have been WAMP client
libraries exclusively from the beginning. With above change,
AutobahnPython will now take a similar approach.

This is easier to communicate to new users also: Autobahn is all “WAMP
client” libraries, whereas Crossbar.io is a “WAMP router” (one of
multiple to choose from). Simple.

Despite my continued efforts to convince people that putting app code
into routers is a bad thing, I have that feeling that I didn’t succeed
fully;)

Removing any router code from AutobahnPython will help with arguing
here. If you want to write a WAMP router, that is perfectly fine of
course. But that should be a deliberate decision, with a higher entry
bar that simply creating a WAMP app by writing WAMP app components.

WAMP users / app developers should NOT be bothered with any router code
or router code writing.

Cheers,

/Tobias

0 Likes