Planet Jabber

March 06, 2015

ProcessOne

Ejabberd available as a buildroot package

Johan Oudinet contributed a new ejabberd package in buildroot
sponsored by Green Communications.

Buildroot can generate any or all of a cross-compilation toolchain, a root filesystem, a kernel image and a boot loader image. The generated root filesystem contains a libc (uClibc, glib, eglibc or musl), busybox and some extra packages. Now buildroot allows to include Erlang and ejabberd in the generated root filesystem.

This makes very easy to build a custom and robust xmpp server for your embedded hardware, router or appliance, as buildroot is designed with simplicity in mind.

by Christophe Romain at March 06, 2015 08:05

March 04, 2015

ProcessOne

ejabberd and the Google Summer of Code 2015

ejabberd project and developers are involved as mentors in Google Summer of Code 2015 initiative. This article explains what it could mean for you as a student wanting to contribute to our project.

What is Google Summer of Code ?

Google Summer of Code (GSoC) is an annual program in which Google awards stipends (US$5,500) to all students who successfully complete a requested free and open-source software coding project during the summer.

We have been contributing ideas and will be helping students enrolled in two distinct mentoring organisations:

Students are free to get involved in suggested ideas, but can also propose new project ideas on their own.

Why get involved in GSoC, working on ejabberd ?

For a student, GSoC is a great opportunity to learn new skills, learn to work with a team of experienced developers, help open source projects and get a fair compensation.

ejabberd is one of the most used XMPP server in the world, deployed on huge scale deployments in large corporations. This is a unique chance to get your code running for tens of millions users and have a real impact with your code.

The suggested ideas should be quite interesting and challenging but still manageable to be completed during the summer. Of course, we are open to your own suggestions.

Here are a few of the idea we have put together, in no particular order:

So, what is the process ?

You will need to submit a proposal on GSoC website, for either XSF or Beam Community. Students should pick their projects and submit proposals from 16th to 27th March. Do not be afraid, you are not alone and, as experienced mentors, we are here to help. You can get in touch with our team (On XMPP groupchat, of course), in the chat room ejabberd@conference.process-one.net.

Please, make sure that you are eligible before investing time on the project. Details are available on Google Summer of Code 2015 Student Participant Agreement.

All the ejabberd community is looking forward working with you !

by Mickaël Rémond at March 04, 2015 11:18

March 03, 2015

The XMPP Standards Foundation

XMPP in Google Summer of Code 2015

We’ve just had the great news that Google have again accepted the XSF to mentor XMPP-related projects in the Google Summer of Code this year. GSoC is a programme whereby Google pays students a stipend to work on open source projects for the summer, and when we’re able to participate in this it’s a highlight of the year for us. If you are, or know any, talented students with an interest in realtime communication systems we’ve got a selection of interesting projects at http://wiki.xmpp.org/web/Summer_of_Code_2015. Our page on the GSoC site is at https://www.google-melange.com/gsoc/org2/google/gsoc2015/xmpp, and for more information on GSoC in general please see the Google site at https://www.google-melange.com/gsoc/homepage/google/gsoc2015. Student applications open on March 16th but that’s no reason to delay – come and chat with us about our possible projects with the contact venues listed on http://wiki.xmpp.org/web/Summer_of_Code_2015.

We’ve got the ideas, we’ve got the mentors, all we need are a few students to turn this into a great summer for XMPP.

by Kev at March 03, 2015 11:28

ProcessOne

Radio, News and Sport notifications on a huge scale at the BBC

Mickaël Rémond explains how the BBC have been using large scale push notification service Boxcar to distribute radio content, breaking news and sport football alerts on a huge scale.

Thanks to BBC News and Sport teams for providing many of the slides and other material.

by Mickaël Rémond at March 03, 2015 10:39

buddycloud

Setting up Your "Office Stack"

Open Source Principles versus Getting Things Done

Imagine you are starting a new company: you have a team in-house and around others scattered around the world.

