afelio-trademark

Donations

Please donate to support the development. Thank you.

Sponsorships

Companies and philantropists, please consider sponsoring a work item from our roadmap.

Thank you.

Code Contributions

Developers familiar with BSD and/or MacOS X are welcome to contribute. Please read our coding standards and the licensing section.

Thank you.

Afelio™ FAQ

Frequently Asked Questions about Afelio

This FAQ is organised into four sections:


General FAQ


Questions and answers of general interest

What is Afelio?

Afelio is a telephony server software, specifically maintained for BSD operating systems, including MacOS X. That is to say, Afelio will turn a computer running BSD or MacOS X into an automatic telephone switchboard (aka private branch exchange, or PBX) with VoIP capabilities.

Is Afelio based on Asterisk?

No, Afelio has a much different architecture and it does not use any code from Asterisk.

Why BSD and MacOS X?

And why shouldn't we?! The BSD operating system family offers an excellent, if not the best choice in each category: NanoBSD and NetBSD on embedded devices, MacOS X on the desktop, FreeBSD and OpenBSD on servers. One way or another, those are our preferred choices.

So what about Linux then?

Whilst Linux is not at present an official target platform, Afelio should nevertheless build and run on Linux. Note that there are already plenty of software PBX projects focused on Linux. Afelio is the only such project which is focused on BSD operating systems.

Why don't you just use Asterisk?

Short answer: We've been there, done that.

Sunrise has been publishing the Asterisk for Macintosh software distribution since 2003. More recently we have been building embedded devices running Asterisk on embedded versions of BSD and Linux. In the process we have been getting our hands dirty, discovering the many unpleasant sides of Asterisk.

To cut a long story short, we have finally come to the conclusion that Asterisk is highly unsuitable as the basis of a telephony server, both in terms of architecture and in terms of its implementation. In our view, a telephony server should be designed for reliability, scalability, security and maintainability. Asterisk has none of these properties.

Initially, we believed that the shortcomings could be remedied but since the root cause of Asterisk's problems is a result of poor design choices, fixing them properly requires a total redesign. It is often easier and faster to redesign software by starting over. The time gained not having to deal with inherited problems can often be significantly more than the time lost rewriting code. In our view Asterisk falls into this category.

Is Asterisk really that bad?

Yes, the Asterisk code base is really that bad. The only way to fix it is to replace it. In the words of Anthony Minessale, the founder of the Freeswitch project who used to be the most important independent contributor to Asterisk Fixing stuff in Asterisk is like rearranging the deck chairs on the Titanic. and someone else commented If Asterisk was a throwaway car, the only thing you could salvage would be the sledgehammer kept in the trunk to whack the engine when it gave troubles.

We have come to agree with this view — the hard way.

Wasn't Afelio meant to be based on Callweaver?

At some point we were considering Callweaver as a base for Afelio. However, we finally decided against it for pretty much the same reasons that we chose to move away from Asterisk.

We recognise that Callweaver has some valuable incremental improvements over Asterisk, such as the use of the SpanDSP library and kernel based timers. However, two years after the project forked from Asterisk, there still have been no changes to the design and it essentially remains a modified copy of Asterisk, sharing most of its shortcomings.

We concluded that if we had to replace everything it wasn't worthwhile salvaging anything.

In addition to these technical problems, we found a lack of direction and governance which trying to deal with turned out to be rather time consuming and counterproductive.

Does the Afelio software have anything in common with Asterisk/Callweaver at all?

Afelio and Callweaver both use the SpanDSP library. Afelio, Asterisk and Callweaver use some of the same codec libraries, such as GSM and Speex. Other than that, there are no commonalities.

What are the differences between the Afelio project and Asterisk/Callweaver?

The Afelio project is solely focused on BSD operating systems, incl. MacOS X, whilst all other telephony projects are Linux centric, even those which have a cross-platform charter.

The Afelio project is managed by Sunrise Telephone Systems Ltd, providing leadership, direction and governance to the project. This is in stark contrast to the Callweaver project, the direction of which can be rather volatile as it has no leadership and no governance.

Unlike Digium, the company which manages the Asterisk project, Sunrise does not require contributors to assign intellectual property rights. Unlike Asterisk, architecture decisions at the Afelio project are made on technical merit alone, 100% free from any notion to diminish the user experience for those who did not purchase the products of a project sponsor.

What are the differences between the Afelio software and Asterisk/Callweaver?

Although Afelio, Asterisk and Callweaver have similar feature sets, there are major differences in architecture, design, implementation and methodologies.

