Jan Henning Thorsen and Marcus Ramberg

Interview with Jan Henning Thorsen and Marcus Ramberg about Convos, their open source messaging and chatroom app, with many features. It's written in Perl and uses Mojolicious!

Download: mp3 (26 Mb) 30.02 mins


00:01 Gabor Szabo
Hello there, this is the CMOS, the Code Maven Open Source podcast and video interview series and I'm your host, Gabor Szabo, and with me here is Jan Henning Thorsen, also known as Batman, and Marcus Ramberg, also known as Marcus. What is your nickname?

00:31 Jan Henning Thorsen
It's actually Batman.

00:33 Gabor Szabo
Yeah, Batman. Did I say something else?

00:36 Jan Henning Thorsen

00:38 Gabor Szabo

00:39 Jan Henning Thorsen
3D Batman.

00:43 Gabor Szabo
So we guys know each other for quite a long time from the Perl community. But many of the listeners don't. And I actually don't know why are you Batman? So please tell me a little bit about your history, how did you get into programming, how did you get into open source, and then from there we get to the product that you want to talk about.

01:03 Jan Henning Thorsen
Right, so in 2001, I started working for a cable company, and they wanted me to make a provisioning system for them, and I didn't know any programming at the moment. So I started Googling and the first thing that came up was some Perl code, so from now I'm really happy that I...like the first hit wasn't PHP instead. Because if PHP was number one on Google, then I would be programming in PHP instead.

01:36 Gabor Szabo
Okay, I don't know what to say about that. Maybe you'd be better off there!

01:42 Jan Henning Thorsen
Maybe, but yeah, who knows. Anyway, so I did Perl pretty much by myself for many, many years but then I started getting more active on the IRC and I met some people from Oslo who also did Perl and then I started hanging out on the YAPC::Europe Conferences and stuff like that. So then I got more into the whole Perl community and everything. But for a long time I was just doing scripting by myself, so the code was really awful at that moment.

02:19 Gabor Szabo
Marcus, if I am not mistaken, you are both from Oslo, right?

02:25 Marcus Ramberg
No, I am originally from Lillehammer, but I've lived there since 99 so I guess I'm from Oslo now. But I've been active in open source for a really long time. I think my first active contribution was translation of the Window Maker project. I don't know if you remember Window Maker from the 90s? The window manager for XLM?

Anyways, I've been doing Perl and some C stuff for quite a long time. I used to do the development using Mason, back in the early 2000s and I really disliked how disorganized it was, so when Simon Cozens came up with the Maypole project, I got involved in that and I eventually moved on to become part of the Catalyst team. I was release manager for Catalyst for a few years. And more recently, I've been contributing to the Mojolicious project as part of the core.

03:22 Gabor Szabo
We had Joel from the Mojolicious project on the show. So do you guys still using Perl a lot in these days?

03:35 Marcus Ramberg
Yeah, well I've been doing operations with it for the years but I've just come back to a Perl job now. We're working together at a company called Reisegiganten, which is a travel site.

03:45 Gabor Szabo
Okay, so that's not your company, is it?

03:48 Marcus Ramberg
It's not my company, I had my own company for six years and then I went back to being an employee again. It's much less stressful to work for someone and get money and go home. So I'm quite happy to work at the Reisegiganten, they are a big Perl shop, they have several Catalyst applications and I've been moving them along to Mojolicious within the last couple of years, which is why they wanted to have us onboard. So I'm very glad to be able to do Mojo again in my daytime job, because it gives me an excuse to contribute more back to the project.

04:20 Gabor Szabo
Oh that's really nice. So you are moving applications from Catalyst over to Mojolicious?

04:26 Jan Henning Thorsen
Yeah, yeah, for sure.

04:29 Gabor Szabo
Okay, why is that? Why do you do that?

04:32 Jan Henning Thorsen
Well, it's a much leaner framework to work with. So it's like, instead of programming Java, you can just...you don't have to program that much to make stuff actually work.

04:47 Marcus Ramberg
And we're really happy with the async capabilities that Mojo gives us. And also our travel site is built around Solar, which is like HP based, so using the Mojo IO loop and the async, we can do a lot of operations in parallel and still have really fast responses and stuff like that. So being async is a really big benefit for us.

05:07 Gabor Szabo
Okay, and do you...so the project you created, Convos, that we wanted to talk about and as I understand, it's an IRC client basically, or a web interface for IRC? Do you use IRC at work? Or only for your open source involvement?

