Fork me on GitHub
#community-development
<
2016-01-13
>
meow02:01:09

what's so cool about matrix - is it the implementation or the concepts

meow02:01:27

if it's the concepts we can borrow them and implement them in clojure

mitchelkuijpers08:01:51

@martinklepsch: tbh if you can get away with rethink I would go for that, it’s more batteries included than couchdb

martinklepsch08:01:28

how can I add a new page to the colleciton?

martinklepsch09:01:07

There is a section in the Contributing pad but even after setting visibility to public the collection doesn't show up when searching for it

dominicm09:01:44

@meow: There's a specification we can implement in Clojure, yes.

dominicm09:01:29

Apparently Matrix is very ready for prime-time

martinklepsch09:01:36

@dominicm: The server-to-server spec isn't quite ready if I understood correctly?

be909:01:26

is there a possibility that someone else writes, like, an iOS or android app compatible with matrix and this app could be used by clojurians? I see that matrix guys have SDKs for mobile platforms

martinklepsch09:01:57

@dominicm: if you have additions ... simple_smile

martinklepsch09:01:13

Also if someone could add it to the collection that'd be great, couldn't figure out how

jaen09:01:11

Well, big plus of Matrix is that there is already an implementation of the server that can be used, so the focus can be on creating an awesome frontend. And if someone would want to showcase that Clojure is cool for the backend too, there's nothing stopping them, but things can be done in parallel thanks to that - no need to wait on server impl before starting on the front.

be909:01:48

has anyone tested their server impl already?

be909:01:48

@martinklepsch: I think I just added this page to the collection

martinklepsch09:01:34

There's a Clojure room on Matrix btw, if people want to play around

martinklepsch09:01:44

Vector is a pretty nice client impl

be909:01:09

now we could make a bridge between freenode IRC channel and clojurians with... matrix! 😄

be909:01:37

just logged in into matrix with vector — not bad

be909:01:04

well, it seems that matrix client-server spec doesn't include reactions

dominicm09:01:36

But JSON makes it so!

martinklepsch09:01:45

I guess that, again, this might be something that could be implemented with their extensible message format

be909:01:46

I can't find if one can edit messages there

jaen09:01:44

I don't really mind lack of emojis or reactions or somesuch; I alwayss just ASCII my emotes anyway : V

jaen09:01:12

@be9: hover over, options > redact

jaen09:01:13

it seems

dominicm09:01:27

reDact 😉

be909:01:36

for me it just deletes

jaen09:01:42

Ah, that removes xD

jaen09:01:44

Oh well : D

dominicm09:01:45

As in "redact this message from history"

dominicm09:01:51

Which is a neat feature in and of itself.

jaen10:01:06

@dominicm: nah, I know what it said; it was re: editing

dominicm10:01:06

and suggests to me that changing data about previous messages may be possible.

jaen10:01:18

I thought you can redact the content without removing it.

dominicm10:01:42

I see what you mean.

jaen10:01:33

Yeah, maybe I just had the meaning wrong - I figured redacting means editing text for publication (and not only removing).

be910:01:42

basically it's a fancy word for deletion

be910:01:47

> Since some events cannot be simply deleted, e.g. membership events, we instead 'redact' events. This involves removing all keys from an event that are not required by the protocol. This stripped down event is thereafter returned anytime a client or remote server requests it

jaen10:01:40

Yeah, I can see it now.

jaen10:01:51

So an English fail on my part, sorry P ;

be910:01:39

so matrix falls short on editing messages

dominicm10:01:54

If http://matrix.org was decided to be ready for us, it'd be possible to start shifting immediately. With the understanding that we could extend it to "fit the bill"

be910:01:27

that's why I asked if anyone has actually tested their server implementation

jaen10:01:50

Yeah, there doesn't seem to be anything re: editing in the spec.

dominicm10:01:05

The proposal of an update-message works though.

dominicm10:01:36

#matrix:http://matrix.org When I say "works" I mean, seems feasible.

be910:01:39

I like the whole matrix idea because the guys have put much thought into it. it's definitely better than the idea of making a slick frontend for IRC

dominicm10:01:46

^^ For sure.

jaen10:01:43

You mean, they're discussing the proposal in that room right now?

be910:01:48

