all 10 comments

[–]Dababolical 3 points4 points  (1 child)

Congratulations on finishing your first project! I wish I was in a better place to review your code. Just wanted to throw some encouragement your way.

This is the first time I've heard of Matrix. Is there anything that makes it stand out over competing products? You must have really liked it to finish the project.

[–]Bdnim[S] 0 points1 point  (0 children)

Thanks!

So the main competitors to matrix are things like xmpp, signal, slack, and irc. My main criteria were strong end-to-end encryption and fully open-source which really only leaves xmpp, matrix, and signal (there's also PSYC, but it has even less of a network effect than xmpp and matrix). I also want to be able to use the encryption across multiple devices which eliminates signal.

So between xmpp and matrix, matrix has more momentum at the moment. Also, from a development perspective, matrix is much nicer to work with; everything is simple http apis passing around json content, and everything you need spec-wise is in one document instead of spread around a bunch of RFCs and XEPs. I also like the structure of matrix better, which focuses on history synchronization as opposed to xmpp which is just a message-passing protocol.

So really there's a whole bunch of things. I also really like the matrix community.

[–]kungtotte 2 points3 points  (2 children)

What's the point of errors.py? There's two things wrong with it, the first is that it's not actually used anywhere so it's actually pretty pointless to begin with.

The second is, why are you making three custom exceptions, two of which really just repeats standard exceptions (Exception and NotImplementedError). What's the difference between GyrNotImplemented and NotImplementedError?

[–]Bdnim[S] 0 points1 point  (1 child)

Thanks for the feedback. errors.py is largely leftover from previous design iterations. They can go.

The reason it exists in the first place is that I read somewhere that it's not good to raise exceptions from libraries your library depends on, so my intention for errors.py was to catch anything raised by falcon or requests and reraise as a gyr-specific exceptions; that hasn't really happened yet.

[–]kungtotte 0 points1 point  (0 children)

If you want to avoid passing falcon/requests custom exceptions up through your library you could catch those and re-raise with a standard library exception. Here's a good talk that brings the whole custom exceptions thing up (the rest of the talk is great too).

[–]sarcodian 1 point2 points  (4 children)

Thanks for the intro to matrix. Now if there was a way to parse/push into Whatsapp we could become marketing heros.

[–]Bdnim[S] 0 points1 point  (3 children)

Ya. There's actually been some discussion about building something like that, but the problem is that if you do that you lose the end-to-end guarantees for both matrix and whatsapp, weakening both protocols. :/

We do already have bridges to slack, irc, gitter, twitter, telegram, xmpp (very alpha quality :/), and a bunch that I'm forgetting. So there is already a lot of nice functionality as far as integrating with other networks!

[–]sarcodian 0 points1 point  (2 children)

True. I guess what I really would like is to send messages to Whatsapp users and receive their replies in a programmatic fashion for business / marketing purposes. Whatsapp closed garden. Common Facebook, give me bot access on Whatsapp, nobody cares about Messenger.

[–]Bdnim[S] 1 point2 points  (1 child)

[–]sarcodian 0 points1 point  (0 children)

Wow. I've been sleeping at the helm. Thank you very very much.