Unlike Asterisk and its derivatives, Afelio has been designed for reliability, scalability, and security. Software interfaces are designed for maintainability. Implementation follows specification. Abstraction and data encapsulation are mandatory.

For more details, please refer to the Afelio vs. Asterisk comparison chart

So what does Afelio mean and why did you choose that name?

When we decided to start our own project, we wanted a name that would be short, easy to spell, pronounce and remember, for which we could obtain a top level domain name, and which would have some relevance to our corporate "Sunrise" theme.

Our branding agency came up with "aphelion", an astronomy term meaning the most distant point of a celestial body in orbit around the sun. We liked the idea but found the spelling too difficult. Also no domain names were available. When we looked at translations in other languages we found the Spanish "afelio" (also in Portuguese and Italian) to be just perfect.

Metaphorically speaking, Afelio means a trajectory that takes us to a new horizon with a new sunrise, as far away from Asterisk as possible to escape the darkness of mediocrity.

Under what license is Afelio being released?

All components developed by Sunrise for Afelio are individually licensed under the Sunrise Open Source License which is an MIT style license, GPL compatible but far less restrictive.

Contributions are accepted if they are licensed under the Sunrise Open Source License or the MIT license or the revised 3-clause BSD license.

Components which link to GPL licensed libraries assume the restrictions of the GPL even if some or all parts of them are individually licensed under less restrictive license terms.

What kind of drugs are you guys taking?

We are on a regular intake of caffeine obtained from the finest Italian cappuccino, homemade using the amazing Mukka Express cappuccino maker from Bialetti.


User's FAQ


Questions and answers of particular interest to individuals, companies and other organisations interested in using Afelio

Will I be able to use a GUI to configure Afelio?

Yes. For all BSD operating systems we will provide a Web GUI. For MacOS X we will provide native Cocoa based GUI utilities.

Will I be able to use the remote management utility I now use with Asterisk?

Eventually, yes. However, this will only be possible once we have completed the development of an AMI Agent, which is not at present a high priority work item.

Will I be able to use the CDR analysis software I now use with Asterisk?

Yes, we will provide appropriate conversion utilities for CDR files.

Will I be able to use my Asterisk configuration files with Afelio?

No, Afelio uses a different configuration system. Both content and format is different. However, Afelio configuration files are far more intuitive and easier to maintain.

Will I be able to use Asterisk plugin modules with Afelio?

No. Afelio has a totally different architecture and API.

The afelio architecture is based on the idea to keep as much functionality as possible out of the switching daemon in order to keep it light, efficient, scalable, secure and maintainable. As a result, Afelio loadable modules represent components which are desirable to have in the switching core but not essential enough as to include them by default. All other functionality is provided by separate components which run as indpendent daemons.

Asterisk, on the other hand consists entirely of a single daemon. thus all functionality goes right into the daemon. Most of that functionality is represented by Asterisk plugin modules.

Will I be able to use patented codecs such as G.723, G.729 or ILBC with Afelio?

Strictly technically speaking, yes. There are open source implementations of G.723 and G.729. The ILBC codec is available for free personal use. However, it may not be legal for you to use those codecs and for legal reasons, we cannot distribute them together with Afelio. For legal advice please consult an attorney specialised in intellectual property law.

In the medium term, we intend to include a socket based codec interface which will make it easier to use commercial implementations of patented codecs.

Will Afelio support T.38 Fax over IP?

Afelio will be using OPAL for SIP and OPAL has T.38 support. However, we consider faxing in general a low priority feature. For the time being we won't be testing T.38 through OPAL.

I have serious problems with the Asterisk Manager Interface. Did you fix this in Afelio?

Yes and no. For compatibility we will provide an AMI Agent which will allow utilities that use the Asterisk Manager Interface to monitor and control Afelio, but this may not be as efficient and scalable as other methods. The recommended method of monitoring and control will be to use the XML-RPC and SOAP based agents instead.

I have serious problems when using SIP with Asterisk. Did you fix this in Afelio?

Afelio uses external protocol stacks. Initially, we will be using OPAL for SIP. At a later stage we plan to also have a Sofia SIP based media server. Both stacks are vastly superior to Asterisk's SIP stack and the problems most people experience with Asterisk will simply not materialise.

I have serious problems when using call queues with Asterisk. Did you fix this in Afelio?

There will be an ACD module for Afelio, but this is at present low priority.

My Asterisk doesn't scale. How about Afelio?

