conjoon - the open source webmail client
DESCRIPTION
A short presentation about the conjoon Open Source Project (http://conjoon.com) I did for Zarafa (http://zarafa.com)TRANSCRIPT
![Page 1: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/1.jpg)
Einführung in Ext JS 4
conjoon
The Open Source Webmail Client
2014-04-11 Zarafa HQ, Delft, NL
![Page 2: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/2.jpg)
● Thorsten Suckow-Homberg, Year 1976● PHP & Javascript since 1999● ExtJS since 2007● Author of the conjoon Open Source Project (conjoon.org)● Software Developer, Trainer, Speaker
@thorstensuckow
![Page 3: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/3.jpg)
What is this talk about
● Introduction to conjoon
● Some history
● For the Developer:● Technology● Architecture● Challenges
● For the User:● Features● Live Demo
![Page 4: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/4.jpg)
Historical Background(or: Let there be POP)
![Page 5: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/5.jpg)
conjoon
● Started around 2005 as „Intrabuild“, a Groupware (better: PIM) written in PHP
● The goal:● Develop a top notch websoftware that mimics a desktop
application ● Huge degree of interaction● No page loads● Controls known from desktop applications● Fast response times● Easy to install and maintain
● Integrate a webmail client that beats the functionality of the webmail software used by my provider (thus POP)!
![Page 6: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/6.jpg)
conjoon
● Shared a huge passion for OO and Design Patterns to this time● Lots of experimenting with:
● Java API 2 PHP (cucua.tigris.org)„Cucua is a oo class library for PHP5 with a strict and binding API. It's goal is to provide a rock-solid, extendable programming interface which is loosely based on the public Java API implemented by the GNU Classpath Project.“
● Java Swing library 2 javascript cudgets.tigris.org→„cudgets is a Javascript library that extends and simulates OOP behaviour (interfaces, abstract classes) and provides a set of (AJAX driven) widgets which are easy to set up[...]“
● Early 2007: A rational thought process and the quality of the implementation makes ExtJS the first choice JS framework for ongoing projects
![Page 7: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/7.jpg)
conjoon – first draft
![Page 8: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/8.jpg)
conjoon – Ext.ux.Livegrid
● First iterations very promising, but:
ExtJS lacks a very important component – a table view that does not use paging, but instead „virtual“ scrolling
● Leads to Ext.ux.Livegrid
![Page 9: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/9.jpg)
conjoon – Ext.ux.Livegrid
● roughly 4 months spent of free time to get the component running
● lots of positive feedback from the ExtJS community → leads to „open source“ more components used in
conjoon
… late 2008: First Alpha release of conjoon! (0.1a2)
![Page 10: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/10.jpg)
META
![Page 11: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/11.jpg)
conjoon – The Meta
● Software used in this project:● Atlassian SW Suite: Jira, Confluence, Fisheye● IDE: IntelliJ PHPStorm
→ all of this sponsored by an Open Source license (thank you guys!)
● Software versioning: SVN● Unit Tests: PHPUnit● Build Process: Phing
![Page 12: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/12.jpg)
conjoon – loc*
* All metrics based on 0.1.6EAP1, excluding vendor code
![Page 13: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/13.jpg)
conjoon – Unit Tests*
* All metrics based on 0.1.6EAP1, excluding vendor code
![Page 14: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/14.jpg)
The Backend
![Page 15: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/15.jpg)
conjoon – Backend
● 3rd party libraries used:● Backed by ZF 1.12● Doctrine as ORM● HtmlPurifier for sanitizing external HTML
● Backend and Vendor code configurable using global configuration file
● Application specific settings● Cache settings● LOB storage settings
etc...
![Page 16: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/16.jpg)
conjoon – Application Controller
● Heavy use of ZF Application Controllers● Mapping urls to actions● Backend is context aware, i.e. delivers output in different
formats as requested (json/xml/html...)● Authentication Plugin guards every action and rewrites routes
if necessary● Ext.Direct and Zend Framework understand each other (talk at
sourcedevcon 2011 in Split, Croatia)
● What's changing?● The past: Following ZF best practices● The future: Even thinner controllers, lots of
facades/services to keep the software pluggable and to decouple functionality→ plugin based architecture
![Page 17: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/17.jpg)
conjoon – browsing Local/Remote Mail storages
● Server centric architecture● Backend uses its own Server/Protocol abstraction● Protocol Adaptees take care of talking to Local/Remote
Storages (local: POP; remote: IMAP/Exchange/younameit)
![Page 18: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/18.jpg)
conjoon – browsing Local/Remote Mail storages
read email!
groupware/email.item/get.email/format/json
Application ActionSet up strategies based on configuration* Cache* Decorators* Security manager* Formatter* ...
→ Service
Server
Protocol Impl
„getMessage“
SecurityService FolderService
RepositoryImpl
Doctrine RemoteImpl
LocalStorage
SQL IMAP
RemoteServer
![Page 19: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/19.jpg)
The Frontend
![Page 20: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/20.jpg)
conjoon – Frontend
● Built using ExtJS● Vendor: Soundmanager for playing System Sounds● Uses Components for the UI but strives away from ExtJS when
implementing logic
→ decoupling frontend framework from ExtJS● Focus on performance by re-using components as often as
possible (Tabbed Navigation, EmailEditor)● HTML5 features by utilizing Application Storage
→ Frontend designed to replace the client's desktop mail client (e.g. Stateful, feature-wise)
![Page 21: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/21.jpg)
conjoon – Client Features
● POP/IMAP support● Tabbed Navigation● Integrated Twitter Client● Feed Reader ● Youtube Player ● Account management via folders● Plain/Html Email Viewer, HTML Email composer● Send/Receive Email Attachments● Stateful UI ● Utilizing HTML5 Application Cache for faster load times
● Low memory footprint by reusing components boosts UI performance
![Page 22: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/22.jpg)
conjoon – public interest
● ***.com offers ~ ******* € in early 2009 – project has more potential in my eyes, decide against it
● Ministry for ************************ shows interest, but decides to use competitor (support and manpower guaranteed!)
● Frequent requests by hosting companies asking for ● admin panel● integration in hosting environment (e.g. let the client
choose their preferred webmail client – Horde, Roundcube and such)
![Page 23: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/23.jpg)
![Page 24: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/24.jpg)
conjoon – Client Features
What follows is a live presentation. Fellow readers can get an overview of the presented features here:
Feature and Functionality Overview:● http://conjoon.org/wiki
Demo (based on 0.1.5)● http://demo.conjoon.org
![Page 25: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/25.jpg)
Questions?
![Page 26: conjoon - The Open Source Webmail Client](https://reader033.vdocument.in/reader033/viewer/2022052600/557c3008d8b42acc738b4849/html5/thumbnails/26.jpg)
http://conjoon.com
http://conjoon.org - project home (devs)
http://conjoon.org/issues - bugtracker
http://conjoon.org/wiki - documentation
http://conjoon.org/source – repository browser
https://www.ohloh.net/p/conjoon - some metrics provided by ohloh
Thank you!