Critical code review of WAMP/Autobahn/Crossbar

#1

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to reflect recent changes;

https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are trying to achieve, and it’s only fair I give you the opportunity to address some of these concerns prior to publishing.

Cal

0 Likes

#2

Cal,

You claim that:

WAMP specification as a whole feels unviable

Care to elaborate?

Cheers,

Emile

0 Likes

#3

This is based on the summary that WAMP feels over-engineered, similar
to that of RFC 3261 (SIP). The specification makes for difficult
reading, some places have nested JSON encoded as a string [1] (wtf?),
and throughout the spec there is type hinting appended to message
definition keys (|string, |bool etc). There has also been minimal
external input and peer review, the majority of the spec has been
written by one person and less than a handful of people had any deep
involvement on the group mailing list throughout its conception.

Furthermore, WAMP is a trademark which belongs to the company who has
sponsored its development, and it uses the CC license which is not
recommended for software and is not GPL compatible. Also many of the
Autobahn WAMP family use differing licenses, Apache/MIT etc.

Cal

[1]: https://github.com/tavendo/WAMP/blob/master/spec/advanced.md#password-salting

···

On Wed, Jun 10, 2015 at 7:01 PM, Emile Cormier <emile.co...@gmail.com> wrote:

Cal,

You claim that:

WAMP specification as a whole feels unviable

Care to elaborate?

Cheers,
Emile

--
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/EMKF4a0aXKI/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/af198ade-47ae-41ee-b2aa-7453cfdcea47%40googlegroups.com.

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

0 Likes

#4

Cal,

Thank you for elaborating on that particular opinion. I’d like to point that the WAMP spec is a document, and not software, so I don’t understand your concerns regarding the CC license.

Emile

0 Likes

#5

Based on my interpretation of the licenses, the specification is
closely related to software and as such not very suitable. However
legal/licenses are not my strongest point so, if I have misinterpreted
this then do let me know.

Cal

···

On Wed, Jun 10, 2015 at 8:56 PM, Emile Cormier <emile.co...@gmail.com> wrote:

Cal,

Thank you for elaborating on that particular opinion. I'd like to point that
the WAMP spec is a document, and not software, so I don't understand your
concerns regarding the CC license.

Emile

--
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/EMKF4a0aXKI/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/b718887f-93c6-4659-b213-5fd3ec8551d4%40googlegroups.com.

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

0 Likes

#6

The WAMP specification document has vastly different distribution concerns than software implementations. Even the Free Software Foundation recognised this, so they provide the GNU Free Documentation License.

If the WAMP were released under, say, the GPL, there would be nothing preventing someone selling millions of printed copies of the spec for a profit. This blog article discusses reasons why you’d want external documentation licenses to be different than the source code license.

···

On Wednesday, June 10, 2015 at 5:06:11 PM UTC-3, Cal Leeming wrote:

Based on my interpretation of the licenses, the specification is

closely related to software and as such not very suitable. However

legal/licenses are not my strongest point so, if I have misinterpreted

this then do let me know.

Cal

0 Likes

#7

This is based on the summary that WAMP feels over-engineered, similar

to that of RFC 3261 (SIP).

Please don’t take this the wrong way, but how you “feel” about the spec is a rather weak subjective argument. And I don’t see how SIP has anything to do WAMP. Exactly what features of WAMP do you think are superfluous?

the majority of the spec has been

written by one person and less than a handful of people had any deep

involvement on the group mailing list throughout its conception.

The quality of a communications protocol is not a function of the number of people who wrote it. CORBA, for instance, was designed by committee, and look where it is now.

···

On Wednesday, June 10, 2015 at 4:40:38 PM UTC-3, Cal Leeming wrote:

0 Likes

#8

Thanks for the feedback, I'll include a link to this thread in the article.

I was also not aware of the concerns regarding external documentation
licenses, and will update the article accordingly. You also make a
good point in regards to being designed by committee, but this doesn't
excuse the lack of peer review.

