Kamailio Advanced Training
Click here for more details!

Learn how to build RTC services with Kamailio!

Tuesday, June 28, 2011

Maketing - interaction between developers

[This is part of Maketing blog posts series]

The most important asset for an open source project is without doubt its team of developers. While in a company the monthly income may define the level of loyalty, in open source is about passion in most of the cases.

As a leader of the project, it is critical to find the way to keep the developers motivated and inside the project for long time. There will be many coming in and many going out quickly, if you don't succeed to create a loyal core team which stays in for several good year, you are lost.

At some point, when the project is big, you cannot care about it alone. Physically, you will not be able to handle alone the management, development, advertising and community interaction. Remember that you have also a private life. Therefore you need experienced people to help others coming on board.

How to get new developers? Be open enough. Open enough means not to be very restrictive and not very open. Being very restrictive in accepting contributions induce the false impression that the high quality is protected. Well, indeed, no line of code means no bug as well as nothing to use. On the other hand, accepting everything tha is submitted it is going to create a jungle.

Finding the right solution is a matter of the application. In Kamailio/SER, the design allowed to split in components which are very independent in influencing the quality of the others. Core and main modules are been exigently taken care. New ideas and young code can be very easy just added as independent module, which, if not used has no impact to your running instance.

This modularity solves another potential issue with developers: coding conflicts. One problem may have many solutions, some developers can have different opinions about what is the best one. That is good, allow them to contribute separate modules and users will have the liberty to choose the one they like more.

What about keeping the developers loyal and passionate about the project? First, bring the developers to be part of project's evolution. Involve them in discussions beyond writing code: planning, management, new releases or events a.s.o., everyone will fill safer if they know what is going to happen.

Be aware of language barriers and mentalities. Everyone thinks in mother tongue, writing the thoughts in English may look odd or impolite sometimes. Try to understand beyond words, contact the person privately and figure out more details before judging to sentence.

Don't forget that human interaction make relations stronger. Whenever you have a chance to meet in person a developer, don't hesitate to go out for a drink. An open source project is an social entity.

When you are still leading the project and the other developers (which are not paid by you) contribute substantially more than you to project, then you are succeeded to set the development on the right track and have a self-sustainable evolution.

Tuesday, June 21, 2011

Ukulele Kamailio Jingle

Javi Beltran, an open source musician and good friend of Kamailio SIP Server project, recorded a short composition for Kamailio playing Ukulele (Hawaiian instrument, aka Ukelele).

You can listen or download the jingle from:

Feel free to use the jingle as you wish in relation with Kamailio project. You can see more of Javi’s open sourced compositions on his web page.

Tuesday, June 14, 2011

10yearsSER - the 15000th commit

In the year celebrating 10th anniversary of SIP Express Router (aka SER) project (from where Kamailio (former OpenSER) forked in 2005 and merged back in 2008), the development branch encountered the 15000th commit in GIT repository.

It was done by the same developer that started the project and committed the 1st one, Andrei Pelinescu-Onciul:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --reverse | head -1

512dcd9 Andrei Pelinescu-Onciul Mon Sep 3 21:27:11 2001 +0000 Initial revision
The 15000th one is:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --reverse | head -15000 | tail -1

8a90dd3 Andrei Pelinescu-Onciul Sat Jun 11 11:24:05 2011 +0200 core: remove unused variables + coding style
This number of commits is counted only for development branch (GIT master), thus it does not take in consideration the branches of stable releases. That will make the number of commits in the project far more higher, but the target was to show only the main stream development evolution, not the fixes in stable branches.

Note that there are personal developer branches holding code commits done in the past and to be merged in GIT master branch in the near future, so the number 15000th commit may be different when checking again later. However, as a marker in the history of the project, Andrei's commit is the first in master branch to hit the 15000. The link to the commit via web GIT viewer is here.
You can also check the history of SER/Kamailio commits tracked by Ohloh here.

Be ready to party with us in September at the 10th project anniversary and watch us for the 20 000th commit!

Wednesday, June 8, 2011

Run your own SIP VoIP service on both IPv4 and IPv6


Today is World IPv6 Day - since Kamailio SIP server has support for IPv6 since 2002, I thought to contribute to today's celebration showing how to use it to provide a SIP-based VoIP service on both IPv4 and IPv6 networks, also bridging between them, with the same SIP server instance. Following VoIP communication scenarios are possible:
  • call from IPv4 to IPv4
  • call from IPv6 to IPv6
  • call from IPv4 to IPv6
  • call from IPv6 to IPv4
I used Jitsi SIP softphone to make the calls, Kamailio development version for SIP server and RTPProxy to help bridging the media streams between IPv4 and IPv6.

