SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
Einführung in Ext JS 4
conjoon
The Open Source Webmail Client
2014-04-11 Zarafa HQ, Delft, NL
●
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
What is this talk about
●
Introduction to conjoon
●
Some history
●
For the Developer:
●
Technology
●
Architecture
●
Challenges
●
For the User:
●
Features
●
Live Demo
Historical Background
(or: Let there be POP)
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)!
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
conjoon – first draft
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
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)
META
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
conjoon – loc*
* All metrics based on 0.1.6EAP1, excluding vendor code
conjoon – Unit Tests*
* All metrics based on 0.1.6EAP1, excluding vendor code
The Backend
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...
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
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)
conjoon – browsing Local/Remote Mail storages
read email!
groupware/email.item/get.email/format/json
Application Action
Set up strategies based on configuration
* Cache
* Decorators
* Security manager
* Formatter
* ...
→ Service
Server
Protocol Impl
„getMessage“
SecurityService FolderService
RepositoryImpl
Doctrine RemoteImpl
LocalStorage
SQL IMAP
RemoteServer
The Frontend
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)
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
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)
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
Questions?
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!

Más contenido relacionado

La actualidad más candente

TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...Xebia Nederland BV
 
Ruin your life using robot framework
Ruin your life using robot frameworkRuin your life using robot framework
Ruin your life using robot frameworkPrayoch Rujira
 
How to Build Developer Tools on Top of IntelliJ Platform
How to Build Developer Tools on Top of IntelliJ PlatformHow to Build Developer Tools on Top of IntelliJ Platform
How to Build Developer Tools on Top of IntelliJ Platformintelliyole
 
Mozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nMozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nHenrik Skupin
 
Export pdf with puppeteer
Export pdf with puppeteerExport pdf with puppeteer
Export pdf with puppeteerKnoldus Inc.
 
Robot framework
Robot frameworkRobot framework
Robot frameworkboriau
 
Crowd-sourced Automated Firefox UI Testing
Crowd-sourced Automated Firefox UI TestingCrowd-sourced Automated Firefox UI Testing
Crowd-sourced Automated Firefox UI TestingHenrik Skupin
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkPayal Jain
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)citizenmatt
 
Testing PHP with Codeception
Testing PHP with CodeceptionTesting PHP with Codeception
Testing PHP with CodeceptionJohn Paul Ada
 
Continuous Integration with Mozmill
Continuous Integration with MozmillContinuous Integration with Mozmill
Continuous Integration with MozmillHenrik Skupin
 
Mozilla: Automated Mozmill Tests
Mozilla: Automated Mozmill TestsMozilla: Automated Mozmill Tests
Mozilla: Automated Mozmill TestsHenrik Skupin
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionChris Hardy
 
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...Shift Conference
 

La actualidad más candente (20)

Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Ruin your life using robot framework
Ruin your life using robot frameworkRuin your life using robot framework
Ruin your life using robot framework
 
How to Build Developer Tools on Top of IntelliJ Platform
How to Build Developer Tools on Top of IntelliJ PlatformHow to Build Developer Tools on Top of IntelliJ Platform
How to Build Developer Tools on Top of IntelliJ Platform
 
Mozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nMozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10n
 
Export pdf with puppeteer
Export pdf with puppeteerExport pdf with puppeteer
Export pdf with puppeteer
 
Maven and versioning
Maven and versioningMaven and versioning
Maven and versioning
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Crowd-sourced Automated Firefox UI Testing
Crowd-sourced Automated Firefox UI TestingCrowd-sourced Automated Firefox UI Testing
Crowd-sourced Automated Firefox UI Testing
 
Network Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot FrameworkNetwork Protocol Testing Using Robot Framework
Network Protocol Testing Using Robot Framework
 
Introduction to robot framework
Introduction to robot frameworkIntroduction to robot framework
Introduction to robot framework
 
.Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015).Net Core Blimey! (16/07/2015)
.Net Core Blimey! (16/07/2015)
 
Testing PHP with Codeception
Testing PHP with CodeceptionTesting PHP with Codeception
Testing PHP with Codeception
 
Java notes
Java notesJava notes
Java notes
 