I set up the tools for another company 6 years ago.  And was doing it again recently for Buddycloud. And how times have changed.

In light of recent spying events, code developed in a transparent manner (usually open source) is increasingly important. Being free both in dollar terms and in time spent talking to a sales team is also a huge win. But setting up and managing an open source office stack can quickly become a time-sink.

Here’s a quick retrospective to how we used to (about 6 years ago) set up team collaboration. And how we’ve done it today at Buddycloud HQ.

Source Code and Issue Tracking

Then: Apache+SVN+LDAP+WebSVN+Trac

Details are sketchy, but I remember the pain level was high. “Back in the day” one rolled with  subversion <shudder if you will>, fronted by Apache and some kind of LDAP authentication. That got you source control.

For bonus points and to view your code, you’d install WebSVN. Oh, dark days! Of course, you’d want to track bugs: Trac was the go-to tool for this. And came with a whole new set of dependencies. These were all cutting edge back then.

Now: 

image

Let’s be clear - we weren’t going near SVN for source code wrangling. All of the Buddycloud repositories are based on GitHub. It’s hard to remember the pre-GitHub existence. As one of the best platforms to share code, GitHub offers us the chance to share all of our projects online, forming a straightforward flow to collaborate together in solving issues, commenting proposals and improving the code of our projects. And there’s no need to configure apache virtual hosts or buy SSL certificates for svn.example.com.

Currently, we have nearly 40 repositories. And almost zero admin overhead.

Team Organisation

Then: Hire a project manager

Just a few years ago one would hire full-time cat-herders^WW project managers to look after a product team. Their task was to help the team answer “what should I do next?”, “what’s the big picture?”, “what are my colleague working on?”

To answer these questions would take lots of meetings. Some of the worldwide team would be waking up early to jump on team calls. And some would be staying up late to synchronise plans. Add in meetings digging into deep-hack-mode time and you quickly have a non-developer friendly environment.

Now:

image

Trello tasks are added to different topic boards, you tag your work colleagues to them, set up due dates so you get reminded when you have to get your tasks finished and get notifications according to your interests, amongst many other features.

There’s 101 organisation tools out there: We use Trello because of its simple, but effective approach as an agile task tracking/planning tool [and it’s free].

I also highly recommend using Trello on your phone to get into a GTD-type workflow and free up your mind: quickly capture thoughts and tasks for when you are back at your desk.

Email, Calendaring and Documents

Then: roll it yourself: Postfix, Cyrus, Amavisd, OpenOffice and trying new open-source calendaring apps every week.

There was a day when setting up an office involved: Order server from Dell, Install Linux, Setup Postfix, hope you weren’t on a DNSBL, configure something else in /etc that you kinda understood but could never be totally sure about, tweak, configure some more.

And then you’d wonder when there was going to be a good calendering solution released as open source. And be sorely reminded that the solution was called Exchange. Then you’d hope you could get by without calendaring.

Now:

image

We like open source: the Buddycloud stack is all released as open source. But we’re also keen to spend our time on adding value to Buddycloud. Not tweaking spam-rules. Or looking at Exchange CAL costs. So we switched over to Google Apps: Gmail for email. Calendar for planning our meetings and organizing our schedules. Drive for storing and sharing files amongst the team. Hangouts to communicate with far away team members or developers of our community.

We’d rather be using open source. But we’d rather-more be spending our time on shipping Buddycloud code.

(BTW: We started having a Hangout Buddycloud’s Developer Call every Tuesday at 2:30pm GMT+1. This is aimed at bringing other Buddycloud developers and integrators together to share and get help from the dev-team and each other.)

Mailing Lists

There are two uses for mailing lists:

  • discussions: we do a lot of consensus building on buddycloud-dev. A good mailing list helps us work through an issue knowing that the solution is well crafted.
  • announcements: [strangely] a bunch of people seem to still want to get news updates through email. And we are not going to judge them for that.