so the golden path could be just creating a cool cljs client for matrix server... and later throwing out matrix server code and replacing it with infamous "50 lines" of clojure code

jaen10:01:46

Yup, that seems like a reasonable course of action, though I imagine it'll be a bit more than 50 lines, but certainly way less than Python xD

dominicm10:01:52

The way I see it is that we could even just suggest vector for day 1, by day 10 have our own client, and on day 11 we throw up our own server.

be910:01:06

looooong lines they would be 😛

dominicm10:01:37

I REALLY feel like matrix is the proper solution to our problem. In that, it's all about open communities.

be910:01:09

vector is kind of a thin wrapper around matrix js sdk

be910:01:51

look at the source, it has kind of 10 js files (not counting react views)

dominicm10:01:28

We... could implement that fast in cljs.

jaen10:01:28

They have a ready-made set of React components I think

jaen10:01:34

At the very least it could be cannibaliseable

jaen10:01:41

It's always nice to have a reference impl to look at

dominicm10:01:23

I really like how it's possible for matrix to authenticate via facebook if you chose to as well.

dominicm10:01:31

The notion of identity is really distributed, I like it.

be910:01:48

I wonder if we'd need to support VoIP capabilities, heh

dominicm10:01:18

I imagine with the notion of so many clients, that if you choose to ignore a message, then so be it.

dominicm10:01:07

I'd guess that the weechat, irc, etc. clients, all ignore voip

jaen10:01:52

Well, supporting VOIP would be cool though; as long as it's not as much of a central focus as it is in discord it would be helpful probably.

dominicm10:01:05

So what would be the "next step" in getting an actual migration?

dominicm10:01:10

(to any platform)

be911:01:49

Like, wait for slackpocalypse? 😄

be911:01:42

In fact, it seems that we can't avoid building at least a client (be it matrix powered or whatnot)

be911:01:07

So the step would be to get everyone who wants to participate on the same page. Or on several distinct pages, heh

be911:01:36

Like, there are braid guys and there could be matrix guys

be911:01:22

When the doom day comes, the most prominent solution will win, I guess

martinklepsch11:01:01

I think we're far away from any sort of migration. I'm pretty sure that as long as Slack isn't capping this community the incentive to collectively move somewhere else will be small. So now should IMO be spent discussing whether to proceed w/ Matrix, how to proceed, who takes some lead role etc .

jaen11:01:57

Oh, nice, they seem to be considering a websocket extension to the protocol - https://github.com/matrix-org/matrix-doc/blob/master/drafts/websockets.rst

dominicm11:01:08

# be9's 11:9

And so it was prophesized, that upon dooms day two factions would lead strong.
The Matrix, and The Braid "guys." Each would put forth their greatest parinfer, and
a great battle would follow. The champion would lead the Clojurians to salvation.

jaen11:01:32

But in general I agree - Matrix seems like a really viable solution if we would want a room-based alternative.

dominicm11:01:55

How do you mean "room-based" ?

jaen11:01:25

Room/channel/whatever. Like in Slack or IRC. As opposed to tag-based Braid.

dominicm11:01:38

ah, I haven't seen braid's plans.

be911:01:56

it was tough @dominicm !

be911:01:12

anyway, are there any arguments specifically against matrix?

be911:01:13

(by matrix I mean the whole plethora of related options, like their or our server impl., vector or our client, etc)

be911:01:32

like, maybe federation is bad

dominicm11:01:34

I don't understand what you mean by federation here @be9?

be911:01:21

the server federation capability of matrix protocol, http://matrix.org/docs/spec/r0.0.1/server_server.html

jaen11:01:29

IIRC federation is synchronisation between matrix homeservers.

jaen11:01:53

What could be bad about federation?

dominicm11:01:11

^^ this. I mean, distribution is great, surely?

be911:01:26

I live in Russian Federation and this one has been bad for the world lately 😛 but that's totally different story simple_smile seriously, I think federation is good

be911:01:19

what I want to say is that if there are no arguments against matrix, why look into reinventing the wheel? matrix looks more promising than everything else

jaen11:01:36

I mean, maybe there are legitimate downsides to that? I can't imagine one but maybe I'm missing something.

jaen11:01:40

Yeah, I agree.

jaen11:01:26

We totally can reinvent wheel (or at least part of it) even with Matrix - we can start with their Python server impl to develop the client with and after that is stable then we write our own Clojure one.