I appreciate your comments about it being a weak argument, but will
politely disagree. The purpose of this article is that of a code
review, rather than suggesting ways that the WAMP specification itself
could be improved, as personally I feel that WAMP as a whole is not
the right way forward. However as you note, I've made it very clear
that this is a personal opinion, and I have urged people to review the
project for themselves so they can come to their own conclusions.

To clarify my points about SIP, I did not state that the two were
linked in any way, I said that it reminded me of SIP, in that it feels
over-engineered and hard on the eyes.

If you have any comments/feedback on the code review itself, which is
the primary focus of the article, please do feel free to respond with
these too.

Cal

···

On Wed, Jun 10, 2015 at 10:11 PM, Emile Cormier <emile.co...@gmail.com> wrote:

On Wednesday, June 10, 2015 at 4:40:38 PM UTC-3, Cal Leeming wrote:

This is based on the summary that WAMP feels over-engineered, similar
to that of RFC 3261 (SIP).

Please don't take this the wrong way, but how you "feel" about the spec is a
rather weak subjective argument. And I don't see how SIP has anything to do
WAMP. Exactly what features of WAMP do you think are superfluous?

the majority of the spec has been
written by one person and less than a handful of people had any deep
involvement on the group mailing list throughout its conception.

The quality of a communications protocol is not a function of the number of
people who wrote it. CORBA, for instance, was designed by committee, and
look where it is now.

--
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/EMKF4a0aXKI/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/99e4d95a-e715-4f70-a687-9fd558bfb30a%40googlegroups.com.

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

0 Likes

#9

I appreciate your comments about it being a weak argument, but will

politely disagree. The purpose of this article is that of a code

review, rather than suggesting ways that the WAMP specification itself

could be improved, as personally I feel that WAMP as a whole is not

the right way forward. However as you note, I’ve made it very clear

that this is a personal opinion, and I have urged people to review the

project for themselves so they can come to their own conclusions.

I was actually trying to help you with those comments. In Essay Writing 101, you learn that broad, one-sentence opinions without any supporting facts are essentially worthless. Your readers will have the same reaction that I did.

If the purpose of the article is a code review of two particular WAMP implementations, then I suggest that you leave out blanket statements regarding the WAMP spec if you’re not prepared to back up your claims.

To clarify my points about SIP, I did not state that the two were

linked in any way, I said that it reminded me of SIP, in that it feels

over-engineered and hard on the eyes.

If you have any comments/feedback on the code review itself, which is

the primary focus of the article, please do feel free to respond with

these too.

I am not an expert in Javascript or Python, so I cannot provide any feedback on your code review. I am, however, intimately familiar with the WAMP specification, having implemented a client library in C++. I have not found any of the stable or semi-stable WAMP features to be over-engineered or superfluous. I can easily picture how they would be useful in a distributed web application. That is why I “jumped” all over your statement that the WAMP protocol is not “viable” and “over-engineered”.

The author(s) of Crossbar and Autobahn|JS might have rebuttals for your code critiques, however.

···

On Wednesday, June 10, 2015 at 6:29:22 PM UTC-3, Cal Leeming wrote:

0 Likes

#10

I appreciate your comments about it being a weak argument, but will
politely disagree. The purpose of this article is that of a code
review, rather than suggesting ways that the WAMP specification itself
could be improved, as personally I feel that WAMP as a whole is not
the right way forward. However as you note, I've made it very clear
that this is a personal opinion, and I have urged people to review the
project for themselves so they can come to their own conclusions.

I was actually trying to help you with those comments. In Essay Writing 101,
you learn that broad, one-sentence opinions without any supporting facts are
essentially worthless. Your readers will have the same reaction that I did.

Please don't take my response as a negative/rejection, I appreciate
all feedback and respect that everyone is entitled to an opinion, and
your comments/suggestions are very much welcomed, regardless of
whether I agree with them or not.

I had a similar response from the Docker founders when I criticised
their product as a whole too, yet many of the readers felt compelled
to agree with my comments, despite the project maintainers stating
that my claims were unfounded. I could spend a week going over the
specification, debating every component and coming up with a better
solution, but that's not my primary concern. At the very least, my
comments on WAMP can be considered subjective.