Then: Mailman + Postfix

Over the years, mailman was the way to power mailing lists. It’s good software. But installing Mailman involved debugging messages like “Premature end of script headers” or “Mailman CGI error!!!” And things always felt fragile. I’d tip-toe around our email stack with the through “perhaps I’ll hold off upgrading Postfix incase Mailman stops working”.

I’d have paid for a branded-hosted solution. It would have been nice to have someone else looking after this for us.

Now:

image

To solve the discussion list problem - we used Google Groups. Our asynchronous communication means we can work without interruption. Developers can also sign-up on a modern web page. And others can just chip in their 2c through the website without needing to join a mailing list. Yes, I feel like a sell-out to the pure open source solution. Yes, I enjoy my free time. As I age I value the latter more.

image

And for announcements-only lists, MailChimp helps us manage lists of users, Buddycloud-integrators and fans. And shoots off emails to them with updates. List is here if you are interested in a more read-only relationship.

Social Media

Then: We’d go down to the pub or beer garden and tell our friends what we were building. They’d tell their friends and the physical “social graph” would relay the message. Or we’d make a post on Slashdot.

Now:

image

Everyone has their own flavour of social network. Buffer spools up announcements and pushes them out to each network. Right now, one Buffer post = a post on Twitter, Facebook, LinkedIn and Google+. And it gives us metrics on reach that keep Mizar in Marketing happy.


A lot has changed in just 5 years: complexity has increased and we’re pushed towards solutions that wrap up the complexity in hosted offerings. Us developers and open source advocates like our principles. And tinkering with new software is a great procrastination technique.

But we also like hosted solutions that let get on with tasks further up the stack.

BTW, Buddycloud builds a hosted messaging stack. Build on open source. Released as open source. And you can install it yourself and tinker with settings. Or just use our hosted option and do something else with your free time.

What are you using for your “office stack”?

by mizarf at March 03, 2015 08:55

March 02, 2015

The XMPP Standards Foundation

No, it’s not the end of XMPP for Google Talk

There’s some recent discussion about the sky falling for XMPP at Google. See this blog post by Dan York for example.

In reality, we don’t know the state of XMPP inside Google because they don’t share their use of XMPP with the XSF. We do know Android’s Google Cloud Messaging uses it. We know Hangouts Videochat uses it. We know Google Talk still (insecurely) federates with (some) XMPP services. But from an outside perspective, Google has made no major recent changes in terms of how they’re using XMPP from what we can observe.

So what happened?

The Google Talk app for Windows has been deprecated as of February 23, 2015 as explained by the product manager. Google announced a while ago they intended to do this, but it comes as little surprise given the client has not seen much development in this decade.

Instead of Google Talk, Hangouts is promoted. Hangouts does not interoperate with federated XMPP clients. Users appear as visible, but messages from federated contacts are lost, which is a very confusing user experience.

The XSF still believes in the principle of client choice, best explained by Google on their developer pages:

We believe users should have choice in which clients they use to connect to the Google Talk service and we want to encourage the developer community to create new and innovative applications that leverage our service. To enable this, Google Talk uses the standard XMPP protocol for authentication, presence, and messaging.

Note that you can still continue to use the Google Talk Service with a third party XMPP client and the Google Talk XMPP servers continue to federate with other domains.
This is called “service choice”. The principle is, again, best explained by Google:

Service choice is something you have with email and, for the most part, with your regular phone service today. This means that regardless of whom you choose as your email service provider (Gmail, Hotmail, Yahoo! Mail, your school or ISP, etc), you can email anyone who is using another service provider. The same applies to phone service. You can call someone even if they do not use the same phone company as you do. This allows you to choose your service provider based on other more important factors, such as features, quality of service, and price, while still being able to talk to anyone you want.

However, since the Google Talk Service does not support server-to-server encryption via TLS (something that was required by RFC 3920 in 2004), a number of servers (including jabber.org) refuse to establish a connection since May 2014.