05:29 Jan Henning Thorsen
In my previous work, we used IRC and Convos actively and internally. But...

05:40 Marcus Ramberg
At the moment, they are using a proprietary internal chat client at our new job. But we are planning on moving them over eventually. We just need to make it as good for their purposes. So that's one of our internal goals actually. So we can get it to work to make the integrations that they require for their workday.

06:02 Gabor Szabo
Okay, so let's get to the beginning of Convos. Tell me what is it and why did you create it?

06:11 Jan Henning Thorsen
So, I think it's back in 2012, by accident I was talking to Marcus and he was actively using IRC client at the moment, which he really enjoyed. But he wanted something for himself, and me, myself, I was really tired of using IRC.

06:35 Marcus Ramberg
Yes, like a screen-based console client, right?

06:39 Jan Henning Thorsen
Because I wanted to have my chat with me everywhere. So I was thinking I should make a web-based IRC client so I could use it on my cell phone.

06:49 Marcus Ramberg
And be on the browser where ever you go, right?

06:51 Jan Henning Thorsen
Yeah, so we were starting talking about it and then we just started hacking on Convos.

06:59 Gabor Szabo
Are there applications, that you can install on your mobile phone, that would allow you to use IRC?

07:08 Jan Henning Thorsen
At the moment we're focusing on just making it...

07:12 Marcus Ramberg
No, he means older applications.

07:13 Gabor Szabo
Others, others?

07:15 Marcus Ramberg
Well, that doesn't really work well, if you're having your IRC and then you're only online while you're running the application and then you need to enter the proxy or something like that, and then it's really suboptimal because maybe some messages get pushed to your desktop while you're there. And then you connect with your web-base and you can't see the history because it's scrolled out, and so you won't be always in sync and always have access to all of the history and see what, go back and see what happened to your chat, right? If you use native IRC client on your mobile, you'll only connected while you open the phone. Now the idea with Convos, is that you're always online, right? You're always connected to IRC and then you just go into your web browser or your application and continue the conversations you were having with another client.

08:10 Gabor Szabo
So as I remember, I actually stopped using IRC a couple of years ago because I found that it's too much distraction, too much discussion going on, and I can't get the job done. But I had two ways of using IRC. One of them was when I had an IRC client on my own desktop and whenever I connected, then I could use it. And the other mode was when I had an IRC client running on a server, inside a screen-session, and then I could connect to it. So if I understand Convos provides this kind of capabilities?

08:50 Marcus Ramberg
Because you have it running on a server, but it's more like a native client in your web browser, right?

08:55 Jan Henning Thorsen
So even if you close your web browser, you're still actively on the IRC service that you connected to. So that means, let's say if you're using your desktop or your laptop at work, and then you're on your bus on your way home, then you can just open up your cell phone and you can continue the conversations and you can see and read messages on your cell phone. And so they are, it doesn't matter where you open up your browser, you are always connected to the same server.

09:33 Marcus Ramberg
Yeah, and if someone mentions you while you're disconnected, you instantly see, there's like a red flag in the corner there, it's like 300 messages.

09:40 Gabor Szabo
Okay, do people, how do other people see you? So when you're not connected to the server, but the server is still connected to the IRC channel, do they...? They can't see you?

09:55 Jan Henning Thorsen
No, just see you as if you're online.

09:58 Marcus Ramberg
Same as if you're on screen.

10:00 Gabor Szabo
Okay, so that's...you started to build, or started together? How did you start to build? Who started it?

10:10 Jan Henning Thorsen
Marcus started out and then we, after a month or something, I joined in. And then we just met regularly and we hacked. We were using GitHub so we could contribute and collaborate that way.

10:27 Marcus Ramberg
I'm a big fan of the GitHub workflow. We were using GitHub to track new ideas, and you can see what Jan Henning has been doing for the interface and stuff like that. So it makes it really easy to collaborate.

10:40 Gabor Szabo
Okay, so if someone doesn't use IRC or... how can you describe this feature or the software and IRC together, so...?

10:54 Jan Henning Thorsen
One of the focuses that we are having is we don't want the user to know that it's IRC, we just want it to be like a regular chat application. So for example, like Facebook Messenger or similar applications. They should feel the same way, so even though we're using IRC as a transport now, that's not really a limitation to the application. So let's say if you would like to have a Jabber back-end instead, you could build that instead, and you wouldn't know if you were on Jabber or IRC or whatever you're connected to.