The How-To do it tutorial is available on the wiki at:
Happy IPv6 Day Everyone!!!

Tuesday, June 7, 2011

A look at SIP:Provider CE v2.2

SIP:Provider Community Edition (SPCE) has recently released the version 2.2. The out-of-the-box VoIP service operating platform added in this version a lot of interesting new stuff.

First is about the upgrade of the operating system to Debian Squeeze. Also Kamailio SIP Server and SIP Express Media Server (SEMS) are integrated with their latest stable branches.

From this point of view, having the latest Kamailio opens the doors to add by yourself any of its features in version 3.1.x directly in the configuration file, such as SIP/SIMPLE presence or secure communication over TLS.

In terms of architecture, the platform was re-sketched from grounds. It runs an instance of Kamailio to guard the other SIP applications, namely the SIP registrar and proxy (another Kamailio instance), the voicemail server (Asterisk) and the back-to-back user agent (SEMS). Besides the role of entry and exit point in the platform, the first instance of Kamailio acts as a load balancer, meaning, for example, that you can add new SIP proxy/registrar servers as you need.

Talking about security, only the Kamailio load balancer is running on public IP, all the rests can run on an internal one, for example 127.0.0.1, making impossible to be accessed from outside, avoiding DoS attacks on them. The load balancer is not using any SQL database, thus is able to absorb impressive amount of SIP traffic, being easy to deal with any kind of attacks. In addition, all the calls are routed through SEMS for SIP signaling topology hiding, protecting the coordinates of core components and the end points.

Caring about security had high priority in this SPCE release, besides those listed above, there are configurable options to protect against scanning and flooding attacks.

A brand new component of the platform is the ngcp-mediaproxy-ng (some notes about it here) which replaces RTPProxy for NAT traversal. The main benefits are in terms of QoS, ngcp-mediaproxy-ng using a kernel module to relay the media packets. The application has been developed in-house, used for many years in production and now released open source under GPLv3 for SPCE.

The web interface got also some fresh air, in particular the administration portal makes more use of web2.0 technologies, improving the user experience.

I am migrating one of the public VoIP services that run Kamailio to SPCE -- then it would be easy to try & feel it quickly. The plan is to go beyond the standard distribution, very likely will have SIP presence and few more features - the targets to be included in the new version of SPCE.

If you want to give it a try by yourself, choose between the APT repository or one of the provided virtual machines images for VMWare of VirtualBox, see details at:
Stay tuned for more updates!

Wednesday, June 1, 2011

The race to the new and world wide telco

Globalization is everywhere. Still one of the most crumbled markets is the telecom world (classic telephony or mobile). But we are tired of changing SIM cards as we land, we are tired of remembering to redirect numbers when we leave the office, we are tired to memorize all our phone numbers, someone's gonna fix it ... lots of money still there and the seat of a world wide telco is yet free.

The race (could be called war as well) started: Apple, Facebook, Google and Microsoft moved troops, stroke and changed the strategies. We know who is top search engine, top gadget maker, top social networking platform or top operating system vendor, but who is going to win the top world-wide telco crown? Time will decide, first for now just a quick look at top fighters.

Microsoft

Being still hot, let's look first at Microsoft and its acquisition Skype.

Deal was agreed, but it is going to take some time to get approved by authorities. This period is a big waste of time. Besides that, the whole eco-system is a mixture, fitting pieces (i.e., Microsoft applications with Skype communication) together to build a puzzle that was not designed for this goal from the beginning it is going to cost more time and quite some money in development and deployment.

Another weak point for this team is poor presence among end user mobile terminals. Windows 7 for mobiles is at its very young age, iOS and Android have far more third addons that significantly balance the end user decisions of what to buy. Moreover Microsoft does not have a branded hardware yet that attracts customers. Buying Nokia can bring them the infrastructure, the knowledge to build mobile hardware and more distribution channels, still the 'device' is not there since Nokia does not have it either. Therefore more lost time.

Many presented their friendly relation with Telecoms as a strong point, I see it completely different, we talk here about taking parts of telecom cake, so it can turn against rather than help them. I expect Telecoms reducing Microsoft's revenue on other channels (desktop and server OS, productivity applications, a.s.o.) once it starts direct competition.

Apple

The company is lone rider. Does cool stuff, good looking devices and rich user experience that everyone want, but for the other companies is hard to do business with them. Apple has a 'good' reputation of changing the rules in the middle of the game as they like.

They are well positioned regarding mobile devices with iPhone and I would count even iPad and iPod Touch. The upcoming iCloud can provide the needed infrastructure to run telecom service.