We’d love to see Google embrace secure messaging for federated messaging. But aside from this long-standing issue, XMPP is alive and kicking at Google.

by fippo at March 02, 2015 17:45

An introduction to xmppresearch.org

At the recent Summit 17, we were very happy to welcome Dominik Renzel and István Koren from the recently launched site xmppresearch.org. The declared mission of the project is to:

“collect and to present scientific research work based on XMPP”

The site, which is a collaboration between RWTH Aachen University and Technische Universität Dresden, contains articles on recent XMPP-related research, demos and a comprehensive bibliography. They’ve recently blogged about their experiences at Summit 17.

We’re looking at ways of more formally linking this excellent site to the XSF’s own online efforts. In the meantime I’m sure they would welcome you contacting them with any relevant XMPP research you are aware of so it can be included on their site.

by willsheward at March 02, 2015 17:14

February 27, 2015

ProcessOne

ejabberd new documentation site, a community effort

A massive documentation effort

It is well know that every developer in the world love writing docs :)

Well, I am kidding, but still our goal is to have the most comprehensive and beautiful documentation possible for a project. Given the extremely powerful and numerous ejabberd features and the extensive scope of XMPP, I guess you all understand the challenge.

But, we can as a community be up to the tasks. We have bootstrapped a huge documentation effort for ejabberd, but we hope it will also serve as a good reference to learn XMPP.
To be frank, the work we have started here would hardly fit into a full size book, but we will get there.

As to the goal of producing a beautiful documentation, this is already done and we hope you will all like what we achieve on the ejabberd documentation site design.

Screenshot 2015-02-26 16.42.36

What’s next ?

We already had very good documentation, but it was both included in massive, intimidating documentation or hard to find.

We have started adding documentation we had on various places on a single documentation site: docs.ejabberd.im. Once this is finished, we will keep on writing new content based on frequent questions we get on mailing list and forums. However, we plan to reorganise it and split it in smaller chunks to make it easier to ingest. I especially think about the extremely complete, but also extremely long, ejabberd Installation and Operation Guide.

The good news is that you can now fork the documentation site and join the effort. It is available on Github: processone/docs.ejabberd.im

Do not hesitate to submit PR to fix typo or improve the wording. There is no small contribution and that’s a great way to join the ejabberd community.

by Mickaël Rémond at February 27, 2015 17:42

Alexander Gnauck

MatriX v2 pre release

The first version of MatriX was released in February 2009. Now 6 years later we announce MatriX v2 pre release.

Over the last six years we released all new features and improvements always immediately to our customers, without making major changes in the version number. There have never been any breaking changes.

MatriX v2 has many major improvements in the core, but we also have done some minor changes in the Api. Most of the Api changes are related to Enum names only. Many of them were never compatible with the c# naming conventions.

They have been there because some of the supported .NET platforms were not able to parse the values case-insensitive, and there were no other ways to do this without using endless IF or SWITCH statements on all platforms.
Also some of the code is still left from the very first .NET version of our XMPP components in 2002, using .NET 1.0 and C# 1.0. In the very early days of c# many people were using Java, C or C++ conventions for the new c# language.

public enum MessageType
{  
    Normal,   
    Error,
    Chat,
    GroupChat,
    Headline
}

public enum MessageType
{
    normal,
    error,
    chat, 
    groupchat,
    headline
}

Updating even huge codebases to v2.0 should be very easy and take only some minutes.

With 2.0 we will also separate the NuGet packages by platform. This will allow us publishing NuGet packages much easier and more often. There is still lots of platform specific code in each MatriX edition which does not allow us to work on all of them in parallel.

Right now only builds for teh Full .NET Framework 3.5, 4.0 and 4.5 are available. All other platforms will be published in the next days.

Of course all MatriX licenses keys with Support&Maintenance are valid for v2 as well.

When you find any issues with the pre release please report them directly by Email to us, or use our forums.

by gnauck at February 27, 2015 14:57