11:42 Marcus Ramberg
Or even like, if you just want to use Convos as your internal chat, you could just have a loop back-end. And the only people using Convos. Basically it's a generic chat application but IRC's a transport that we've chosen, because we mostly use IRC.

11:58 Gabor Szabo
So if you...so okay, if there's a company that wants to have a chat application inside a company for its employees, can they use just Convos without having an IRC server there? Or do they still need an IRC server? How difficult would it be to set it up?

12:15 Jan Henning Thorsen
So I used to work at Telenor, where one of the biggest telecom company in Norway, where we used Convos internally. So the nice thing about Convos there was that I was able to connect and chat with people who have no idea about what IRC was. I just gave them an account to Convos and then we just used it as it would be Facebook Messenger, or any other messaging service.

12:49 Marcus Ramberg
But right now to use Convos you need to set up a simple IRC server on the backend. I eventually plan to get rid of that requirement, so that you can just spin-up a chatroom internally in the Convos application, without any IRC server, but really it's not very hard to install. It's just apt get install command to get IRC installed.

13:13 Jan Henning Thorsen
So you don't really have to connect to any global IRC server, so that was one of the requirements because some of the things we were discussing, we couldn't share with a public IRC server. So that's basically what Marcus was telling about now, is that we just installed IRC server on the RedHat, and then we installed Convos, and then we were up and running. So then we would have our own isolated chat application that were local to the company.

13:47 Gabor Szabo
So IRC recently released a new version and one of the big things was the easier way of installing it. I've never tried to install an IRC server, and I've never tried it, so I wondered, you say, installing an IRC server is just installing the relevant package in your Linux distribution?

14:09 Jan Henning Thorsen
Yeah, Red Hat or Debian or something like that, it's quite easy to get up and running.

14:16 Gabor Szabo
And then what do you need to install Convos?

14:19 Jan Henning Thorsen
There's...on our web page, which is Convos.by, there's an installation guide, which is just a one-liner. So I guess you shouldn't really pipe something into your shell but if you trust HTTPS, then you can run that one-liner and it will download Convos and install it.

14:46 Marcus Ramberg
Or you can just get the scrapes. I mean, it's very lightweight in its dependencies, so it's very quick to install. That was one of the things we wanted to get, the previous version was using Redis as a backend, so then you needed to install Redis and stuff like that. So we got rid of that requirement, now we can just use it just by...

15:03 Gabor Szabo
What are the building blocks of Convos?

15:08 Jan Henning Thorsen
So right now, we decided to go to a plain file backend. So that means you don't need any MySQL or Redis or PostGRES or anything, you can just run the one-liner and then you have Convos up and running. And then you can start connecting to global IRC servers, so the only reason you would need to install your own IRC server would be if you need to exchange data that you don't want to...

15:37 Marcus Ramberg
Well, if you need a company chat, basically.

15:41 Jan Henning Thorsen
So Convos is built on the Perl Toolchain but it's...the installer script is custom-made for Convos to make it super simple to install. And that's one of the things that I think is really cool, is that people are joining our Convos help chat and then they're, Oh how do I install this? And I'm just pointing them to the installation guide and then they're Oh man, I just installed it and it was so simple! So you don't need any knowledge of the Perl Toolchain yourself, so you don't need to know how to use CPAN or cpanminus or any of that, you can just download Convos and then it will bootstrap itself.

16:34 Gabor Szabo
Okay, that's good, probably for most of the people who are not using Perl. And probably also for people who are using Perl, because easy installation is always good. So who is using your project?

16:50 Jan Henning Thorsen
We would love to know.

16:53 Marcus Ramberg
We see the people who come and get support but you know the silence of open source people. You put it on internet and you don't really know who is using it, right? We know that some companies have it but...

17:04 Gabor Szabo
Have you received any outside contributions? Are you two the team? Or are there more people in the team, building it?

17:11 Jan Henning Thorsen
So it's basically me and Marcus, discussing the design and then Joel, like you mentioned earlier, from the Mojolicious core team, he's also done some stuff and then we had a hackathon, I think it was in June, where we had two other people who were contributing and writing unit tests and implementing free text search and stuff like that. So that was really cool.

17:43 Marcus Ramberg
And we get issues and we get people contributing ideas and stuff like that. And we have some pull requests as well, so basically anyone's free to open up a request and contribute.

17:55 Gabor Szabo
Do you know any other projects that provide similar service or features?