Yes indeed, Asterisk does not scale. The reasons are poor design choices such as using algorithms and data structures which don't scale but also poor implementation such as overzealous locking. For example, channel drivers written by Digium often have several hundred instances of mutex locks, whilst the independently developed woomera channel driver has only about 30 such instances.

Afelio was designed for scalability. Separating the switching core from the protocol stacks and running them as independent daemons is one such measure which will make Afelio more scalable. Other measures are choice of efficient and scalable algorithms, limited use of mutex locks in favour of coroutine based and lock-free designs. One such example is our lock-free hash table library, specifically designed for Afelio. Our aim is to make Afelio one of the most scalable, if not the most scalable telephony server available.

For more details, please refer to the Afelio roadmap.

Where will I be able to get support for Afelio?

Free community based support will be available via mailing lists and internet relay chat (IRC). Commercial support will be available from Sunrise Telephone Systems Ltd and from independent consultants.

The official community support channel on IRC is #afelio on irc.freenode.net


Sponsor's FAQ


Questions and answers of particular interest to individuals, companies and other organisations interested in providing sponsorships to the Afelio project

I would like to sponsor Afelio. How do I go about that?

We would recommend that you take a look at the Afelio roadmap and check if there are any work items that you have a particular interest in sponsoring.

If there are any such work items we would like you to tell us which ones you have an interest in and discuss a sponsorship of one or more particular items with you, either by telephone or by email. Please note that some items depend on others to be completed beforehand.

If you would rather prefer us to make a suggestion which work item is in need of funding more urgently than others, we are happy to do that. Please contact us by telephone or by email to discuss further details.

Who am I going to sponsor? Who will take charge?

Sunrise Telephone Systems Ltd will take sole responsibility for resource planning, project management and delivery of work items. We may be able to complete a sponsored work item entirely inhouse or we may involve subcontractors.

Can I get some publicity for my business out of a sponsorship?

Yes we can accommodate that in various ways, for example through a joint press release, an announcement on our mailing list, mentioning on our website, mentioning in the installer of the software, mentioning in the about box of the software if it is a GUI utility or application and mentioning in the source code and the credits file or any combination thereof.

I don't wish to be inundated with sponsorship requests as a result of being known to have sponsored Afelio. Can you guarantee strict confidentiality?

Absolutely yes. We can keep your identity secret, not even the developers will know who provided the sponsorship if that is your desire.

What payment schedule do you use?

Usually payment of sponsorhips is done in 2 or 3 installments depending on the estimated amount of work. For smaller work items, we recommend to pay 1/2 upfront and 1/2 upon completion. For larger work items we recommend 1/3 upfront, 1/3 upon reaching a mutually agreed milestone and 1/3 upon completion.

What payment methods do you accept?

We can accept payment by Paypal, credit card (via Paypal) or bank transfer. Considering that the amount for a sponsorship is generally much higher than a typical paypal or credit card purchase it is generally more economical to use bank transfer though.


Contributor's FAQ


Questions and answers of particular interest to developers interested in contributing to Afelio

If I wanted to contribute, do I need to sign a disclaimer to assign copyrights?

No, you don't. All you have to do is to release your contributions under an MIT or revised BSD style license, or use the Sunrise Open Source License which is an MIT style license that gives protection from accidental liability in countries where no-warranty disclaimers are invalid and is thus of particular interest to independent developers and small businesses.

Will you not accept contributions licensed under GPL terms?

Indeed, we won't. The only exceptions are patches with bug fixes or other minor amendments to code that is anyway licensed under GPL terms. However, we try to avoid using GPL code and where we may use it, we are going to look for ways to replace it.

What languages can I use for code I intend to contribute?

Core components or plugins will have to be written in plain C. Components which use coroutines for concurrency may be written in GNU Modula-2 but they must stick to using C libraries so as to not create any dependencies on external Modula-2 libraries. Device drivers for MacOS X and Darwin may either be written in C or in Embedded C++, following IOKit conventions. Standalone utilities may be written in C, Modula-2, POSIX shell script or Python.

What toolchain do I need to participate?

You will need Xcode on MacOS X or CMake, GCC and an editor of your choice on other BSD operating systems. If you want to write a utility in Python, you will only need Python.

What do I need to do to become a contributor?

Please read the project coding standards and the roadmap, then contact us by email.

I am a Linux developer. Can I maintain a Linux branch of Afelio for you?

Being focused means we bundle all our efforts and get more work done. For the time being, our focus is on BSD operating systems. We don't wish to be distracted and lose that focus. If you wish to maintain a Linux branch on your own, that is entirely up to you.


 

BSD Telephony