February 25, 2015

Peter Saint-Andre

Long-Term Projects

People I interact with sometimes ask me how I accomplish so much. The last time I gave some thought to it, I wrote a blog post about My To-Don't List - all the things I don't spend time on.

February 25, 2015 00:00

Low Information Diet

Today I had to run an errand and happened to turn on the radio at the top of the hour, so both my favorite jazz station and an AM station I listen to occasionally for baseball games had the news on. Something was happening somewhere! A terrorist attack in the Middle East, political wrangling in the District of Columbia, and other horrors - essentially the same stuff I might have heard on the radio the last time I listened a few years ago.

February 25, 2015 00:00

February 24, 2015

ProcessOne

Revamped ejabberd website, new logo, new development process

We all agree that ejabberd.im website was a bit dated and did not do justice to the ejabberd code base.

It indeed deserved a major rework and that’s what we have started a while ago.

We have just rolled out a brand new fresh and modern ejabberd home page on http://www.ejabberd.im/.

Along with that design, we have a new ejabberd logo. The hedgehog is gone and you now have the bubble ‘e’ with the nice new ejabberd typography.

Screenshot 2015-02-24 14.34.17

We hope you will like it :)

This is just the tip of the iceberg. As you may have noticed, the whole process for developing the project itself went through a major rework. To ease collaboration with the community, we moved to Github issues. This was decided for the following reasons:

  • Almost all developers now already have a Github account. This save the hassle of created another account on another system.
  • It is integrated with Git workflow itself (i.e. you can close a ticket with a commit log)
  • It offers a single approach to process tickets and pull requests.

We are going to move the relevant tickets from the older ejabberd ticket system.

Do not hesitate to send your feedback. Star and fork ejabberd on Github, send us your pull request and let’s some great code done :)

by Mickaël Rémond at February 24, 2015 16:22

Swift Blog

Swift 3.0-beta1 Released

We’ve just released a Swift 3.0 beta. A fuller list of new features is available on the download page, but highlights include file transfer support, keyword highlighting, nuisance user blocking and seamless multi-person chats. We encourage everyone to get the new build and try it out, and tell us about any bugs they should come across as we work towards release candidates and a final release.

February 24, 2015 00:00

February 23, 2015

Tigase Blog

Tigase Server 7.0.0 Release

Tigase XMPP Server 7.0.0 has been released! This release includes many major additions, many more minor additions, and a few bug fixes. We're sure you will enjoy the software.

by eric at February 23, 2015 20:17

ProcessOne

How Realtime and Alerts Enhance the same day Hotel Booking Experience – SeaBeyond 2014 Video

Sébastien Houzé from VeryLastRoom gives an overview of their same-day hotel booking platform. He then explains how ProcessOne-Boxcar platform help them improve the relationship with the customer through in-app messaging.

by Mickaël Rémond at February 23, 2015 16:44

Paris ejabberd meetup: February, 25th

Paris ejabberd first meetup will take place on the 25th of February, at ProcessOne office in Paris.

You can register on the meetup on the following page: ejabberd Paris Meetup

Jérôme Sautret will give a quick introduction to ejabberd modules
development. Participants will introduce their work and use cases for ejabberd.

We hope to see you there !

Please, let us know if someone plan to organise an ejabberd meetup in
another city, we can see how we can help, with talks and goodies.

by Mickaël Rémond at February 23, 2015 16:39

Ignite Realtime Blog

(a)Smack 4.0.7 released

We just released (a)Smack 4.0.7. This is a bugfix only release.

 

It was found that the passed "hostname" argument to the configured HostnameVerifier in Smack 4.0 was server controllable, which could allow a malicious attacker to circumvention hostname verification. Hostname verification is disabled by default in Smack 4.0, but enabled by default in Smack 4.1. The faulty code was long ago removed in the Smack 4.1 branch, so most Smack 4.1 (pre-)releases are not affected.

 