Continuous Integration with Mozmill
Continuous Integration with MozmillContinuous Integration with Mozmill
Continuous Integration with Mozmill
 
Mozilla: Automated Mozmill Tests
Mozilla: Automated Mozmill TestsMozilla: Automated Mozmill Tests
Mozilla: Automated Mozmill Tests
 
Italian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch SessionItalian Alt.Net Conference MonoTouch Session
Italian Alt.Net Conference MonoTouch Session
 
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...
Shift Remote FRONTEND: Building Web Parasite Using Chrome Extension - Ivan Vu...
 
Mozmill Crowd
Mozmill CrowdMozmill Crowd
Mozmill Crowd
 

Destacado

email clients and webmail (presentation)
email clients and webmail   (presentation)email clients and webmail   (presentation)
email clients and webmail (presentation)kay2
 
Journey To The Front End World - Part2 - The Cosmetic
Journey To The Front End World - Part2 - The  CosmeticJourney To The Front End World - Part2 - The  Cosmetic
Journey To The Front End World - Part2 - The CosmeticIrfan Maulana
 
Bliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionBliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionIrfan Maulana
 
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...Irfan Maulana
 
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]Irfan Maulana
 
Journey To The Front End World - Part3 - The Machine
Journey To The Front End World - Part3 - The MachineJourney To The Front End World - Part3 - The Machine
Journey To The Front End World - Part3 - The MachineIrfan Maulana
 
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSPhp Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSIrfan Maulana
 
CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 GulpYvonne Yu
 
Journey To The Front End World - Part1 - The Skeleton
Journey To The Front End World - Part1 - The SkeletonJourney To The Front End World - Part1 - The Skeleton
Journey To The Front End World - Part1 - The SkeletonIrfan Maulana
 
Basic concept of computer network
Basic concept of computer networkBasic concept of computer network
Basic concept of computer networkSaahilIT
 
Email ppt
Email pptEmail ppt
Email pptmelgade
 

Destacado (12)

email clients and webmail (presentation)
email clients and webmail   (presentation)email clients and webmail   (presentation)
email clients and webmail (presentation)
 
Journey To The Front End World - Part2 - The Cosmetic
Journey To The Front End World - Part2 - The  CosmeticJourney To The Front End World - Part2 - The  Cosmetic
Journey To The Front End World - Part2 - The Cosmetic
 
Bliblidotcom - SASS Introduction
Bliblidotcom - SASS IntroductionBliblidotcom - SASS Introduction
Bliblidotcom - SASS Introduction
 
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
Sencha ExtJs Learning Part 1 - Layout And Container in Sencha ExtJs - By Irfa...
 
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
Sencha ExtJs Learning Part 2 - MVC And MVVM Architecture in ExtJs [ENGLISH]
 
Extjs
ExtjsExtjs
Extjs
 
Journey To The Front End World - Part3 - The Machine
Journey To The Front End World - Part3 - The MachineJourney To The Front End World - Part3 - The Machine
Journey To The Front End World - Part3 - The Machine
 
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSPhp Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
 
CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 Gulp
 
Journey To The Front End World - Part1 - The Skeleton
Journey To The Front End World - Part1 - The SkeletonJourney To The Front End World - Part1 - The Skeleton
Journey To The Front End World - Part1 - The Skeleton
 
Basic concept of computer network
Basic concept of computer networkBasic concept of computer network
Basic concept of computer network
 
Email ppt
Email pptEmail ppt
Email ppt
 

Similar a conjoon - The Open Source Webmail Client

solution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxsolution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxGoogleDeveloperStude22
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Free the Functions with Fn project!
Free the Functions with Fn project!Free the Functions with Fn project!
Free the Functions with Fn project!J On The Beach
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendJohn Head
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...NCCOMMS
 
The Fn Project: A Quick Introduction (December 2017)
The Fn Project: A Quick Introduction (December 2017)The Fn Project: A Quick Introduction (December 2017)
The Fn Project: A Quick Introduction (December 2017)Oracle Developers
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Runwesley chun
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Per Henrik Lausten
 
