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.
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.
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
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.
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.
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
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.
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:
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.
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.
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.
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”?
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.
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.
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.
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.
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.
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.
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.
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:
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 :)
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.
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.
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.
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.
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:
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
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.
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.
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.
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”.
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).
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)