sabre/katana, a contact, calendar, task list and file server
Written the .
Since several months, I am working on
A contact, calendar, task list and file server, synced, everywhere, all the
time. Based on world-widely used standards (respectively
sabre/katana will sync your data between any devices. This
article will explain what is this project, what features it offers and how
do we build it. More importantly, it provides a secure and safe way to
everyone to protect their private data in a minute.
What is it?
sabre/katana is a contact, calendar, task list and file
server. What does it mean? Assuming nowadays you have multiple devices (PC,
phones, tablets, TVs…). If you would like to get your address books,
calendars, task lists and files synced between all these devices from
everywhere, you need a server. All your devices are then considered as
But there is an issue with the server. Most of the time, you might choose Google or maybe Apple, but one may wonder: Can we trust these servers? Can we give them our private data, like all our contacts, our calendars, all our photos…? What if you are a company or an association and you have sensitive data that are really private or strategic? So, can you still trust them? Where the data are stored? Who can look at these data? More and more, there is a huge need for “personal” server.
Moreover, servers like Google or Apple are often closed: You reach your
data with specific clients and they are not available in all platforms. This
is for strategic reasons of course. But with
are not limited. See the above schema: Firefox OS can talk to iOS or Android
at the same time.
sabre/katana is this kind of server. You can install it on
your machine and manage users in a minute. Each user will have a collection
of address books, calendars, task lists and files. This server can talk to a
loong list of devices,
mainly thanks to a scrupulous respect of industrial standards:
- Mac OS X:
- OS X 10.10 (Yosemite),
- OS X 10.9 (Mavericks),
- OS X 10.8 (Mountain Lion),
- OS X 10.7 (Lion),
- OS X 10.6 (Snow Leopard),
- OS X 10.5 (Leopard),
- SoHo Organizer,
- Thunderbird ,
- eM Client,
- Microsoft Outlook 2013,
- Microsoft Outlook 2010,
- Microsoft Outlook 2007,
- Microsoft Outlook with Bynari WebDAV Collaborator,
- Microsoft Outlook with iCal4OL,
- BlackBerry 10,
- BlackBerry PlayBook,
- Firefox OS,
- iOS 8,
- iOS 7,
- iOS 6,
- iOS 5,
- iOS 4,
- iOS 3,
- Nokia N9,
Did you find your device in this list? Probably yes 😉.
sabre/katana sits in the middle of all your devices and
synced all your data. Of course, it is free and
Go check the
List of features
Here is a non-exhaustive list of features supported by
sabre/katana. Depending whether you are a user or a developer,
the features that might interest you are radically not the same. I decided
to show you a list from the user point of view. If you would like to get a
list from the developer point of view, please see this
exhaustive list of
supported RFC for more details.
All usual fields are supported, like phone numbers, email addresses, URLs, birthday, ringtone, texttone, related names, postal addresses, notes, HD photos etc. Of course, groups of cards are also supported.
My photo is not in HD, I really have to update it!
Cards can be encoded into several formats. The most usual format is VCF.
sabre/katana allows you to download the whole address book of a
user as a single VCF file. You can also create, update and delete address
A calendar is just a set of events. Each event has several properties,
such as a title, a location, a date start, a date end, some notes, URLs,
sabre/katana also support recurring events (“each
last Monday of the month, at 11am…”), in addition to scheduling (see
Few words about calendar scheduling. Let's say you are organizing an event, like New release (we always enjoy release day!). You would like to invite several people but you don't know if they could be present or not. In your event, all you have to do is to add attendees. How are they going to be notified about this event? Two situations:
- Either attendees are registered on your
sabre/katanaserver and they will receive an invite inside their calendar application (we call this iTIP),
- Or they are not registered on your server and they will receive an email with the event as an attached file (we call this iMIP). All they have to do is to open this event in their calendar application.
Notice the gorgeous map embedded inside the email!
Once they received the event, they can accept, decline or “don't know” (they will try to be present at) the event.
Of course, attendees will be notified too if the event has been moved, canceled, refreshed etc.
Calendars can be encoded into several formats. The most usal format is
sabre/katana allows you to download the whole calendar of
a user as a single ICS file. You can also create, update and delete
A task list is exactly like a calendar (from a programmatically point of view). Instead of containg event objects, it contains todo objects.
sabre/katana supports group of tasks, reminder, progression
Just like calendars, task lists can be encoded into several formats,
sabre/katana allows you to download the whole task
list of a user as a single ICS file. You can also create, update and delete
sabre/katana creates a home collection per
user: A personal directory that can contain files and directories and…
synced between all your devices (as usual 😄).
sabre/katana also creates a special directory called
public/ which is a public directory. Every files and
directories stored inside this directory are accessible to anyone that has
the correct link. No listing is prompted to protect your public data.
Just like contact, calendar and task list applications, you need a
client application to connect to your home collection on
Then, your public directory on
sabre/katana will be a
regular directory as every other.
sabre/katana is able to store any kind of files. Yes, any
kinds. It's just files. However, it white-lists the kind of files that can
be showed in the browser. Only images, audios, videos, texts, PDF and some
vendor formats (like Microsoft Office) are considered as safe (for the
server). This way, associations can share musics, videos or images,
companies can share PDF or Microsoft Word documents etc. Maybe in the future
sabre/katana might white-list more formats. If a format is not
white-listed, the file will be forced to download.
sabre/katana is based on two big and solid projects:
sabre/dav is one of the most powerful
WebDAV framework in the
planet. Trusted by the likes of
ownCloud, it powers millions of users
world-wide! It is written in PHP and is open source.
Hoa is a modular, extensible and structured set of PHP libraries. Fun fact: Also open source, this project is also trusted by ownCloud, in addition to Mozilla, joliCode etc. Recently, this project has recorded more than 600,000 downloads and the community is about to reach 1000 people.
sabre/katana is then a program based on
sabre/dav for the DAV part and Hoa for everything else, like
the logic code inside the
sabre/dav's plugins. The result is a
ready-to-use server with a nice interface for the administration.
To ensure code quality, we use atoum, a
popular and modern test framework for PHP. So far,
has more than 1000 assertions.
sabre/katana is a server for contacts, calendars, task lists
and files. Everything is synced, everytime and everywhere. It perfectly
connects to a lot of devices on the market. Several features we need and use
daily have been presented. This is the easiest and a secure way to host your
own private data.