As a reminder: The second release candidate of Smack 4.1 is available. Consider updating when possible, but please refer to the Smack 4.1 Readme and Upgrade Guide · igniterealtime/Smack Wiki · GitHub  first.

by Ignite Realtime Blog (igniterealtime@jiveon.com) at February 23, 2015 15:47

February 17, 2015

ProcessOne

ejabberd Community 15.02

ejabberd 15.02 is a major new release. We have added fixes as well as usual improvements.

However, ejabberd 15.02 is mostly a major improvement in the way we are handling our release cycle.
We are working with ejabberd community to expand and simplify the development of plugins. You can already find tens of plugins for ejabberd developed by the community. However, we want to make the development more accessible to developers. As such, we have introduced Elixir supports as a standard new language to develop for ejabberd and are working with Elixir community to make developing for ejabberd, much more simpler, while still retaining the power of Erlang.

As such, the major improvement in this release is Elixir language programming, with more features coming in the next month.

Please, read our blog post for details on why this is significant.

Here is the detailed changelog:

  • add Elixir support, allows to write plugins in Elixir
  • New command to reload configuration without restart
  • Support old style erlang expressions in YAML configuration
  • Improved captcha listener parsing when protocol not specified
  • Fix upgrade of old unbinarized pubsub table from 2.1
  • Minor updates in the documentation
  • Other bugfixes

As usual, the release is tagged in the Git source code repository on github

The source package and binary installers are available at ProcessOne

If you suspect you found a bug, search or fill a bug report on github

by Christophe Romain at February 17, 2015 16:54

February 16, 2015

The XMPP Standards Foundation

Thank you to new and returning XSF sponsors

We’d like to say a big “thank you” to two companies who have recently signed up as sponsors of the XMPP Standards Foundation.

Erlang Solutions are a new XSF sponsor who specialise in providing businesses with scalable solutions via the creation, integration, delivery and lifetime support of products and services based on the Erlang and Elixir programming languages.

ProcessOne, a returning sponsor, are a leading provider in messaging platforms designed for scale and robustness. ProcessOne have developed ejabberd, an ubiquitous XMPP server that has been deployed to power some of the largest messaging platform in the world. Many people will remember their CEO, Mickaël Rémond, as a member of the Board of the XSF for a number of years.

We were all very happy to see representatives from both Erlang Solutions and ProcessOne at the recent Summit 17 where they contributed greatly to discussions.

Thanks again to both of these great companies!

If you are interested in sponsoring the XSF, you can find more details on our sponsorship page.

by willsheward at February 16, 2015 16:43

Ignite Realtime Blog

Smack 4.1.0-rc1 released

The Ignite Realtime community is happy to announce the first release candidate of the upcoming Smack version 4.1. Smack is an open source XMPP client library written in Java with multi-runtime support. It can be used with Java SE and Android runtimes. If you haven't done already now is the ideal time to grab Smack 4.1.0-rc1 and try it out. A '4.1' branch has been created, that will track the further development of Smack 4.1. The API of Smack 4.1 is now officially stable and will not change in an incompatible way between further 4.1 releases.

 

Smack 4.1.0-rc1 is available via Maven Central.

by Ignite Realtime Blog (igniterealtime@jiveon.com) at February 16, 2015 15:56

Isode

M-Link XMPP/IRC Gateway


Two whitepapers on the Isode website (Interconnecting XMPP and IRC and Deploying IRC, Federated MUC and XMPP Guards) show how Isode’s M-Link XMPP Server can be connected to and used in conjunction with chat services using IRC (Internet Relay Chat) in a range of deployment scenarios.

In order to help our customers and evaluators configure M-Link to act as an XMPP Gateway we’ve published a short configuration note which explains how to connect M-Link XMPP Multi-User Chatrooms to IRC Channels.

You can download the note from the documentation page on the Isode website (here’s the direct link to the PDF).

by admin at February 16, 2015 15:49

February 13, 2015

Swift Blog