If the purpose of the article is a code review of two particular WAMP
implementations, then I suggest that you leave out blanket statements
regarding the WAMP spec if you're not prepared to back up your claims.

I have backed up my claims, whether you agree with them or feel they
are substantial enough is a different matter. For the most part, it
comes down to a matter of taste, which can be a difficult thing to
explain to someone when they are on a very different wavelength.

···

On Wed, Jun 10, 2015 at 10:59 PM, Emile Cormier <emile.co...@gmail.com> wrote:

On Wednesday, June 10, 2015 at 6:29:22 PM UTC-3, Cal Leeming wrote:

To clarify my points about SIP, I did not state that the two were
linked in any way, I said that it reminded me of SIP, in that it feels
over-engineered and hard on the eyes.

If you have any comments/feedback on the code review itself, which is
the primary focus of the article, please do feel free to respond with
these too.

I am not an expert in Javascript or Python, so I cannot provide any feedback
on your code review. I am, however, intimately familiar with the WAMP
specification, having implemented a client library in C++. I have not found
any of the stable or semi-stable WAMP features to be over-engineered or
superfluous. I can easily picture how they would be useful in a distributed
web application. That is why I "jumped" all over your statement that the
WAMP protocol is not "viable" and "over-engineered".

The author(s) of Crossbar and Autobahn|JS might have rebuttals for your code
critiques, however.

--
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/EMKF4a0aXKI/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/2cc5e301-039b-4515-8929-5e2ac54256df%40googlegroups.com.

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

0 Likes

#11

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome
any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to reflect
recent changes;
https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are
trying to achieve, and it's only fair I give you the opportunity to address
some of these concerns prior to publishing.

Hi Cal,

your "review" is largely just personal opinion. As such, that is fine,
but IMO, you should make it more clear to the reader that it's your
personal opinion here, not a thorough technical review (which it is not).

Let me just address one aspect of your text that _appears_ to have some
backing in arguments: code quality.

AutobahnPython/Crossbar.io: each an every commit is automatically built
on all supported platforms (Travis), tested with an automated set of
unit tests (Tox/Coverage) on all supported platforms, as well as
validated for PEP8 code compliance (Flake8).

Also, you might note that http://autobahn.ws/testsuite/ (which is based
on AutobahnPython) is used by nearly all the industry to check their
WebSocket implementations. If our code quality was that bad, that
wouldn't be the case.

Cheers,
/Tobias

···

Am 10.06.2015 um 14:49 schrieb Cal Leeming:

Cal

0 Likes

#12

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome
any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to reflect
recent changes;
https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are
trying to achieve, and it's only fair I give you the opportunity to address
some of these concerns prior to publishing.

Hi Cal,

your "review" is largely just personal opinion. As such, that is fine,
but IMO, you should make it more clear to the reader that it's your
personal opinion here, not a thorough technical review (which it is not).

Thank you for your feedback.

Although the comments relating to the WAMP spec are subjective, the
code review is an entirely technical and quite thorough.

There are legitimate concerns raised about code quality, which so far
no one has offered up any rebuttal for (other than completely
disregarding them).

Am I correct in saying that you feel this code is of an acceptable
quality and production worthy? Could you give your thoughts on some of
the technical concerns raised in both the py/js implementations?

Let me just address one aspect of your text that _appears_ to have some
backing in arguments: code quality.

AutobahnPython/Crossbar.io: each an every commit is automatically built
on all supported platforms (Travis), tested with an automated set of
unit tests (Tox/Coverage) on all supported platforms, as well as
validated for PEP8 code compliance (Flake8).

There are several PEP8 violations, which were already mentioned, and
just because the code passes some tests does not mean the quality is
good.

Also, you might note that http://autobahn.ws/testsuite/ (which is based
on AutobahnPython) is used by nearly all the industry to check their
WebSocket implementations. If our code quality was that bad, that
wouldn't be the case.