jaen11:01:47

IIRC the protocol is meant to be extensible so if we need things Matrix doesn't provide there's still rooms for plugins and whatnot.

be911:01:16

what I like about this is the ability to postpone the work on server wheel 😄

dominicm11:01:01

braid in matrix. Woah.

be911:01:15

I've been also bit by NIH virus and would probably participate in the server effort

jaen11:01:36

Well, not with the plain protocol, but with some extension probably?

dominicm11:01:54

Yeah. Extension.

be911:01:16

just put [#cooltag] into every message and there you go

be911:01:43

(in some private braid room)

martinklepsch12:01:19

minor UI thing I'm not sure how to do in Matrix yet: linking to other rooms

martinklepsch12:01:51

Slack has this very clear @user #room thing which might be nice to have in our version of Matrix as well

martinklepsch12:01:59

however that imposes some constraints on room names

martinklepsch12:01:09

but I guess that'd be ok-ish

be912:01:06

I don't think it's a problem. if you want your room to be linkable, just don't put fancy unicode symbols in its name

dominicm12:01:29

If we did matrix, would we run our own server (e.g. http://matrix.clojurians.org), and then we can have generic names quite comfortably.

be912:01:31

the @user thing seems to work in vector, doesn't it?

martinklepsch12:01:22

@be9: I think putting an at in front is effectless whereas in slack it provides suggestions after 3 characters

martinklepsch12:01:31

but all that could be done in a frontend as well so ...

be912:01:28

yeah, it's frontend. I aim at identifying any real show stoppers for jumping into matrix wagon

shanekilkelly13:01:28

these seem like pretty small show-stoppers so far simple_smile so what do we need to do to deploy matrix?

be913:01:53

btw they used sqlite from the start and then added postgresql support

be913:01:14

> The only disadvantage is that the code is relatively new as of April 2015 and may have a few regressions relative to SQLite.

jaen13:01:28

SQL doesn't strike me as the most fitting store for chats, but then again this would be something to use to jumpstart the client development.

martinklepsch13:01:37

since the server stuff is/will-be spec'd you could probably write your own server impl with whatever db you like?

jaen13:01:38

Sure, but like I said it's probably irrelevant at this point, we would only need a backend to test on and the reference impl would just as well in this case.

be913:01:46

absolutely. and SQL db could be migrated later into... datomic?

jaen13:01:09

Was just a general remark; especially considering the messages are extensible, so something like a document store could be better suited.

be913:01:20

what's the latest hotness for chats? 😄

jaen13:01:33

I dunno, I'm somewhat nay on datomic - a) license, b) it can't even do sort and limit when querying.

martinklepsch13:01:46

I guess a streaming/realtime db would make sense

be913:01:57

rethinkdb?

martinklepsch13:01:00

so rethinkdb comes to mind, probably there are quite a few others in that space

martinklepsch13:01:15

but anyways, that's a yak for another time 😛

jaen13:01:27

Or a tabular database.

jaen13:01:33

But yeah, another time, another yak.

jaen13:01:40

Client should be the first one.

be913:01:47

yes, one yak at a time

jaredly16:01:40

mornin! the timezones around here really do make for round-the-clock chatting. lots to catch up on

dominicm16:01:18

I think there's a serious new contender on the table @jaredly

jaredly16:01:13

how extensible is the protocol?

dominicm16:01:29

Extensible enough, that when I mentioned adding editing, they said it's not hard.

dominicm16:01:57

I mean, they run VoIP as an extension pretty much, so... I guess it'll be fairly simple.

dominicm16:01:11

It's apparently just JSON that you can extend.

jaen16:01:03

I can't tell offhand but it's mean to be extensible.

jaen16:01:29

And like Dominic says, they said adding things like editing or tagging should be relatively easy.

be916:01:32

we’d say «lots threads to expand» if it were threading

be916:01:44

I personally don’t think threading would add much value

hans16:01:28

It'd be nice if one could remove threads that one is not interested in, but given that there is no good way to link chat messages together, it won't work well enough anyway.

jaredly16:01:40

@be9: but the threads might be summarized 😄

be916:01:09

oh sweet @jaredly! who’d do this?

jaredly16:01:33

conscientious citizens who have the context

be916:01:18

well sometimes it’s just a bunch of lazy folks 😄 when conscientious citizens are offline practicing their idealism elsewhere simple_smile

jaredly16:01:11

but the first one to come back and go through the trouble can save time for the rest

be916:01:24

I understand threads when you are sitting in your mail client and can pick a message to reply to. or in a web forum

be916:01:42

but chats are, uhm, more spontaneous

jaredly16:01:26

there are certainly a lot of questions to be explored

be916:01:00

discourse could be installed, solely for threads 😉

jaredly16:01:23

but then loose all the spontaneity

be916:01:44

ok, so the deal is «spontaneous threads»

jaredly16:01:18

yup. have you tried braid?

be916:01:38

that’s the result of googling this phrase 😄

be916:01:04

no, I didn’t try braid

be916:01:29

how could I?

jaredly16:01:50

ask @rafd for an invite. braid is all about spontaneous threads

be916:01:11

OTOH slack is about spontaneity in more stable rooms

jaredly16:01:51

and I definitely want a bit more stable room stuff, combined with the spontaneous threads as well

be916:01:46

slack by itself could add reactions on reactions and that would be threading too!

jaen16:01:53

Hmmm, I'm just wondering

jaen16:01:04

When I first heard of discourse

jaen16:01:06

I thought

jaen16:01:14

Whoa, that's a great idea for a forum software

jaen16:01:30

But when I look at discourse forums now, they seem... confusing?

jaen16:01:44

And I'm wondering if the same would happen with nonlinear chats.

jaen16:01:58

It sounds great in principle, to be able to contextually reply to conversation

jaen16:01:15

But jumping the mental threads of conversation might be more confusing that way, I think.

be916:01:16

if you click on it, it highlights the message

jaen16:01:03

Actually, this reminds me a bit of how 4chan/8chan presents it's threads

jaen16:01:05

They are flat

jaen16:01:26

But you can respond to specific posts by their numbers and they are displayed contextually when you hover

jaen16:01:34

So the thread primarily stays flat

jaen16:01:42

But you can revisit the context in-place

be916:01:02

I think those refs could be hidden in message text when you reply, and shown by the client

be916:01:42

I wonder if matrix supports adding arbitrary metadata to the message

be916:01:28

btw it seems to me that matrix doesn’t support direct messaging

jaen16:01:27

Like I said, the messages are extensible. Can't find you exact place in spec to quote, but that's what developers said.

be916:01:51

I see. In fact, spec says which attributes must present in an appropriate section of JSON, but we can add more simple_smile

be916:01:13

in case server is friendly enough to take care and save them

jaen17:01:19

* Sending and receiving extensible messages in a room with (optional) end-to-end encryption
* Extensible user management (inviting, joining, leaving, kicking, banning) mediated by a power-level based user privilege system.
* Extensible room state management (room naming, aliasing, topics, bans)
* Extensible user profile management (avatars, display names, etc)

meow17:01:25

let me know if/when someone wants to start putting together a matrix server like we did for http://mattermost.clojurians.net

jaen17:01:26

That's introduction to the standard though

jaen17:01:34

But I guess it's trustworthy enough.

jaen17:01:21

Looks pretty easy to set up with docker - https://github.com/silvio/docker-matrix

meow17:01:59

we just need to ask @gjnoonan and he has the devops chops for this

be917:01:19

they even have an oldschool deb package http://matrix.org/packages/debian/

gjnoonan17:01:54

@meow: Can you send me a message and catch me up with what I've missed in the last few days please, got called away on business last minute.

jaen17:01:10

Docker is probably better for languages like Ruby or Python though.

jaen17:01:26

You don't want that kind of dependency hell in your system : V

jaen17:01:59

@gjnoonan: you missed today's matrix hype for example.

gjnoonan17:01:35

@jaen: docker is better for everything 😉

meow17:01:41

@gjnoonan: I can try, but, like, a shitload of stuff has been happening and it might take me 3 days to catch you up and in the mean time ... 😈

jaen17:01:57

I mean, with Java you can sorta get away from that, with uberjars and whatnot.

jaen17:01:02

But with Ruby? No dice.

gjnoonan17:01:41

I would still wrap a Jar in a container for deployment.. but that's another topic. I will set up matrix

gjnoonan17:01:04

@meow: Short and skinny version of any breakthroughs?

jaen17:01:18

Yeah, sure, I can see benefits of that even with jars.

meow17:01:32

#C0J20813K development is moving along amazingly well

meow17:01:02

I figured out how to survive while subscribed to all 198 slack channels

meow17:01:20

matrix effort are shaping up nicely

meow17:01:43

I've said fuck a lot in public and haven't been banned ... yet

meow17:01:52

that's about it

meow17:01:32

working on some tooling with @micha for clojars and could use some help with that

jaredly17:01:47

@jaen: was there some chat room where we can talk w/ the matrix people?

jaen17:01:14

> and haven't been banned ... yet I've stareted wondering if that's your endgame : V

gjnoonan17:01:23

let me know about the tooling... see if I can help. I've not heard back from @tcrawley has he been around?

meow17:01:57

my end game is so :moar: :meta: it would blow your mind unless you were on lsd

jaen17:01:58

@jaredly: well, there are matrix: and matrix-dev: on the Matrix.

jaen17:01:25

And about seven people in clojure: ; d

meow17:01:35

oh, and mori got forked so it could be maintained because david is too busy

jaen17:01:41

Make that nine.

meow17:01:47

could use help with that because I don't use mori

meow17:01:39

@tcrawley: is around but very busy with work

meow17:01:19

we're talking about the tooling for clojars on #C0H28NMAS

jaredly17:01:44

@jaen: do I need to get invited to join a room?

meow17:01:45

trying to fix problems with atomic commits and metadata.xml files

jaen17:01:29

@jaredly: just register with https://vector.im and then in the left bottom corner you have "Directory".

jaen17:01:35

You can find the rooms there.

meow17:01:35

lots of easy to fix clojars issues if anyone can help: https://github.com/clojars/clojars-web/labels/ready

meow17:01:17

those are the ones marked as ready to be worked on - much 💌 for anyone who helps.

gjnoonan17:01:35

Will have a look simple_smile

meow17:01:45

you rock

gjnoonan17:01:20

server to put matrix on is spinning up

meow17:01:40

and this is how we get shit done

meow17:01:57

what color should we paint that matrix

jaen17:01:23

binary colour, that is.

meow17:01:36

oh, yeah, some great, great content has been contributed to the hackpad so be sure to look at that

meow17:01:26

http://mattermost.clojurians.net is a 👻 town but has great content we left behind

gjnoonan17:01:50

Aye I will leave it running as long as we need it

gjnoonan17:01:45

right there is a mattrix homeserver and http://vector.im client running

gjnoonan17:01:02

just waiting for DNS to propagate

jaen17:01:46

PS can I register on that mattermost thing as to see how it looks?

jaen17:01:34

@gjnoonan: right there means http://matrix.clojurians.net or some other subdomain?

be918:01:22

> http://matrix.clojurians.net has address 178.62.25.233

be918:01:04

I’m trying to use http://vector.im, but creating an account with http://matrix.clojurians.net doesn’t work

be918:01:08

> There was a problem processing the response.

tcrawley18:01:44

@gjnoonan: do you need something from me?

gjnoonan18:01:46

@be9 I'm currently driving home from work.. I will look into it when I get there

be918:01:23

I suppose it’s due to the SSL cert

gjnoonan18:01:33

@tcrawley: just wanted to chat about the "Clojure foundation" and fundraising you mentioned briefly last week, both to see what I can do to help, and if there's anything we can do that is mutually beneficial to clojars and clojurians. Feel free to pm me :-)

jaredly19:01:01

@be9 @gjnoonan might be something w/ the ssl certificate

meow21:01:40

tough love:

While I am eager to experiment with new approaches to communication apps I think maybe this is not the right problem to solve for us as a community right now. Most of our ideas are not validated and might result in a big mess.
worst intro ever

meow21:01:53

all I hear is fear - that belongs in the concerns document, not the lead to a solutions document, imo

meow21:01:41

I hope this document gets better

meow21:01:10

I feel like saying "please fix or remove that document" but I won't

meow21:01:58

the judge rules in favor of the defendent - you are free to go - the developers failed to make a reasonable case

jaredly23:01:46

fwiw, I read through the matrix protocol, and it looks super awesome + I think it would meet our needs. I’m definitely in favor of leveraging that protocol so we can spend out efforts on making a great experience