Facetime service looked interesting, still none of my close contacts switched to use it as primary communication channel. I don't have figures about their subscriber base, but can be the seed for the telecom plans.

Google

By using Gmail ID Google solves quickly the addressing space with unique user ID in a convenient way. The subscriber base is big enough to be very appealing to use the service or interconnect with.

With GPhone and especially with Android OS for mobile phones and pads, Google is extremely well positioned at this moment, recently outselling iPhone.

Google offers GTalk and Google Voice products for voice communication, too separated so far in my opinion.

Facebook

The famous social networking relies primarily on its user base. They realized that lack of a public Facebook unique ID is working against them, so recently they added own email service and try to force users to choose their Facebook address.

End user controlled device is missing completely right now, there were rumors about a Facebook phone, nothing for sale so far. Their messaging system is open for federating through XMPP, an open standard, but internally it is different.

My thoughts

Money is not a big issue for any of these companies, what matter is the time and the immediate gain of taken decisions.

What I would like to see from the new telecom model? Freedom in communication and mobility for users, plus a proper mapping of the service on the Internet architecture and use what drives the Internet and made it famous (the DNS). What I expect?
  • be able to choose my contact addresses (what used to be phone numbers), where people can call me. I am Daniel, not the only Daniel in this world, but I am the one at Kamailio project, so daniel@kamailio.org can uniquely point to me.
  • be able to interconnect easily with my own brewed telco system. Look at how email is working - Internet domains (DNS) for routing.
  • be able to migrate easily my own brewed service to world wide telco's infrastructure (porting my addresses) and the other way around. DNS is again straightforward the solution
  • be free in the content of the communication, no restrictions on media type imposed by core network
At this moment I see SIP, the open standard protocol very popular in Voice over IP, as the right direction. Yes, I am a SIP guy, but it is hard to argue against the next facts:
  • SIP has a very large end user equipment base in place - SIP is deployed by many operators and present in form of hardware or software to hundreds of millions of people, probably more than Skype has as Tim Paton stated. That means if one of the companies starts a very appealing SIP service, it costs nothing to all those owners of SIP devices to join the club - a huge market already prepared.
  • Interconnection still drives a lot of money in telecom - a trusted world wide company that can offer direct SIP-to-SIP interconnect at cheap rates can secure good revenue from existing SIP-based VoIP operators just by offering a bypass of PSTN.
  • SIP was designed with IP networks in mind, therefore it has email-like addresses and DNS in the core of the protocol
  • Native extensions for end-to-end (proxy model, see below) Text Messaging and Presence
  • It works with any real-time media streaming communication - voice, video, desktop sharing, a.s.o.
Using SIP is not easy though, has to be done carefully, the most important aspect is to forget what a classic Telco does and design a new telecom model:
  • forget about implementing the intelligence in the core network - back-to-back user agent model does not scale to world-wide telco target and imposes restrictions on type of communication. Proxy model scales much more better and requires only the basics of SIP - just interconnect people and operators.
  • stick to basics of SIP - specifications that worked always and they are very simple to implement. If your engineers cannot design the service using less than 10 SIP related RFCs (3 being the core of the protocol), fire them, is going to be too much of classic telecom.
  • let the end device be in charge of communication - people like smartphones, they pay a lot for such devices and then want to use them to full features set
  • charge based on time or volume of data, not type of communication - I may have my new SIP application doing 3D holograms, don't hunt the content type to rise the price, it is a set of bits flowing around for anything, period
  • TLS as primary transport layer - protect people against ISPs blocking VoIP, ensures encryption of content (texting and presence) and privacy (who is calling who). Moreover, for Interconnect services will provide good authentication of peers, without the overhead of setting new access rules for any new server a company is powering up, removing as well the risk of SPIT
  • no allocation of random numbers - provide the option for people to choose their contact ID, email-like addresses is something people are familiar with and remember easily
Regarding the technology, if there is nothing developed in-house for the infrastructure part, using open source would bring real advantages. From the applications I am familiar with:
  • Kamailio SIP server for proxy - hard to beat scalability for routing SIP, including secure TLS communication from end user to core network or for interconnect, plus SCTP as a good choice for within core network communication
  • a good range of software for dedicated Voice application servers, e.g., Asterisk, Freeswitch or SEMS
  • gazillions of extensions already in place for add-on services and interaction with social networking or other IP services
  • access to source code to develop further enhancements in-house for new needs and be able to integrate with the other services offered by third parties or the company itself
How about you? What would you like to get from a new world wide telco? Which technology would be today the best to choose? Do you think of any other company able to run in the race?