If you read again, you'll see that I actually added a positive note
about the test suite, and that it was used by many industry leaders.

However, this fact alone does not automatically grant you the status
of having good code quality, it simply means you have built a set of
tests which accurately test WS implementation. The python/js libs are
a completely different story, and the number of people using your test
suite has no bearing on code quality.

···

On Thu, Jun 11, 2015 at 1:06 PM, Tobias Oberstein <tobias.o...@gmail.com> wrote:

Am 10.06.2015 um 14:49 schrieb Cal Leeming:

Cheers,
/Tobias

Cal

--
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/EMKF4a0aXKI/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/557979AA.2060109%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#13

your "review" is largely just personal opinion. As such, that is fine,
but IMO, you should make it more clear to the reader that it's your
personal opinion here, not a thorough technical review (which it is not).

Thank you for your feedback.

Although the comments relating to the WAMP spec are subjective, the
code review is an entirely technical and quite thorough.

I reread it, and I can't find a single issue that is valid or still applies. Can you point me to one code quality issue regarding Python in AutobahnPython or Crossbar.io?

Cheers,
Tobias

0 Likes

#14

I took the time to read the entire review.

Some claims are valid : documentation needs improvements, the JS API too.

But the conclusion that the global code quality is bad is extremly exagerated. I see thousands of lines of code everyday that are not remotly as good as the crossbar code and run in prod, serving users and making money.

Not to say the code quality could not be improved : chained if are a problem, comments could be better, and the crossbar configuration system is very inflexible (as you said, blog of JS, and no way to configure that manually in python).

Still, jumping to the conclusion that you should not use this software for that is crazy. Otherwise, I hope you coded your own OS cause i never heard of one with only tools using the code quality you expect.

I still think your review is valuable, and the team should swallow the pill and work on it (note they have limited ressource though), yet it’s harsh, unrealistic and alarmist.

···

On Wednesday, June 10, 2015 at 2:49:21 PM UTC+2, Cal Leeming wrote:

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to reflect recent changes;

https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are trying to achieve, and it’s only fair I give you the opportunity to address some of these concerns prior to publishing.

Cal

0 Likes

#15

Throughout the review there are specific instances of bad code within
Autobahn JS and Crossbar, each with a link to the line/commit on
Github, plus comments (some positive) on various aspects of the
project, including Autobahn Python.

At this point I'd just repeating what is already in the article, it's
up to others to come to their own conclusion now.

Cal

···

On Thu, Jun 11, 2015 at 1:43 PM, Tobias Oberstein <tobias.o...@gmail.com> wrote:

your "review" is largely just personal opinion. As such, that is fine,
but IMO, you should make it more clear to the reader that it's your
personal opinion here, not a thorough technical review (which it is not).

Thank you for your feedback.

Although the comments relating to the WAMP spec are subjective, the
code review is an entirely technical and quite thorough.

I reread it, and I can't find a single issue that is valid or still applies.
Can you point me to one code quality issue regarding Python in
AutobahnPython or Crossbar.io?

Cheers,
Tobias

--
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/EMKF4a0aXKI/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/5579827C.1080308%40gmail.com.

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

0 Likes

#16

Thank you for your feedback, this is precisely the sort of input that
I was looking for, and the points you have made are indeed valid.

I have purposely urged others to come to their own conclusion, and
have included a link to a positive review of Crossbar at the very top
of the article, as well as some positive points from myself.

I'm hoping that my thoughts/comments will be taken on board and that
it will result in some code refactoring, as I do admire what this
project is trying to achieve.

Cal

···

On Thu, Jun 11, 2015 at 3:26 PM, Michel Desmoulin <desmoul...@gmail.com> wrote:

I took the time to read the entire review.

Some claims are valid : documentation needs improvements, the JS API too.

But the conclusion that the global code quality is bad is extremly
exagerated. I see thousands of lines of code everyday that are not remotly
as good as the crossbar code and run in prod, serving users and making
money.

