Post on 08-May-2015
From NeXTStep to WebOjectsBuilding a Free Open source ERP for French Higher Education
Aurélien MinetAssociation Cocktail
August 29, 2010, Montreal
Cocktail HistoryToday
Tomorrow
Agenda
• History• At the beginning• Evolution• The consortium• The association
• Today• Applications• Developpements• Deployment• Services
• Tomorrow• Evolve organization• Economical model & Community
From NeXTStep to WebOjects 1/50
Cocktail HistoryToday
Tomorrow
At the beginning
1992: Creation of La Rochelle University• all equipped with NEXT workstation :) ! (about 40)• as it cost more manager in chief ask why ?• easy to install and to use, network by default, integrated
colloborative work, global directory with NetInfo, veryadvanced GUI ...
From NeXTStep to WebOjects 2/50
Cocktail HistoryToday
Tomorrow
The start
1993: first year with students• a few applications are developed, Objective-C with DBKit
and Informix• installation of GEFICO: financial management and
accounting application developed on NEXT at Paris VIIIUniversity
• on the LAN 200 new PC but only running OpenStep
From NeXTStep to WebOjects 3/50
Cocktail HistoryToday
Tomorrow
With the growth of La Rochelle University
1993/1996:• First applications are developed on NEXT with DBkit then
EOF: Helpdesk, mail management, persons and accountmanagement
• Begining of the "repository" database organized around amain schema
• main schema Some HP PA712 (Risc) with HP-UX andOpenStep
From NeXTStep to WebOjects 4/50
Cocktail HistoryToday
Tomorrow
With the growth of La Rochelle University
1997:• JEFYCO V1 Objective-C / EOF + Oracle 7.3• Scolarix, HComp, Salle STU, GEDI (Client-Server), ....
From NeXTStep to WebOjects 5/50
Cocktail HistoryToday
Tomorrow
With the growth of La Rochelle University
1998:• Start using WebObjects 4.5• first HTML application (directory of the university)• firsts Macintosh with Mac OS 8
From NeXTStep to WebOjects 6/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
1999:• first distribution of JEFYCO
(first step towards what will become the consortium)• more PC with win95 and Linux
From NeXTStep to WebOjects 7/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
2001:• Gepeto(.app) Human Resources management• more PC with win95 and Linux
2002:• Developpement with WO 5.1• Deployement under OS X, Linux and Windows (and yes
under IIS ...)• WebGenie (actual “CMS“)
From NeXTStep to WebOjects 8/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
2003:• New major applications are developed with WO 5.2, for
example a payroll management application (Papaye)• Start of technological migrations of applications from WO
4.5.1 to 5.2 with JavaClient/Swing interfaces, for example aMissions management application (Kiwi)
• End of the FAX receiving application built with FaxViewer(8 NEXT workstations more than 10 years old) replaced bya WO 5.2 DMS application
• some NEXT workstations are maintained, in particular forNetInfo
• ServAut
From NeXTStep to WebOjects 9/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
2004:• Deployment of Java Client applications using Java Web
Start• Start Holidays Management and PayBox applications• SSO with CAS, Zap (a "dock" application in Swing)• 32 institutions use Cocktail applications (universities and
graduate schools)2005
• Formalized definition of the Cocktail Consortium• First WO applications server that I have to manage on my
own... ;)2006
• First tests of WO 5.3From NeXTStep to WebOjects 10/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
2007:• JEFYCO v2: n-tier architecture using HTML/Ajax/Swing• Deployment under WO 5.3• ManGUE (replaces Gepeto)• 54 members
2008• Java 1.5 becomes mandatory for some applications
(annotations...)• the Cocktail Consortium is headed by the university of
Provence
From NeXTStep to WebOjects 11/50
Cocktail HistoryToday
Tomorrow
Begining of the consortium
2009:• creation of the Cocktail Association
2010• Interface Builder files (NIB) of Java Client applications are
beeing moved to Netbeans (just the begining)• All the WO 5.3 applications are ”migrated” to Java 1.5
(minor fix)• the Association hired 2 news developers
From NeXTStep to WebOjects 12/50
Cocktail HistoryToday
Tomorrow
Association Coctail is:
• a non-profitable organization (somewhat like 501c in USA)• with more than 80 members• management and administrative services in Marseille (3)
From NeXTStep to WebOjects 13/50
Cocktail HistoryToday
Tomorrow
Association Coctail is:
• 3 developer teams:• La Rochelle (8+1)• Toulouse (2)• Marseille (1+2)
• 2 Freelances (E. Geze in Spain, C. Buttin near Toulouse)• contributors:
• Mulhouse (1)• Lyon (1)• Pau (1)• Nîmes (1)• Nouméa (1)• maybe more Pau Troyes Toulouse... :)
We also colaborate with Intelcore (Christian Trotobas)
From NeXTStep to WebOjects 14/50
Cocktail HistoryToday
Tomorrow
Members are all around the world
From NeXTStep to WebOjects 15/50
Cocktail HistoryToday
Tomorrow
Today Cocktail ERP provides:
• Financial management and accounting• Scholarity management• Human resources and payroll management• Wealth management• Reasearch management (administrative part)• Decision-making and streeing tools• Digital workspace elements for institutions portal
All the applications are built on a single database
From NeXTStep to WebOjects 16/50
Cocktail HistoryToday
Tomorrow
Financial management and accounting
• Abricot (JavaClient): Mandate bills, outstand invoice• Amande (JC): order form control/buying service• Bidasse (JC): budget• Carambole (Ajax): pre-order form and order form• Catalogue (JC): catalogs from procurment contracts• Cocolight (Ajax) / Coconuts (JC): agreements, contracts• JefyAdmin (JC): rights management, grants on budget lines• JefyCopilot (JC): reporting (Excel pivot tables)• MarchesPub (HTML+JC): submiting bids / calls for tender• Maracuja (JC): accounting• Pie (JC) : commercial services management• PieWebService (Ajax): "online store"• Sapics (JC): Procurement contracts mangament• Situations (JC): reporting (pdf/xls)
From NeXTStep to WebOjects 17/50
Cocktail HistoryToday
Tomorrow
Scholarity management
• Preinscription (Ajax): matriculates online• Scolpedagogie (.app): courses, notes and results• HComp (.app): teaching loads• Contrat de Licence (Ajax): educational charters for the
bachelor degree, objectives of the student.• SaphaRI (JC): international exchange of students, mobility
and associated scholarship management• IPWeb (HTML): pedagogical registration• Griotte (Ajax): company internships, work experience
placement management• TrombiWeb (HTML): rogue’s gallery of students groups• GroupScol (JC): create and manage groups of students
From NeXTStep to WebOjects 18/50
Cocktail HistoryToday
Tomorrow
Wealth management
• Corossol (JC): asset, estate, inventory management• G-spot (Ajax): classroom, room management
(going to replace SalleSTU.app)• GPC (Ajax): stock management of chemicals• ParcMatos (.app): computer asset management: inventory,
lifecycle ("abandonware" / dead application)
From NeXTStep to WebOjects 19/50
Cocktail HistoryToday
Tomorrow
Human resources and payroll management
• Papaye (JC): payrool (for non-state employees)• Kaki (JC): importation of payrool data of General Treasury• RecrutATER (HTML): recruitment of temporary teaching
and research assistants, front and back office• Mangue (JC): career, employment, assignment, legal
leaves, sick leaves management• Feve (HTML): job description• HAmAC/Congés (HTML/Ajax): time-off, holidays, absences
From NeXTStep to WebOjects 20/50
Cocktail HistoryToday
Tomorrow
Research management
• Sangria (Ajax): fundings, contracts, publications, doctoralschools,laboratories, research units management
• Physalis (JC): third cycle studies/PhD thesis management
From NeXTStep to WebOjects 21/50
Cocktail HistoryToday
Tomorrow
Digital workspace elements for institutions portals
• ServeurDePlanning ("ws"): aggregate events in an ics file• Profiler (Ajax): change password, personnal information ...• Directory (Ajax): Yellow Pages and White Pages• Spooler (Web + C deamon): print quota• SuperPlan (JC): management of schedules for individuals,
groups, (class)room, articles, training (lessons) and exams• Guichet (HTML/Ajax): request tracker• Enquêtes (HTML): survey tool• GEDI (JC)/Corail (HTML): document/content management• WebGenie (HTML): "CMS output"• WODownload (HTML): files/documents downloading• Peanuts (HTML): create temporary,visitor,wifi accounts• AGrhum (Ajax): manages legal and physical persons,
groups, accounts (will replace peanuts and annuaire.app)
From NeXTStep to WebOjects 22/50
Cocktail HistoryToday
Tomorrow
Other applications around
• Paybox (HTML + web services): gateway to the onlinepayment service Paybox
• SIX (HTML + RMI): pdf generator based on XSLT• GEDFS (HTML + RMI): file storage application• SAM (pure java): plugins for processing emails by using
direct action within WebObjects applications• WOLive (pure java): ask the WOTaskd to run apps and
check if they are responsive (check if they can do anythingbut send WOLifeBeat)
• ServAut (HTML): provide direct actions for bypassingconnection dictionnaries in the index.eomodeld
From NeXTStep to WebOjects 23/50
Cocktail HistoryToday
Tomorrow
Cocktail ERP
• nearly fifty applications: 20 JC, 26 HTML/Ajax, .app 6+• almost half are under heavy developpement• about a dozen aren’t maintenend but are still beeing used• this software is governed by the CeCILL V2 License under
French law ( http://www.cecill.info )• all of these applications are centered round a single
repository: 1 database
From NeXTStep to WebOjects 24/50
Cocktail HistoryToday
Tomorrow
Repository Approach
A single database:• no silo effect: data are not partitioned/scattered• immediate correlation of data, data are consolidated• no duplicate data so no need to synchronize data• sharing classifications (country code ...)
From NeXTStep to WebOjects 25/50
Cocktail HistoryToday
Tomorrow
Repository Approach
• 50 shemas• 2500 tables
From NeXTStep to WebOjects 26/50
Cocktail HistoryToday
Tomorrow
Netbeans Migration
JavaClient applications are build applying themodel-view-controller paradigm :
• EOF frameworks are used for the model• JavaClient frameworks are used for the controllers• JavaClient interface frameworks and Interface Builder were
used to draw the interface
From NeXTStep to WebOjects 27/50
Cocktail HistoryToday
Tomorrow
Netbeans Migration
Major Cocktail applications are based on the JavaClienttechnology
• thousand of interfaces drawn with Interface Builder and theEOF palette
• Leopard :• Interface Builder doesn’t support anymore the EOF palette• The JavaClient frameworks are always available in
WebObjects
Several solutions were approached to minimize the evolution ofthe applications.As JavaClient interfaces are based on SwingUsing Netbeans as an "interface builder" appeared as the bestsolution : it generates an interface file as Swing code.
From NeXTStep to WebOjects 28/50
Cocktail HistoryToday
Tomorrow
Netbeans Migration
Development of several tools :• Netbeans palette of graphical objects for WebObjects
• CODisplayGroup• CODisplayGroupDetail
•
• Customized dialogs to configure tables, display groups...• Netbeans Assistant to create the skeleton of interfaces files• com.webobjects.eoapplication.EOArchive subclassed to
keep available the whole JavaClient application
From NeXTStep to WebOjects 29/50
Cocktail HistoryToday
Tomorrow
Netbeans Migration
Migrating an application :• Interface files are drawn with Netbeans by dragging
WebObjects graphical elements from the Netbeans palette• Associations between the interface elements and the
controller or the display groups are established usingNetbeans Properties Inspector (same as Interface BuilderInspector)
3 files are generated :• _EOArchive and _EOInterface used by WebObjects: they
replace Interface Builder files and are compiled within theapplication
• .form : XML data used by Netbeans to draw the interface
From NeXTStep to WebOjects 30/50
Cocktail HistoryToday
Tomorrow
Netbeans Migration
Controllers and model classes are not modified
The application is recompiled. That’s it !!
will be available soon as open source software (CeCILL V2Licence) with a JavaClient presentation and a tutorial included
To know more, contact Christine Buttin:christine.buttin@cocktail.org
From NeXTStep to WebOjects 31/50
Cocktail HistoryToday
Tomorrow
Frameworks
old ones: CRI*• CRIWebApp:
Models the basic behavior of a Cocktail ApplicationContains utility classes to be used by all the applications
• CRIWebExt:WebObjects components to be shared by all the HML andAjax Cocktail applications
From NeXTStep to WebOjects 32/50
Cocktail HistoryToday
Tomorrow
Frameworks
new ones: FwkCktl• FwkCktlWebApp:
inherits WOnder stuff (ERXApplication, ERXSession andERXDirectAction)
• FwkCktlAjaxWebExt and FwkCktlPersonneGUIAjax,FwkCktlGFCGUIAjax
• FwkCktlThemes• FwkCktlJavaClientSupport
From NeXTStep to WebOjects 33/50
Cocktail HistoryToday
Tomorrow
Frameworks
• FwkCktlReporting: Jasper(jrxml,jrxls), OOo (odt,calc)• FwkCktlSync: running Tallend jobs, ex: synchronise data
between DB and LDAP (OSS ETL http://www.talend.com)• Evenement (ApplicationEvenement): Quartz based
framework for scheduling task and an application like cron.• FwkCktlB2b: integration of external online store of supplier
under procurement contract (only for Dell)
From NeXTStep to WebOjects 34/50
Cocktail HistoryToday
Tomorrow
Deployment
Installating WO• make sure that 1.5 Sun JRE/JDK is installed (and not the
GCJ or OpenJDK)• untar in some directory an archive containing Library and
Local• create a group and a user• change permision on logs and Configuration directory,
make sure the rest is readble• change the SpawnOfWotaskd.sh• install init scripts, configure values (NEXT_ROOT, default
ports, JavaMonitor name)
From NeXTStep to WebOjects 35/50
Cocktail HistoryToday
Tomorrow
Deployment
SpawnOfWotaskd.sh modifications:• output of stdout and stderr to a file• export shell variable like TZ or LANG• setting umask (make the group owning the created files)• change or add command line arguments• test command ligne arguements too (existence and value)
i f [[ ‘echo $CMD | egrep ’Djava.awt. headless ’ |wc - l ‘ == "0" ]] ; thenCMD=‘echo $CMD | sed ’s / -WOPort/ -Djava.awt. headless=true -WOPort/ ’ ‘
f i
From NeXTStep to WebOjects 36/50
Cocktail HistoryToday
Tomorrow
Deployment
• classic deployment is used• for JavaClient static jnlp is used (not the one from the
application)(no need to changeResources/JavaClient.wo/JavaClient.wod)
• for deploying quickly 20 or more application:mk_SiteConfig.sh
• for quickly configuring lots of application: command linetools find for feeding a loop and sed
• using shell tools for management and solving problems:xargs awk sed ps lsof grep strace
From NeXTStep to WebOjects 37/50
Cocktail HistoryToday
Tomorrow
Deployment HA
In some case more than 100 applications need to be deployedand some of them are critical.
From NeXTStep to WebOjects 38/50
Cocktail HistoryToday
Tomorrow
several NEXT_ROOTs
For production, testing, user sanbox ... you may need severalNEXT_ROOTs
From NeXTStep to WebOjects 39/50
Cocktail HistoryToday
Tomorrow
several NEXT_ROOTs
rules for cohabitations each uses• a different port range if not WOHOst is mandatory• a different user (group)
From NeXTStep to WebOjects 40/50
Cocktail HistoryToday
Tomorrow
ServAut
special application with two aims:• authenticating users• providing connection information
(jdbc url or instance name, login, password)
From NeXTStep to WebOjects 41/50
Cocktail HistoryToday
Tomorrow
mod_WebObject
refactoring the way it is build (just for Apache 2.2)• all files in one directory• just one command line using APache eXetenSion tools
$APXS -a -c -Wc,"-O2 -fPIC -fpic-DSINGLE_THREADED_ADAPTOR-DFORKING_WEBSERVER -DAPACHE " -Wlmod_WebObjects.c appcfg.c ...
• add -i for automatic installation of mod_WebObject.so inapache libraries directory
(configuring apache still be needed)
From NeXTStep to WebOjects 42/50
Cocktail HistoryToday
Tomorrow
Services
• server installation (OS, WO, Oracle)• applications installation / deployments• applications setup and special configuration• project management• support/hotline• project management• assist prime contractor• consulting• trainings
From NeXTStep to WebOjects 43/50
Cocktail HistoryToday
Tomorrow
trainings
• dedicated to end users and focused on learning theCocktail applications
• for IT to learn how to install WebObjects and deployapplications
• for developers to learn WebObjects, Ajax or technologiesused within the Cocktail applications
From NeXTStep to WebOjects 44/50
Cocktail HistoryToday
Tomorrow
Seminars
Developers meetings are organized at least 3 times a year:• Feburary 2010: Paris• May 2010: Bordeaux• September 2010: Nîmes
During 3 days we:• share knowledge• present recent work• explain how to use last frameworks• discuss about technical options, design ..
From NeXTStep to WebOjects 45/50
Cocktail HistoryToday
Tomorrow
Tomorrow
Evolution of the software edition organization• distribution industrialization / CI with Hudson• database metadata management (patch sql: DDL DML)• reusable components: new generation of frameworks• better GUI• Support 2 databases:
• Oracle (the initial and proprietary database)• PostgreSQL (open source database, lower tco)
• Update industrialization of applications and databaseschemas
• QA: guide for packaging, standards, ,charters, more tests• Internationalization / multilingual• switching to WO 5.4 ?
From NeXTStep to WebOjects 46/50
Cocktail HistoryToday
Tomorrow
Tomorrow
Offer more services:• support the implementation of ERP in an institution "from
the plug to the end user"• specific development ( new workflows functionalities )• integration in an existing information system• On-demand software or software as a service (SaaS)
From NeXTStep to WebOjects 47/50
Cocktail HistoryToday
Tomorrow
Tomorrow
Stabilize the business model and expand the community• stabilize the membership fee and support fee• having more developers ;)• having more "business" managers to define specifications• ansering the foreign instutions needs with the help of the
AUF (Agence Universitaire de la Francophoniehttp://www.auf.org )
From NeXTStep to WebOjects 48/50
Cocktail HistoryToday
Tomorrow
Resources
• Official WebSite: http://www.cocktail.org(warning HTML 3.0 website )
• Source code available: http://svn.cru.fr/cocktail(warning is not really tidy)
• Developers pages: http://sites.google.com/a/cocktail.org/developpeurs/frameworks-cocktail
• Javadoc: http://www.cocktail.org/doc/devel/javadoc/fwkcktlwebapp/20100419/index.html
(sorry most if not all is in french)
From NeXTStep to WebOjects 49/50
Cocktail HistoryToday
Tomorrow
Questions
Q&A
From NeXTStep to WebOjects 50/50