18:03 Jan Henning Thorsen
There are a lot of different projects that have the same kind of functionality but a lot of them are online so you can't really...so let's say if you see it from a user experience perspective, then there's a lot of contributing, or sorry not, a lot of competing products but our product is...

18:33 Marcus Ramberg
There's not as many like cell phone products like this. There is one or two Node-based projects that we're competing with and that makes sense I guess. Node is, just like Mojolicious, an async run-loop so it's a good platform to build the same kind of thing. For us it was more obvious to use Perl or course, because we know it very well and we're very happy with it.

18:58 Jan Henning Thorsen
But to mention some, there's Slack and IRC Cloud and you have Shout and MIbbit and there's like...yeah, all of those are hosted. But there's probably at least 20 other projects and maybe 15 of them is written in Node, I guess.

19:18 Gabor Szabo
Okay, so the... I guess if I wanted to use something like this, I would probably look for something which is hosted? So I wouldn't want to set up my own..if I was using for my personal use and I wanted to access all kind of public IRC channels, then I would probably not want to run my own, if possible, I would rather run...

19:47 Marcus Ramberg
Why would you trust a random service on the internet with your private data?

19:55 Gabor Szabo
If I'm only talking on a public IRC channel?

19:58 Marcus Ramberg
Well, you have private messages as well on an IRC server.

20:02 Gabor Szabo
Okay, that's true.

20:04 Marcus Ramberg
One of the problems for me, for instance with IRCCloud, some of the business models are prohibited. Like you can get started very cheaply but then if you want to be connected to more IRC servers, they want to have a lot more money per month. So you end up with a lot of running costs to pay for this thing, right? For instance, a lot of companies are using Slack now, which is fine for free, but then if you want to have your whole history, like you can on Convos, right now you can go back and search in all of the history you chatted, then you have to start paying and for a medium-sized company, that can be hundreds of dollars per month. Just to have a company chat.

20:43 Gabor Szabo
Yeah, definitely. So the company chat, for a company chat I would definitely want to have my own everything.

20:50 Marcus Ramberg
IRCCloud, I think I was looking, because they were limiting it by the number of IRC servers that you could connect to. And I want to be on freenode, or MagNET, or something, and then suddenly the price is running up, like 40 - 50 dollars a month, just for a personal account. For that, I can buy a hosted servers and not just run Convos but run several different things there. Right? So.. customize it or improve it, the way you want.

21:18 Jan Henning Thorsen
But I can see from, let's say you have no experience with CLI or you don't know how to use Linux or anything, then of course it would be difficult to install Convos but that's one of the things we want to do, hopefully in the beginning of next year, is to write a...I forgot what it's called...but in Ubuntu now, you have these self-contained packages instead of using ordinary Debian packages, so then I would like to make one of those, sorry, I can't remember what it's called, but anyway so you could actually download it and then you can install it as easy as you would install XChat or any of the other desktop clients.

22:12 Marcus Ramberg
Even though it's been looking up the solution because I have this set-up for building images of prepared applications. Link pages is five dollars a month to get your server with Convos and then one click and it's installed and then you have a server in the cloud, which you can reach from anywhere.

22:32 Jan Henning Thorsen
And then you wouldn't have any limitations like you would have with hosted services. So that's probably why I would use Convos instead of just going to a hosted service.

22:44 Gabor Szabo
So basically for five dollars a month, you would get unlimited connections? And unlimited users?

22:52 Marcus Ramberg
You have your own server and then you're just limited by the storage of the servers, which is like 40GB or something.

22:57 Jan Henning Thorsen
So you could have a lot of chat history.

23:00 Gabor Szabo
So do you have any business plans with this project?

23:04 Jan Henning Thorsen
We were considering it earlier but now we have just been too busy to...like if you were to go into a business, then you would have a business strategy and then you would have, you would need some kind of support plan, and there's a lot of stuff that...so we kind of abandoned that idea. But one of the cool things about Convos is that it's under the MIT license so that means that if anyone else would like to run a business on top of Convos, then they could actually do that.

23:35 Marcus Ramberg
We are very open to that idea, if someone wants...

23:37 Jan Henning Thorsen
Yeah, I mean that would be awesome, if someone else would...so for example, let's say if you want to make your own hosted Convos server, where people pay you for having their account there, then you're free to do that. There's no limitations on what you can do with our software.

24:00 Gabor Szabo
Who would be your dream customers, or dream users, not customers, because you're not a business?