Not to say the code quality could not be improved : chained if are a
problem, comments could be better, and the crossbar configuration system is
very inflexible (as you said, blog of JS, and no way to configure that
manually in python).

Still, jumping to the conclusion that you should not use this software for
that is crazy. Otherwise, I hope you coded your own OS cause i never heard
of one with only tools using the code quality you expect.

I still think your review is valuable, and the team should swallow the pill
and work on it (note they have limited ressource though), yet it's harsh,
unrealistic and alarmist.

On Wednesday, June 10, 2015 at 2:49:21 PM UTC+2, Cal Leeming wrote:

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome
any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to
reflect recent changes;

https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are
trying to achieve, and it's only fair I give you the opportunity to address
some of these concerns prior to publishing.

Cal

--
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/EMKF4a0aXKI/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/145a3c85-4d6b-4ed1-81ec-ab35bd478621%40googlegroups.com.

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

0 Likes

#17

Man, I sure hope that WAMP doesn’t do as well Docker. That would be a tragedy. I mean, all those poor people out there that don’t know that Docker “is no where near production ready”.

Seriously, this guy does raise a couple of good points (all projects can be improved), but overall, he doesn’t rise above the level of troll.

0 Likes

#18

Thank you for the honest feedback, regardless of the sarcasm, it is appreciated.

Cal

···

On Thursday, June 11, 2015, David Dan davi...@gmail.com wrote:

Man, I sure hope that WAMP doesn’t do as well Docker. That would be a tragedy. I mean, all those poor people out there that don’t know that Docker “is no where near production ready”.

Seriously, this guy does raise a couple of good points (all projects can be improved), but overall, he doesn’t rise above the level of troll.

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/EMKF4a0aXKI/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/eea6063e-ec32-46d2-9752-01ca01851d5b%40googlegroups.com.

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

0 Likes

#19

Hi Cal,

As a critical review of your critical review, I would concur with others that it’s also lacking a bit. I certainly appreciate criticism as much as the next guy, especially since I’m in the middle of building a product with Crossbar. However, your critique lacks heft for its conclusion to be taken too seriously. I understand you set a short time limit for this survey, however that fact also doesn’t help the cause.

You do not cite any specific test setup for your performance test, nor whether the high CPU usage is a result of Autobahn or other factors. The entire paragraph lacks substance and validity. Further, it’s about example code, not production code.

You criticise the “Getting started” docs for “I don’t see any documentation on what each attribute does”. I do believe all options are documented somewhere, though not necessarily all within the Getting started page. Are you saying you have not found any documentation for the configuration anywhere, or that you simply didn’t dig deep enough?

Many links to specific code are 404. I don’t know if this changed within the last day or what. Inline code samples would make for a stronger case.

As others have noted, your critique of the spec is very vague. More in-depth examples of what “over engineered” means or samples of how a similar protocol might be implemented in a leaner fashion would help your case.

I do think there are valid criticisms of some code quality samples; though they do not point towards any concrete problems with how the code behaves in production.

In the context of a severely resource constrained open source project, most of your criticism seems to focus on minor aspects which are sort of expected. I suppose if resource constrains, documentation issues and polish are a deal breaker for you in deciding about a technology, this is certainly fair criticism. However, using this as grounds for declaring the entire project “unviable” is a bit thin.

If anything, you would need to specify your requirements and goals and the context in which the project is unviable for you. I can certainly see why a corporate entity or such would not choose Crossbar/Autobahn at the moment. Your review could be much more valid if you’d establish some initial parameters for your review.

Best,

Dav

···

On Wednesday, June 10, 2015 at 2:49:21 PM UTC+2, Cal Leeming wrote:

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to reflect recent changes;

https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are trying to achieve, and it’s only fair I give you the opportunity to address some of these concerns prior to publishing.

Cal

0 Likes

#20

Thank you for the in-depth feedback, you have raised some excellent points.