Keyword Highlighting Support

One of the interesting new features in the upcoming Swift 3.0 release is support for “keyword highlighting”. This allows users to setup Swift such that it’ll alert them to activity that matches their configured highlighting rules. This is particularly useful where a user wants to be alerted when particular discussion topics, or keywords, are mentioned in chatrooms (highlighting rules are configured independently for private chats and chatrooms) - e.g. a Swift developer might choose to have a highlight configured to alert them when the word “Swift” is mentioned in a chatroom they watch, or a military operator may be interested in keywords such as “MEDEVAC”. Highlights can either be configured to be visual (with foreground/background colour applicable per rule), or may be audible (either with the default sound, or user-provided sounds per-rule). Here a keyword highlight for “Swift” rendered with black text on a green background is shown, along with a blue-on-red highlight for “late”.

Highlighting 'swift' and 'late'

As well as per-keyword highlighting rules, messages from a particular user may be subject to highlighting, e.g. the following screenshot shows a highlight configured for the Queen of Hearts’s user (black on yellow).

Highlighting the Queen of Hearts

These features will be released with Swift 3.0, and can currently be configured by selecting “Edit Highlight Rules” from the general menu in Swift.

(This post describes a currently unreleased feature, so details may change slightly before release)

February 13, 2015 00:00

February 10, 2015

ProcessOne

ejabberd joins the Elixir revolution

ejabberd has always been a key project for Erlang.

When I talk to many of the developers that have learned Erlang in that past 10 years, they often thank us for ejabberd. “ejabberd is the main reason why I have learned Erlang”.

That said, Erlang is not for everyone. Some people hate the syntax and cannot overcome their relunctance to learn it.

We already made the life of ejabberd users easier by providing YAML syntax for configuration files. YAML format is quite well know and avoided the typical mistakes make by users when editing “Erlang
tuple-atoms-and-list” syntax file. So, YAML configuration files format was received as a relief by many users.

Today, we are getting further and are making Elixir language a first class citizen for ejabberd. You can now develop any module you want in ejabberd leveraging all ejabberd API using only Elixir language.

For those who already know about Elixir, I already hear the excitement that this new feature is generating. I know, I am extremely excited myself. This change is probably the most important change in the life of ejabberd and we are already working with Elixir developer to improve on this existing implementation and boost our development community by making ejabberd development more accessible.

In turn, we are hoping to do for Elixir, what ejabberd did for Erlang in terms of recognition. For those who do not know about Elixir: This is a clean, modern programming language, created by Jose Valim, supported by hundreds of enthousiastic developers. It is inspired by Ruby syntax, with all the benefit of Erlang VM, that is clustering, lightweight processes, robustness, fault tolerance, etc.

If you do not yet know Elixir, you now have the best reason of the world to learn it :)

ejabberd_elixir

How to get started

Here is how to start using Elixir in ejabberd today. The change are available in ejabberd master branch and will be integrated in next ejabberd official version.

Prerequisite

Install Erlang R17

git clone and build ejabberd with Elixir support

$ git clone git@github.com:processone/ejabberd.git
$ cd ejabberd
$ chmod +x autogen.sh
$ ./autogen.sh 
$ ./configure --prefix=$HOME/my-ejabberd --enable-elixir
$ make && make install

Your ejabberd is now Elixir-enabled:

$ cd $HOME/my-ejabberd/
$ ./sbin/ejabberdctl live

(ejabberd@localhost)1> m('Elixir.Enum'). 
Module 'Elixir.Enum' compiled: Date: January 24 2015, Time: 16.27
Compiler options:  [debug_info]
Object file: /Users/mremond/my-ejabberd/lib/ejabberd/ebin/Elixir.Enum.beam
...

ejabberdctl module has now extra options:
– iexlive: Start ejabberd and keep an Elixir command open
– iexdebug: Attach and Elixir console to an already running ejabberd

It means you can use ejabberd shell using Elixir interactive commands:

$ cd $HOME/my-ejabberd/
$ ./sbin/ejabberdctl iexlive
...
iex(ejabberd@localhost)1> IO.puts "Hi ejabberd + elixir"
Hi ejabberd + elixir
:ok
...
# Creating a user:
iex(ejabberd@localhost)3> :ejabberd_auth.try_register("test2", "localhost", "mypass")
{:atomic, :ok}

Welcome to the revolution !

Writing ejabberd plugins in Elixir

You can now write plugins in Elixir and register hooks to expand ejabberd features in Elixir.

ejabberd lib directory is the place where you put your Elixir file so that the build chain knows how to compile them.

In ejabberd lib/ directory, add the file mod_presence_demo.ex:

defmodule ModPresenceDemo do
  @behaviour :gen_mod

  def start(_host, _opts) do
    :ok
  end

  def stop(_host) do
    :ok
  end
end

This is the smallest possible ejabberd module. We ignore the host and
the options for now.

When you type make your module should build properly.

When doing make install, it should install properly the newly created
module.

You can now use it in ejabberd configuration file ejabberd.yml. Just
add this line in the module section:

modules:
...
  ModPresenceDemo: {}

As you see, you can directly use the Elixir module name. ejabberd can
detect this is an Elixir module and use it appropriately.

Let’s expand a bit on this module:

defmodule ModPresenceDemo do
  import Ejabberd.Logger # this allow using info, error, etc for logging
  @behaviour :gen_mod

  def start(host, _opts) do
    info('Starting ejabberd module Presence Demo')
    Ejabberd.Hooks.add(:set_presence_hook, host, __ENV__.module, :on_presence, 50)
    :ok
  end

  def stop(host) do
    info('Stopping ejabberd module Presence Demo')
    Ejabberd.Hooks.delete(:set_presence_hook, host, __ENV__.module, :on_presence, 50)
    :ok
  end

  def on_presence(user, _server, _resource, _packet) do
    info('Receive presence for #{user}')
    :none
  end 
end

When you launch ejabberd with that new module, you should see the following line in the log file (or console if running live):

15:17:58.913 [info] Starting ejabberd module Presence Demo test

And anytime an XMPP client changes its presence, you should see the following in the log file:

15:30:01.266 [info] Receive presence for test

We are in the process of revamping our developer documentation to help both Erlang and Elixir developer get up to speed on ejabberd module development. You can expect follow up articles how how to get further
developing ejabberd with the power of Elixir.

In the meantime, all the ejabberd community is very glad to help get your started with ejabberd development using Elixir.

Please, join ejabberd mailing list or join the ejabberd chat room on XMPP (ejabberd@conference.jabber.ru)

We are all eager to see what great ejabberd extension you are going to build with Elixir.

by Mickaël Rémond at February 10, 2015 17:14

February 09, 2015

ProcessOne

Using ejabberd as a customer messaging tool at Mila – SeaBeyond 2014 Video

Michael Weibel explains at SeaBeyond conference how Mila enabled their online platform for professionals with realtime messaging features with ejabberd.

by Mickaël Rémond at February 09, 2015 16:09

ProcessOne ejabberd and Boxcar roadmap – SeaBeyond 2014 Video

Mickaël Rémond presents ProcessOne past product development and explains how it fits into a consistent long term vision about ejabberd, XMPP, push, mobile and realtime messaging in general.

For ejabberd, focus is on two areas:
– ejabberd Community continuous improvements and accelerating the collaboration with existing communities.
– ejabberd SaaS turn key solution for robust, possibly massive scale, cost effective, no hassle deployments.

For Boxcar, we will be focusing on developers, offering new services relating to push and bridging with our XMPP / ejabberd skills and toolset:
– Widgets and watches support
– Analytics
– Ability to chat from a push notification

Here is the full ProcessOne roadmap talk, putting our development effort into perspective:

Enjoy !

by Mickaël Rémond at February 09, 2015 15:56