24:07 Jan Henning Thorsen
One of the things that I would just love if people told us that they were using the software. I mean there's one of the things that I like the most, when I make an open source project, no matter if it's just a library or it's Convos or it's some other application, then one of the things that fuels me to make the application even better, and of course, fix bugs and all the other stuff, is just knowing that people use it. So if they just drop us an email or something and just tell us, Yeah, we're using it, then it would be really cool even though if it's just one person somewhere or if it's a big company.

24:49 Marcus Ramberg
And if they fail to use it, we want to hear about why as well.

24:51 Jan Henning Thorsen

24:52 Marcus Ramberg
So we can make sure that they don't fail any more.

24:54 Jan Henning Thorsen

24:55 Gabor Szabo
Actually, regarding that. If someone wants to start using Convos, they can go and download, go to the website Convos.by and download it and install it and start using it. But if they need help, where can they go to get help?

25:14 Jan Henning Thorsen
So there's a lot of options for getting help as well and you can also see that on the Convos.by web page. But you can contact us on Twitter, or you can send us an email, or you can open an issue on GitHub, or you can join the Convos channel on chat.freenode.net.

25:34 Marcus Ramberg
Or you can just go into our demo application, there's a demo that you can use online if you want to look at it before you try to install it. And we'll be online there and eventually will answer you. Maybe not 24/7 because we're both in the same timezone and have to sleep sometimes.

25:53 Jan Henning Thorsen
But there are people dropping in, maybe not everyday, but there are questions dropping in on the chat.freenode.net all the time so...

26:05 Gabor Szabo
So is the channel, the Convos channel, on the demo server, is it connected to the Convos channel on the public IRC server?

26:17 Jan Henning Thorsen
No, we had some issues, because a lot of the IRC servers, like the public IRC servers, they have limitations on number of connections.

26:29 Marcus Ramberg
Per IP.

26:29 Jan Henning Thorsen
Yeah, per IP. So that means that in the beginning we were running, you could connect to whatever you wanted but then we got banned from a lot of the networks so we had some bad publicity in the beginning.

26:46 Marcus Ramberg
That's why we restricted the demo, to just local IRC server.

26:51 Gabor Szabo
Okay, so people were using the demo, and then that triggered a lot of connections, if I understand it right?

26:56 Jan Henning Thorsen
Yeah, but now the demo is locked, so you can't connect to ... you can only connect to one server that we are running. So we are running our own IRC server, where we are also connected to. So that means that if someone asks us questions in the demo channel then we will answer there as well.

27:17 Marcus Ramberg
Yeah, because of course, you can be in more than one server with the full-fledged Convos. It's just the demo that's locked, the Convos that we are using, you can connect to several IRC servers and get all the channels listed.

27:31 Jan Henning Thorsen
Yeah. So we can talk a little bit about the features, which is what we just said, that you can be connected to as many IRC networks as you like. And of course, you have private conversations and then you also have chatrooms. That's the basic stuff with IRC. For people who are used to other internal chat applications at their work, then one of the big benefits of using Convos is that you actually have the chatrooms. Because then a lot of people can share ideas and discuss stuff. That's basic knowledge for anyone who's been using IRC but for people who are just using chat applications, then it's mostly private messages instead of having collaborative chatrooms.

28:33 Gabor Szabo
Okay, and does the server automatically record history of the channel?

28:38 Jan Henning Thorsen
Yes. So you have unlimited scrollback and we're also implemented search in the backend but we haven't exposed that feature in the frontend yet. But that will also be unlimited, like you can search back whatever you like.

28:59 Marcus Ramberg
I think one of my favorite features is the link embedding. So if someone shares a link to you, for instance, to do it automatically, we embed it into the chat or like GitHub Gists, you can see a preview of the Gists that someone pastes in the chat. So it makes the experience more rich. We also have emoji support now, which is obligatory for a modern application of course, so that you can have smiling cats with teary eyes or whatever.

29:26 Jan Henning Thorsen

29:27 Gabor Szabo
Okay, guys we're running out of time. Actually we've over the regular time limit, but that's okay because it was interesting to talk about this. So I would really like to thank you for coming on the show. I hope to...maybe I'll have to try IRC again through Convos, and I'll see if maybe I can handle it and maybe I'll see you there.

29:54 Marcus Ramberg
That would be great.

29:54 Jan Henning Thorsen
Let us know if you have any problems installing Convos.

29:58 Gabor Szabo
Okay, thank you. Bye bye.

30:00 Marcus Ramberg

30:01 Jan Henning Thorsen