(I'll post back with a commit diff once done)

Hi Cal,

As a critical review of your critical review, I would concur with others
that it's also lacking a bit. I certainly appreciate criticism as much as
the next guy, especially since I'm in the middle of building a product with
Crossbar. However, your critique lacks heft for its conclusion to be taken
too seriously. I understand you set a short time limit for this survey,
however that fact also doesn't help the cause.

Admittedly, the time limit has reduced the overall quality.

You do not cite any specific test setup for your performance test, nor
whether the high CPU usage is a result of Autobahn or other factors. The
entire paragraph lacks substance and validity. Further, it's about example
code, not production code.

The high CPU was in relation to browser usage with Autobahn JS, which
anyone can reproduce using the demo page in their browser. However I
only tested with Chrome, so I will try a few other browsers and update
the article to reflect this.

You criticise the "Getting started" docs for "I don't see any documentation
on what each attribute does". I do believe all options are documented
somewhere, though not necessarily all within the Getting started page. Are
you saying you have not found any documentation for the configuration
anywhere, or that you simply didn't dig deep enough?

On first inspection, many of the class attributes/methods were
undocumented, however I will update the article to give some examples
of this.

Many links to specific code are 404. I don't know if this changed within the
last day or what. Inline code samples would make for a stronger case.

Apologies, the article was originally written 6 months ago and the
crossbar demo URLs seem to have changed. I also accidentally linked to
the master branch, rather than the release branch, which didn't help,
although this wouldn't have helped in this case as the entire original
repo was moved to "crossbarexamples".

I also did not include my reasoning behind why I felt the demo code
was of poor quality, and will update the article to reflect this.

As others have noted, your critique of the spec is very vague. More in-depth
examples of what "over engineered" means or samples of how a similar
protocol might be implemented in a leaner fashion would help your case.

This is a good point. So far I am yet to find any other system which
offers, at least what I would consider, a clean approach. As such it
is difficult to give direct comparisons on how the project as a whole
could be done better, as there isn't much else to compare it to (any
suggestions?)

However I should have provided a better explanation as to why I felt
it was over-engineered, and will update to reflect.

I do think there are valid criticisms of some code quality samples; though
they do not point towards any concrete problems with how the code behaves in
production.
In the context of a severely resource constrained open source project, most
of your criticism seems to focus on minor aspects which are sort of
expected. I suppose if resource constrains, documentation issues and polish
are a deal breaker for you in deciding about a technology, this is certainly
fair criticism. However, using this as grounds for declaring the entire
project "unviable" is a bit thin.

I'll update with some examples of clean code by unrelated libraries in
their respective language, with similar team/contributor sizes.

Side note - (imho) it doesn't matter if you have 1 person or 100
people, clean code is within the reach of every project. Having
limited contributors/resources is absolutely no reason to sacrifice
clean code, although this is a wider picture debate that deserves a
whole article for itself. It's also a topic that has historically
divided people, everyone has different emotions towards code, some see
it as a business tool, others see it as an art form, some are a mix.

If anything, you would need to specify your requirements and goals and the
context in which the project is unviable *for you*. I can certainly see why
a corporate entity or such would not choose Crossbar/Autobahn at the moment.
Your review could be much more valid if you'd establish some initial
parameters for your review.

Fair point, I will update to reflect.

···

On Fri, Jun 12, 2015 at 9:20 AM, David Zentgraf <da...@spinshell.com> wrote:

Best,
Dav

On Wednesday, June 10, 2015 at 2:49:21 PM UTC+2, Cal Leeming wrote:

Hello,

I have drafted a code review of Autobahn and Crossbar, and would welcome
any feedback/corrections prior to being published.

This review was initially done in Dec 2014, but has been updated to
reflect recent changes;

https://github.com/foxx/foxx.github.io/blob/master/_posts/draft-2014-12-30-crossbar-io-code-review.draft.markdown

As stated in the article, I have a lot of respect for what you guys are
trying to achieve, and it's only fair I give you the opportunity to address
some of these concerns prior to publishing.

Cal

--
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/EMKF4a0aXKI/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/42c40edd-ab42-43a3-b732-297423aa574e%40googlegroups.com.

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

0 Likes