Okay, so thanks people for coming to to the room for my presentation. I know there's lots of other cool things to see at the moment I'm happy to see that at least some people decided that this was the thing to go and see or otherwise you were too Too lazy to stand up and go go somewhere else. But anyway, my name is Steve Hardy I've been lead developer at Serafa for quite a few or forever actually so as long as Serafa is around I've been the lead developer there What I wanted to do today is is an introduction plus some in-depth technical stuff I Realized that there's probably quite a lot of people here Which who haven't really ever seen Serafa at all or don't even know what it is so I'm gonna give some High-level introduction first and then try to go a little deeper into into everything You can see my email there You can try sending me an email there and see if I reply, but it may just go into DevNol Also, I'm on IRC net if you have any questions. You can see if you can find me on IRC So a lot of people may be asking who are these Serafa guys where that they come from Well, actually we're from Delft in the Netherlands and although my name is Steve Hardy, which sounds rather English Well, that's because I am But actually I was born in the Netherlands. So and I was also work there and We're basically a company and we started the Serafa products a little while ago So Dennis the question why is why are we now at FOSTA and for the first time? Well, basically the reason is that we've only just open sourced the product since September 2008 So that's a half a year ago now And that's the reason why we're here now for the first time talking to you about about Serafa It's actually it's a small mistake. There's actually a GPL which is a slight variation at GPL And there are some parts of Serafa software which are currently not open sourced yet Unfortunately, we can't do that. We will hope to do that in the future But currently financially that that's not really a handy thing to do for the company So I'll tell you which parts are open source and which are not basically everything I'm talking about. It's all open source components So why did why did Serafa make this product? Well, we've we've been doing the product from since 2005 and we had a lot of mapping knowledge And that's a word that I'll be talking about a lot today We had a lot of mapping knowledge in the company and at some point we thought it would be a good idea There's currently no real collaboration server on the market That really can really replace an Microsoft exchange server and really do the same things That's an Microsoft exchange server can do as well. And then I'm not only talking about The standard stuff that you that you know that you can do with exchange like emailing and using their web access but also really supporting their APIs and supporting For example mobile devices and things like that. So that's the main reason why we started the product and then a couple of you may be Asking already what is mappy? Well one really important thing that will just start to start saying it's not I map Although they're the four same four letters. It's something completely different. I will talk about it later in the more technical part But just try to remember that mappy and I map are not the same if there's any dyslexic people Yeah, hard luck so I've seen a lot of presentations here today. There were lots of text. I thought it was a good idea just to go through the product By making lots of screenshots of stuff Just to give you an idea of what the product is now This is just Firefox our screenshot of our webmail and you can already see directly that it has a lot of similarities to what you'd be what you'd be using in in Microsoft Outlook with with the Folders on the left and the and emails at the top you can also set it up to different views so that it looks even more like that The reason it for that is that a lot of users That we're trying to get to open source software currently use outlook And they would like to use something that looks and feels like their outlook product. So we tried to Model stuff around around that around that at least that user interface. So this is all Ajax it has Of course an HTML editor for email But it also has all these cool contacts menu so you can right-click on an email and set a little flag on it Clear the flag do options It's a real it really feels like real application as I accept locations normally do of course So that's that's one part then of course in the whole web access is also integrated. It's all your calendaring So this is just a little quick screenshot of a little kind of calendar that I made with some test data in it Also in there is your contacts You can do Drag-and-drop things from one folder to the other. I'll give you a quick demonstration in a minute But mainly the main point is we we took everything together and put all the all the collaboration features that you normally Maybe may have split between different applications into one web interface here. So this is just the web interface We also support of course all your iMap and pop3 Clients as well. This is just a Thunderbird looking at the same data actually We have the iMap pop3 gateway I'll tell you why it's actually called a gateway later But it basically means that you can just use your standard pop3 iMap clients with with the same data Next screenshot. We have support because of this whole mappy model that we're using We don't only support the Microsoft active sync thing on your pocket PC, which probably nobody has here. I guess We also support the blackberry stuff through their blackberry enterprise server Also a very expensive thing to have but the only really what real way to synchronize your your blackberries through their best server And that works with the Rafa also because of the mappy support and the iPhone has basically And basically the same synchronization system as the the ms. Mobile. So we support that as well We got that one for free Since that they implemented the same protocol that we already supported anyway So we have all those three as well There's not a lot of packages out there at the moment that that can actually do this that are open source We also have some bird support I've got a really boring screenshot here with no data in it because I didn't have the server at the moment That I made the screenshots, which was yesterday But anyway, we have support for caldev Which means that you can access your calendaring data also through sunbird or or some other Some other program on the map Mac even with I I cal I think it's cool Then this is Yeah, a little bit different of course and maybe something that a lot of people don't like to see at this at this conference This is Microsoft Outlook 2007 We do support this as well But if you want this this is the the non open source part So the the Microsoft Outlook support is actually not in the open source product Because you need to install something onto your your Windows machine So the entire server side stack and everything that you run in Linux is all GPL The only part that isn't is actually this On the other hand, there's a lot of people Who want to be able to run the Linux server and still be able to use Outlook in a way that you'd normally do with exchange Oh It's a good question the question is can I run the AGPL version on the server and then still use the The the the commercial product on Windows and the answer is yes there actually. I'll just make a Quick drawing here. Basically, you've got your your server core here which is our Mappy server core for for Zarafa and that is exactly the same whether you're using it in a in a Commercial environment or in a in a AGPL environment. This thing is just binary is the same thing you download Then on the Windows client, obviously is our Mappy client And This part you just installed this is just an MSI installer and it works with the server one thing though because it's licensed We didn't want to bother all our users with having to Put in their license registration code here. So we've made a little little part on the server, which is just a little license server Which communicates with this one so that you don't have to distribute your licenses to all your clients But in in in the whole big picture. It's basically just a direct connection between these two. So Yeah, that's also a good question. I think I'm going to do lots of questions before getting to the next slide The question was so the Mappy server is not a standard Mappy server The problem is that Mappy there is no map standard Mappy server because this is a protocol Which you are free to implement as a Mappy provider because Mappy is actually an API So there's actually a little bit of software here, which provides the API to outlook and Then this is our protocol, which is a soap base protocol So it's not wire compatible with exchange. Yes Sorry last question was so I could have a different Mappy client then I can't use the server and the answer is yes Because the protocol is just our protocol I'll come back to some stuff that looks a little bit like that as well. So some other screenshots here I made some screen dumps of putty looks a bit strange, but Just to to give an idea of user management We have lots of command line tools one of which is the the easiest one. I just put at the top which is just creating a user There's just a command line tool surafa admin. You can create a user with minus C He just creates a new user with a password and there's your user Same with delivering email An important thing to remember is that surafa is actually the storage system itself So your email is stored in surafa surafa is not just a layer or a web access on top of an existing storage system Your email is actually in surafa. So when you're delivering an email You also have to use our delivery agent to actually get that email into the database into that Mappy database So that's the the surafa the agent. I'll show you a little demo of that in a minute as well Then we also have the possibility to use an LDAP server. So You can use for example, I have a little open LDAP setup and you can get your users from there Configurable backhand so you can choose like either I'm going to use a command line adding user system Or I'm going to use an LDAP server. You can even use your active directory if you really have to And that's actually the picture on the right. I couldn't find a screenshot of active directory So I just put something large and heavy Which is yeah the active directory side Then lots of stuff that was pretty hard to screenshot We've got brick level backup Yeah, that's kind of a buzzword it basically means that when you do a backup and I want to restore one single email You can restore just that email We've got on this compressed attachment storage and there even single instance So when I send an email to a thousand people with one megabyte attachment, it's only stored once on your disk We've got single sign-on If you have single sign-on Capability in your network We've got a large comprehensive security model so you can set up security per folder For users and groups and grants and denies and things like that We've got performance statistics gathering so you can do lots of performance Measurements and you may say is performance interesting for this kind of systems. Well, yes, because we run setups with more than a thousand concurrent users on the single server and Databases of up to 200 gigabytes. This is in my SQL by the way. So yes performance is very interesting in this in this product and You can get some statistics from there. We've got some PAM based user import So what I was saying before that you can create your users from the command line You can also import them from LDAP, but you can also just import them from your UNIX password password file or PAM whatever PAM module you're using at that moment I've got some migration tools and For people who know what it is the free busy information so that you can see when people are busy and when they're free So those were a bit hard to screenshot. So I just listed those So then is is is Zarafa just another one of those web accesses that looks really cool Well, I've tried to say it before already, but Zarafa really isn't just a web access system It's really a core storage engine and that's really the core of the of the system It's all programmed in C++ It's usable for posters for example if you want to run a single server and you have 200 customers and each of those 200 customers has Customers of their own you can run those all on the same server without them being able to see each other and things like that You can configure that from the LDAP server So you can have a huge LDAP tree with say 200 different organizations and they'll never know that they're actually running on the same server we've got soon clustering support and That means basically that you run More than one server for the same setup We've got lots of programming interfaces the most important one which I would be talking about is the map you see plus plus interface And to come back to the guy who lefts question or maybe towards yours This client here which is in Windows is actually also on the server It's the same client we basically cross-compile this client on Windows and on Linux only we just simply don't Open-source the whole build environment for your for the Windows client. Why is that? It's quite easy really since I just said that this client is the one Providing the mappy interface. We want to be able to use that mappy interface also on the server itself So when I'm delivering an email on the server, I want to use this mappy interface as well So I want it here on the server so that I can use mappy on The server so everything in the entire is a rough the setup is mappy based So then we made a language wrapper for PHP so that from PHP you can basically access the API and We made a language wrapper for Pearl, but that's actually only in the in the source distribution at the moment Then because we have all the data in our own database if you just see that in this drawing here I have a big database here and All the data is in there that means that when I want to retrieve my email back to my Pop3 or IMAP4 client that means that I'm going to have to take it out of the database through the server and back to the client That also means and I'll show you in a minute why that's not that easy It means that we have to reconstruct the email because we write it into the database as a mappy object and which is all split up into lots of little little bits and The IMAP client wants the RFC a 22 message again, so we have to reconstruct the message So that's why that's not such a logical thing that we have it the IMAP the IMAP4 and pop3 Gateway it actually does conversion and obviously we have some to be support for for sending email and as I said before we have calda of my calendar for for your calendaring needs So here's a little stack overview my scroll over here. We use in ODB for a lot of Database stuff, so it's all transacted. It's highly optimized. We've done a lot of work there Also with my SQL to get that really really blazingly fast So off a server is the only one this is one process And so off a server is the only one that actually connects with the my SQL database So all the data in my SQL database has to go through the server that goes through a soap protocol into mappy itself And then we have all the components on the top there So everything that we make is either in the Zarafa server optimizing more mappy stuff Or it's a new module on top of mappy here somewhere So some of the things that the agent on the left that you can see is called by postfix to deliver emails The web access itself works through mappy the backup system works through mappy the calda of server It's your mappy and whatever your app is that you want to use that uses mappy as well can also access the data through the same database The blackberry enterprise server by the way is also just another block on this list So as I said before our data transport is through soap Actually before we go there Just gonna give you a quick idea of the of the of the system I've I've got a fume where I'm running here with With the Rafa setup on it. I'll just make it a little fuelable for you. I think it's probably a little too small now we have the delivery agent, which is the the system as I said before is the The way that you deliver something into some of these inbox normally that is just called by postfix so postfix has an email and Basically just starts up the delivery agent and puts an email in your inbox. I'll just show you what that looks like I have to start it from my tree. I don't have an actual install here. It's just a debug So normally you started it started up one of the parameters probably a little too low at the moment, isn't it? You started up with the parameter is the username. I've got a user user 999 That didn't work. Sorry about that had to fix the path there Now it's just waiting for my input for the email normally now the entire my message is pumped into here But I'll just do a little little test email for example. Hello world And we'll put it in there and as soon as the there's an end of file there You actually see that outlook already pops up with hey, you've got a new email and when I go to to the web access and Unfortunately, that doesn't refresh real-time. It only does it once a minute, but here's the here's the email I didn't put all the other fields in so you can't see the rest of the email But that's that's basically what you have to do if you want to Use a ruffa inside your existing smtp mail server. That's all you have to do Now of course, that's for incoming email then for outgoing emails basically the same story we have a spooler which is normally running all the time and it's just looking at everybody's outbox and As soon as there's an email there it sends that from your outbox puts the email into the sent items and That's just also all just standard mappy calls that it's actually doing I Just had the The the page for this we've also tried to keep using Well standard open source practices and we've always done that in our previous product So we haven't just added that should be quite complete in all the man pages all this help information should all be quite Quite full and complete so you won't find any strange binaries, which don't tell you what they're doing or anything like that Also the rpms that you install when you download the ruffa really only contain these binaries We don't install a huge management interface. We don't install a java virtual machine We don't install tomcat or anything like that. It's really just these binaries the server Whatever our configuration files you need So if you already have a server and you want to upgrade or you want to start using the ruffa It's just adding this putting in the d agent and adding the Starting up the spooler should be enough to get you up and running Also, this has lots of options so that you can deliver stuff into people's junk mail folders and things like that So if you want to integrate it with proc mail or things like that, it's quite easy to to use the minus j option up here Which delivers an email into your junk mail folder instead of your inbox for example, or you can just drop it Whatever, it's the same as what you're what you'd normally do with proc mail so The web access here just quickly Got to show you a few little things we've got here indeed the right-click stuff We've got the calendar which you can also set to different to to different views with week and and day you got Basically you've got drag and drop as well for your email so you can take this email and drag it over here somewhere Put it in junk or something Things like that. So it really feels like a real application here And as I said before this is all gpl code and actually the web access Maybe you've seen in the url already is programmed in PHP and of course JavaScript for the browser site So a lot of developers can really quite easily just roll into using that So who's you using is rough at the moment at the moment? Well, mainly there are xms exchange users Or people who wanted to go to MS exchange, but found this as an alternative The reason is that we support all those major exchange features like The mobile synchronization stuff and it also allows you to offer an MS like feature to your to your whatever your Customer or to your company or your friends You can give them an MS like experience. So it doesn't really matter for them Well, at the same time you can keep using vi and edit all the files in the Linux prompt and do everything like you used to With by my sauce and all these tools that you that you just yeah already We're using it wasn't really large installs. We've got over a thousand concurrent users Large databases 200 gigs very highly optimized as I said before Even the guys from my as well asked us how we got it so quick instead of the other way around And it's used in really a lot of organizations from really small five user installs to up to a couple of thousand at the moment And that's mainly in Europe actually and that's again because we're a Dutch company And we're mainly focused on Western Europe at the moment So what's all this mappy stuff? I've already talked a little bit about it. It's a C++ object model So the the native API is a C++ API It was originally developed by Microsoft. We basically took their API and implemented it ourselves By the way, it's just an open API so you can find all the documentation on it on the internet And it combines basically all groupware items and I mean by groupware items I mean all the stuff we've been talking about like email and calendaring all into a single data model Then what's the difference with IMAP well everything as I said before mappy is not a protocol It's our own protocol. Whereas IMAPs are real protocol mappy works on lots of groupware types of items whereas IMAPs really been made for email basically, there's there's no real similarity between the two and Do not ask me. Can you make an IMAP backhand for Zarafa because the answer is no And we've had that question a lot So why do all this work to use mappy? All compatibility is just so that you're compatible with our other mappy products and with obviously the MS products So as a quick introduction Going a little deeper now. What does this interface look like? There it's quite a large interface I've just put a little bit on this sheet to give you a little idea of what it looks like Basically, you've got an object called an iMessageStore That is a big store of data and basically that's what you see in your web access as being this thing This is a store That has a couple of functions for example, you can say get properties or get props is actually called and for example You can get data like what's the name Of this of this store or you can get the size and things like that You've also got get receive folder for example. It gives you an entry identifier for a Default folder like your inbox and it has open entry so that you can open other objects like IMAP folders Logically enough those are just the folders that you see in your in your store Each of these folders again has get props get contents table Which is then the table that you can see in your in your client normally with all the well the table data of the Inbox so which data is in the inbox actually summary information and again open entry so that I can open the emails in those folders and That's an iMessage has the same interface again with get props You can just basically get properties of the messages and then it has again It has attachments and under this attachments can be messages again So that's what you for example you got a get attachment table and if you're sending an email you could call submit Now just to give you another quick idea of what that then looks like Actually the best way to do this is through outlook. I'm sorry for that, but Outlook has a nice little debug bar at the top and it gives you an idea of what what this stuff looks like For example, if I open the folder it actually shows a graphic Yeah graphic representation of the API and you can see up here, maybe it's small, but it says get props here No, it's not that small It says get props here, and then these are all the properties on this email Now you can see there's quite a lot and this was a really simple email one of them was for example is down here Sorry, this was the folder. Yeah, so we're looking at display name PR display name is inbox and that's actually just the name of the folder all of the other properties are usually quite Eternal things they're all important, but they're not that easy to explain at the moment Same thing for an email the email just has properties as well. It's just a collection of properties. They all have different types And in this case the body has Let's take the subject The subject is tests Well, some test email that we delivered So you can see just this is the API that you'd normally use to get all the data from the From the message and you can imagine going from this data structure back to RCA 22 to your to your Thunderbird client It's quite a lot of work because you have to thread everything back together do all the encoding and all the All the conversions and things like that even charge set conversions. So it's not that easy But you don't have to think about that because we do that in a couple of libraries that we also provide So that's the API Well quicker overview, but it also has Delivery rules it has replication mechanism server to server. We have an offline system for example Which uses this replication as a security API test HTML plain text conversion stuff It has advanced searching so you can make a huge query tree and run a search These are even live searches So they update as soon as an email arrives this search results automatically update things like that It has full text searching test address book functions and one that I didn't put here is that it has real-time notifications As I demonstrated before when I delivered the email you got a direct Notification of you've got a new email and that's also part of mappy that you can push notifications to the client So ways to develop with Seraphos since this is a developers conference I thought I'd just put these down on a on a lift. Well, obviously with C++ you can Basically write entire applications. You could theoretically rewrite the entire outlook Well, you I basically because that's all out look really is it's just an UI on them on the API You can write that in C++ In in Linux, but you cannot even then run it on Windows because it's the same API. It's all source compatible So if it compiles on Windows, it will compile with Seraphos Linux as well Except of course if you're using lots of stuff like MFC and things that are only only exist on Windows But for example, you could make a QTE application in C++ and and have it cross platform compiled on Linux and on Windows Obviously C++ easy to make lots of other language bindings With swig or something like that. I should be quite easy to have any language that you want also wrapped I don't know Ruby or something Python But the ones that we deliver at the moment's PHP Makes really nice little simple scripts and it also makes our entire web access. So also, that's a quite comprehensive API there. We haven't exposed the entire mappy API through PHP But almost everything that you're gonna need for for for scripting Perl is the entire API, but currently as I said, it's only in the source distribution If you want to play with it, you can just download the source distribution and use that And then last lastly the web access plug-in framework I'm gonna show you a little bit about that what that looks like We can make little plugins for the web access and and or big plugins even and They integrate then with the with the Ajax web access now just to go through Just to give you a quick idea. Are there any C++ developers here? One two, okay, that's enough. I'll just give you an idea of what the C++ looks looks like What should I take? My space bars broken I think so sometimes it doesn't space bear with me Here's a nice one don't laugh at me I use Joe for in it Now it looks quite windowsy Because of all the capitals But yeah So lots of capitals there just I'm just gonna walk through this what what this code actually does I think it actually opens your inbox and just dumps the dumps the the inbox contents or something like that First thing you always do is mappy initialize. That's that's just a mappy standard We've got a convenience function here where you can just open a session directly You can just say I'm this username this password and it'll open your session for you in this case. There's no error check Oh, yes, there is You can specify it on the command line with this test program, but that'll give you a session That's your starting point once you're logged in You'll have a session object which you can use On the session object, I have to open my default store. There's not just one store There's there can be lots of stores. Firstly, there's my store. There may be a public store I may have opened somebody else's extra store So for example, if I'm looking in somebody else's calendar or somebody else's store because I have rights to look on a store Then you can have multiple ones. So there's another convenience function there That just opens the default one and this LP store thing is what is the IMSG store that I was talking about earlier So that's the main object Then we're calling get receive folder This is a kind of strange function in which Microsoft's apparently At first thought hey, wouldn't it be great if we had this function where you can give it a string of the type of The type of object that you want the default folder for and then we'll give you the correct folder and then Well, apparently they never used it because all this this function ever does ever is in return your inbox. So Not sure exactly what the idea was there But yes, theoretically you can use it for for things like tell me what the default calendar folder is But there's different mechanisms to do that. So Then what we get back is a is an entry ID, which is just a blob of bytes and you really shouldn't See anything into these blobs of bytes. They're just entry identifiers mainly random large global unique identifiers So now we've got that we've got the entry ID so we can open it and The open is happening here where it's just opening This entry ID and what you get back and just have to scroll to the end of the line here What you get back here is an in-box, which is one of those IMAPI folders that I was talking about earlier Then we have the folder we do get contents table we get a MAPI table Yeah, the cost is there because because I want to access it as a This function can return lots of different kinds of IMAPI object because it may return a folder But you could have directly opened a message so you would have gotten the message. So that's the that's the cost So I'm opening the table here Then you're saying which columns do you want and you're so you're saying I would subject from to I don't know that kind of stuff Then you're saying give me the rows and then I think we're not even outputting them But just freeing the data directly. Well, there should have been a printf in there somewhere probably Outputting some interesting information It's a little memory management thing. I won't go into that now. I don't have any time for that but Yeah, this is just a simple program that just opens your inbox and dumps the year Dumps the contents. Now if we have a look at the same program in PHP, I think I'd put it here somewhere Yes Now PHP of course normally, well natively is not an object-oriented system.  Well, not if you're exporting C functions The red is not very readable is it? So basically we've changed everything into a non-object-oriented API in which you just pass the object as the first parameter That's what C++ does anyway So we're just passing the the object as the first parameter and then the rest is the same because we're opening a session here Then we're looking for the default store. We're doing that here by hand Then we're opening the store then we're doing this get receive folder function again It's exactly the same as we were doing before Then we're doing get contents table Then we're doing query rows and then we're dumping all the subjects and just to show you that that works And I know that went really quickly, but I don't have that much time If I run this now You get a dump of all the all the subjects in your inbox now You can do some already quite handy things with this for example If you want to do rule stuff You can just make a little PHP script that looks for emails with a certain subject and moves them all somewhere else Or you can make a little Script, I know that PHP isn't the best command line scripting language in the world But you could theoretically make a little script That integrates with asterisk for example that each time you're called that it puts in your calendar You were called by this number or something. I don't know things like that or even even nicer That it looks in your calendar whether you're in a meeting and if you are puts it to voicemail things like that So it's quite You can do a lot of cool stuff with this PHP stuff I haven't seen that many Contributions yet with this kind of foy kind of integrations, but it should be should be quite easy and myself I really don't don't know anything about asterisk. So If anyone does love to see it What was the third one pearl yeah, we won't go into that What's the time yeah The web access plug-in framework. I'm just gonna walk through an existing plug-in again. We're not gonna write it from scratch As I said before everything in the web access is PHP and JavaScript based so Usually you for your module you have a server side part and the client side part and what we're what I'm gonna demonstrate in a quick plug-in here is one of those Cool if I hover over a an address that it will show the Google Maps a little map pop-up of that address What you basically do is as Rafa has a The web access has a special plugins directory each directory that you put in here is is a plug-in Sorry about that. So we've got two plugins here. We'll just look at test and The most important thing here is the manifest as an XML file Which basically tells tells Rafa what what files are in here and what it should be doing And it has information in it as you see I didn't write this but my colleague did But basically the most important stuff is down here. I'll just highlight this so that the Beamer shows nice. Yeah, that's a lot better. Yeah Yeah, exactly We'll do it like this Hey That worked So down there at the three things down here the most important thing This is client code that should be included basically tells Rafa. These are important files You need to include them doesn't do much else with them It just says tells the browser to load those files. So in this case, we have plug-in test JS and we have tests CSS little CSS file and It also says that for the dialogue because we have separate dialogue windows. You don't see that a lot I must say in when I double click an email. It actually opens a new window We don't do these divs in inside the main window We just open completely new windows so you can set up which file should be included in which in which window system So then of course the most interesting thing is the plug-in test JS and Just to walk through this Hopefully not too quickly, but kind of quickly. There's an initialization function there. That's started up as soon as the The windows loaded and then you can start registering Basically events. We've got a huge list of events where you can hook into and a couple of the ones are here are pre display post display That's pre and post display of the HTML I think yes, the HTML body of the email. So it's set body pre display and post display If we have a look at what that then does once you've registered them, you should have an execute function Just basically everything comes through execute Just so that you have one entry point and then we just have a big switch there. So we switch our Registered events one of them is then pre display. We'll go and have a look at that one It's basically and remove some commented stuff All it does is some magic regular expression replace which doesn't completely work But normally does for a test plug-in It replaces basically an address which it currently Detects by just looking at commas and things that look like postal codes and things like that Or is it only spaces and it's not that smart anyway And then it replaces that with a link so that you can actually make a link out of that out of that address So it does that before displaying it and then afterwards displayed it It actually adds the events from the from the JavaScript into the into the link so that you can actually do stuff with that link So that's all that it does. I would go into the rest of the the code because all that really does is just Gmail gmap code stuff which basically Brings up the little Sorry, not gmail the Google Maps code So quick demonstration Need to deliver an email With something that looks like a an address over user 999 subject and map tests Hello My address is I'm just gonna do our Company address in the Netherlands I think it has to have four parts Beep So we'll just load that up And then yay, it is a link now. I should have showed that it wasn't a link. Otherwise, but anyway And it does this cool Map thing so yeah, it's probably with only a couple of hundred lines of code You've got a cool little plug in there and you can make make basically everything with this with this system Because you have full control of the entire system That means that you can do everything it also means that you can break everything so That's the problem with these kind of extension systems But it's basically the same as in Firefox you can make weird extensions that break everything in Firefox as well It's the same idea. You can just hook into everything and change stuff So that's the idea there. This actually will be in the next released version which is 6.30 And we were releasing that on Friday, but there was a bug. So we're now releasing it sometime next week Yeah, just one. Yeah. Yeah Well, there was one bug that we thought wow, this is really yeah, you don't want that. I think that was an upgrade problem So wouldn't have even been bad for you guys, probably Let's see. Yeah, that's all for the for the web access plug-in framework if you wanted to see more The beta is coming. We're going to be posting lots of information on our wiki. We have a nice We key page with lots of technical stuff and we'll post all the documentation up here with all the All the hooks that you can use and all the information that you need to create your own plugins for for those Rafa web access Few more sheets some projects That are some of them are ours Set push is the active sync protocol implementation that was talking about you can actually also use that without Sir Rafa It has a an IMAP back-end so on one side it talks IMAP and the other side it talks active sync and You can use that to synchronize your pocket PC or your iPhone So of course you could just use IMAP which is basically the same But you can also make other back-ends for example if you want to use a different a different synchronization You want to synchronize? I don't know your Your v cards in the directory somewhere you could use that as well Um Zed merges a different project from us, which is served server replication We use that for sugar CRM to Sir Rafa synchronization. That means that you can quite easily Couple objects or emails for example and send them to sugar CRM more important back into into Sir Rafa And that's all server side Synchronized so that means also that if I have a task in my tasks folder in Outlook and I press on done It will directly send that down to your sugar CRM system and also market has done there And if that task was a shared task, then it'll even mark it done for all the other users that also had that same shared task so that said merge that's actually a merging platform It's also open source open mappy.org is actually not ours, but it's something that we participate in which is a Basically aims to be yeah a source of information on on mappy, but also they They're backed by a couple of companies that will make open source mappy stuff Last one I put down there is just because I made it. I made a small In ODB for my SQL statistics and recovery program It's it sometimes recovers your data when you can't get anything from my school anymore But it also does some cool statistics, which you can normally can't get from my SQL So take a look at that if you if you're interested That's a fun little project So I think nicely in time for questions next week No, actually it has been implemented, but it's in the version that we're releasing this week So we used to have a I calendar only I calendars. Yeah Downloading your your whole calendar with 5,000 items in it as I calendar and then deleting one and sending 3999 back is yeah, not really a great way to work So we disabled right support in the in that old version which only had a calendar and now we've gone to Caldaf And so you can really do single objects you can do reports. Well The real Caldaf stuff which you can hear about after this I think so Yeah, so downloading contacts in Thunderbird. I really have no idea because what is the protocol that Thunderbird uses for that? Oh, yeah, okay Yeah, I understand so there you want to be able to download those from in Thunderbird Yeah, I really have to look into that because that sounds like we'd have to do something Obviously if you're already using an LDAP server as a back-end There's not much point in that I was making anything because you might as well just query the LDAP server directly But I can imagine. Oh, I see. Yeah, the contacts that you've made in mappy. Yeah That would that would entail us making some kind of LDAP server which proxies your mappa mappy data Yeah Not on the roadmap at the moment. So I wouldn't expect that at least from us really soon, but yeah use the source you can make it Noted. Yeah, so the question Yeah, so the question was here What client can we actually use open source wise if we don't want to use Thunderbird or something like that? well, my opinion is That's currently the problem is that of course Thunderbird is nice For for email and if you combine it then is indeed with some of these features They're using different protocols for all these different things So you can put in lightning and do the calendaring stuff as well and use caldath there I think the problem is there that there's not one If you're using all these different protocols and different server systems, they're never they're not really coupled It would be really nice and that's a thing that we could theoretically do is create a completely new client based on mappy Which can do all the all the outlook stuff unfortunately or No, unfortunately, but we just simply haven't chosen to do that yet because most people think the the web access works fine Because of course, that's an option saying why don't we just go to web technologies? They're getting faster and faster and better and better anyway So what is there that we can't do in the web access that we can do in a real application now? Obviously, there's quite a few things, but you could also look at Using more more of an application platform like prism or things like that to really Really make it application like and have drag and drop and all these cool features That would be really great, but also something that we we have 15 developers Unfortunately, we don't have that on the roadmap at the moment So Yeah, let's people here. So we should we go over here? Okay here first. I knew I'd get this question and you told me to take the sheet out. Yeah So the question was yeah. Oh, yeah, he was there as well. Yeah So the question is the Samba guys are doing something with with exchange and that project called open change I've actually spoken to one of the a couple of one of the developers here We were talking about how we can do stuff with surafa there because what they've done is actually the opposite of what we've done is Basically take this wire protocol from exchange and basically do what Samba does and Protocol and now analysis it No, no, no They didn't reverse engineer it not allowed to say that they did protocol analysis on that And so that's that's what they did now again with exchange and the reason for that is that exchange RPC Which is how what they call it? Looks a lot like all the Samba stuff because it's based on the same RPC code base and Yeah, the problem is so they they they have this quite well working They also have an evolution plug-in so that you can talk directly to exchange I think that's semi-releasable sometime soon But they have nothing on the server side and that's one of the things that we were talking about yesterday Since we already have a database with a mapping structure It would theoretically be possible to take the exchange wire protocol and use our back end But that said I know there will be really problems there The there's no one-in-one mapping between the exchange RPC protocol and our database We probably have to do some conversions and things like that and then is the question is why do you want to do that? I think the main reason why you want to do that is that you don't have to install something extra on your Windows machine Which is a yeah fairly minor Plus I'd say but next question first on the back Sorry, I don't understand. I missed half of it. Yeah. Yeah. Yeah, you have to watch out because there's two active syncs One active sync is the active sync that you run on your computer And then you put your USB cable in and then you synchronize and then yeah The other active sync is what they call server active sync And that is actually a protocol between your PDA and the exchange server so Outlook has nothing to do with the protocol that the PDA talks to the exchange server to and That's what you want because you want this over the air synchronization. That's the difference Yeah, yeah, do we have white widespread deployment of the servers? Synchron Okay, yeah, I understand you think I know the first one when you're finished anyway, yeah Okay, so the first we go for the first question first that is or should we go for the first question first that was Do we do replication between servers which are a long way apart? No Currently we don't do served server replication on the server side We're looking at doing that. We actually have a developer working on that kind of stuff at the moment The reason is because if you're doing clustering the normal clustering way in in in mappy setups aka exchange Is that you basically have five servers and use you basically? Spread your users over those five servers. So you say user number one is there use number two is there You know three is there so there's no replication there So we're looking at whether we can have some kind of replication system there, but that's I'd say probably talking end of the year this year second question, I can't remember anymore the third question was about whether we use mappy on the server for the Ajax and That's totally true We do use that No, I'll just tell it otherwise take too long The PHP language binding that I was just talking about is just talking to the mappy client the mappy client Talks over the network to the mappy server So you could theoretically have your Apache server on one server so rough on the other server or not theoretically Those people do this Apache one server is rough on the other server And it will just use the standard mappy calls that you you'd use otherwise also over the network So that's all Displittable between everything the second question was oh, yeah, there's this thing that Microsoft calls RPC over HTTP or RPC RPC over something like that Well, that's nothing else than that. It's this wire protocol encapsulated in an in an HTTP call So no, we don't do anything with that because we don't do anything with their protocol so Next question. Yeah, sorry the what of an email in the web the web access one you mean The question is can I open the the compose email? Dialogue directly from do you mean from a Windows program or from a desktop application program? Yeah, so whether you can Open a new mill Link yes, you can because we also have mail to support So when you have a link with mail to colon bloody blind if you click on that in your browser We have a feature that you you have to play around with some settings in your in your operating system Whether it's Windows or Linux, but if you do that You can send a specific URL request to this web access and it will open a new it will only open a new Email dialogue. So yeah, you should be able to do that simply by opening the correct URL so I don't really know which one but You can I think on the website On our community page Down here at the bottom somewhere No, it's not there. Okay It's we have it somewhere, but we don't know where so If you look into the source you probably quite easily find what the mail to link thing is So and otherwise it'll be on the website soon Okay, so last question I think Last question unless there's none you've been already you can ask later Yeah, it's quite easy we were basically a company we've been a company doing this product since 2004 and Basically, we live off the the license income if we if we make it completely open source We'll miss the license income We'd like to We're looking at we're going more direction of a service oriented company and we'd like to make everything open source But currently we just we can't just suddenly do that and I think it's I see it as a bit of a more long-term project We made most of it open source last September We had already had had some open source projects before that now we made most open source and I'm guessing the rest will come as well