637b4894085c4_ppt.pptx
637b4894085c4_ppt.pptx637b4894085c4_ppt.pptx
637b4894085c4_ppt.pptxArjun123Bagri
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux HeritageOpersys inc.
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30Mahmoud Samir Fayed
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesBethmi Gunasekara
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31Mahmoud Samir Fayed
 
Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP ExtensionsMichaelBrunoLochemem
 
Shake that-fud-vrs5
Shake that-fud-vrs5Shake that-fud-vrs5
Shake that-fud-vrs5wimjongman
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformAndrew Ferrier
 
Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011Opersys inc.
 
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...Codemotion
 

Similar a conjoon - The Open Source Webmail Client (20)

solution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptxsolution Challenge design and flutter day.pptx
solution Challenge design and flutter day.pptx
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Free the Functions with Fn project!
Free the Functions with Fn project!Free the Functions with Fn project!
Free the Functions with Fn project!
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
 
The Fn Project: A Quick Introduction (December 2017)
The Fn Project: A Quick Introduction (December 2017)The Fn Project: A Quick Introduction (December 2017)
The Fn Project: A Quick Introduction (December 2017)
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
OpenNTF Essentials
OpenNTF EssentialsOpenNTF Essentials
OpenNTF Essentials
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
 
637b4894085c4_ppt.pptx
637b4894085c4_ppt.pptx637b4894085c4_ppt.pptx
637b4894085c4_ppt.pptx
 
Leveraging Android's Linux Heritage
Leveraging Android's Linux HeritageLeveraging Android's Linux Heritage
Leveraging Android's Linux Heritage
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30
 
Enterprise Griffon
Enterprise GriffonEnterprise Griffon
Enterprise Griffon
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31
 
Getting Started with PHP Extensions
Getting Started with PHP ExtensionsGetting Started with PHP Extensions
Getting Started with PHP Extensions
 
Shake that-fud-vrs5
Shake that-fud-vrs5Shake that-fud-vrs5
Shake that-fud-vrs5
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011Leveraging Android's Linux Heritage at ELC-E 2011
Leveraging Android's Linux Heritage at ELC-E 2011
 
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
Open Source Serverless: a practical view. - Gabriele Provinciali Luca Postacc...
 

Más de Thorsten Suckow-Homberg

Más de Thorsten Suckow-Homberg (6)

Javascript - The Good, the Bad and the Ugly
Javascript - The Good, the Bad and the UglyJavascript - The Good, the Bad and the Ugly
Javascript - The Good, the Bad and the Ugly
 
Introduction to ExtJs 5
Introduction to ExtJs 5Introduction to ExtJs 5
Introduction to ExtJs 5
 
Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4
 
Practices and obstacles in agile development
Practices and obstacles in agile developmentPractices and obstacles in agile development
Practices and obstacles in agile development
 
Webcon 2012 Mobile Development mit Sencha Touch
Webcon 2012  Mobile Development mit Sencha TouchWebcon 2012  Mobile Development mit Sencha Touch
Webcon 2012 Mobile Development mit Sencha Touch
 
Zend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJSZend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJS
 

Último

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 

Último (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

conjoon - The Open Source Webmail Client

  • 1. Einführung in Ext JS 4 conjoon The Open Source Webmail Client 2014-04-11 Zarafa HQ, Delft, NL
  • 2. ● 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
  • 3. What is this talk about ● Introduction to conjoon ● Some history ● For the Developer: ● Technology ● Architecture ● Challenges ● For the User: ● Features ● Live Demo
  • 5. 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)!
  • 6. 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
  • 8. 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
  • 9. 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)
  • 10. META
  • 11. 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
  • 12. conjoon – loc* * All metrics based on 0.1.6EAP1, excluding vendor code
  • 13. conjoon – Unit Tests* * All metrics based on 0.1.6EAP1, excluding vendor code
  • 15. 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...
  • 16. 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
  • 17. 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)
  • 18. conjoon – browsing Local/Remote Mail storages read email! groupware/email.item/get.email/format/json Application Action Set up strategies based on configuration * Cache * Decorators * Security manager * Formatter * ... → Service Server Protocol Impl „getMessage“ SecurityService FolderService RepositoryImpl Doctrine RemoteImpl LocalStorage SQL IMAP RemoteServer
  • 20. 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)
  • 21. 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
  • 22. 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)
  • 23.
  • 24. 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
  • 26. 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!