managing geneva's law courts, from cobol to perl
DESCRIPTION
Using Perl in a corporate environment for a mission-critical applicationTRANSCRIPT
01.08.2009 - Page 1
DépartementOffice
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Managing Geneva'sLaw courts
YAPC.:EU:::2009, Lisbon
DépartementOffice
01.08.2009 - Page 2
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Corporate Perl
• a testimony :– important project (budget, resources, duration)
– at the heart of the business (mission-critical)
– hundreds of users (soon thousands of users)
• agenda– business context, mission
– history, project context and organization
– architecture overview
– remarks, conclusion
01.08.2009 - Page 1
DépartementOffice
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Le Pouvoir judiciaire genevois
Geneva's law courts
01.08.2009 - Page 4
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Geneva : one of 26 Swiss cantons
• 15,88 km2
• 450'000 inhabitants (2nd Swiss agglomeration)
• assets 2008 : 17'912 M CHF
• expenses 2008 : 7'738 M CHF
1 CHF = 0.659 EUR = 0.917 USD
01.08.2009 - Page 5
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Geneva's law courts
• 37 courts (grouped in same location)
• 95 permanent judges (21 / 100'000 ha)
• 156 other judges (assisting, replacing)
• 346 juges prud'hommes
• 410 employees
• expenses 105 M CHF (1.26% of global Geneva budget)
For info
• 1'598 lawyers (355 / 100'000 ha)CH: 101FR : 76IT: 290LU: 288source: CEPEJ
CH: 16.5FR : 11.9IT : 11.0LU: 36.8
Judicial authorities
PenalDomain
CivilDomain
AdministrativeDomain
1st cantonalinstance
2nd cantonalinstance
Federal instance
International
Forbidden behaviors Litigations between privates (contracts, family, etc.)
Appeal against decisions by State administration
Les juridictions civiles
Justice de paix
Chambre de conciliation
TPI
Bureau de conciliation et commission pour l'égalité
entre hommes et femmes
Commission de conciliation en
matière de baux et loyers
Conciliation
Justice de Paix
Tribunal de première instance
Tribunal tutélaire
Justice de Paix
Tribunal des Prud'hommes
Tribunal des baux et loyers
Dernière instance : Cour de justice
Chambres civiles
Autorité de surveillance
Autorité de surveillance
Cour d'appel des
Prud'hommes
Chambre d'appel des
baux et loyers
< 8'000F > 8'000F
Concilié / jugement
Non concilié
Juridictions de jugement de 1ère instance
Ordinaires
Mesures tutélaires et de protection de l'enfant Baux et loyers
Succession Travail
01.08.2009 - Page 8
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Laws
PenalDomain
CivilDomain
AdministrativeDomain
Code pénal
Loi de procédure
Code civil
Loi de procédure
Lois fédérales
Loi de procédure Loi de procédure
Loi de procédure
Lois cantonales
Traités internationaux
Federal
Cantonaldecisions
2010 2010
Loi d'organisation des tribunaux
Internationalagreements
01.08.2009 - Page 9
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Some figures
Annual statistics of courts activities in 2008
Pénales Civiles Admin. Divers Totaux Initial cases 6'812 24'998 4'621 22'057 58'488 New cases 23'624 36'833 5'003 13'314 78'774 Total 30'436 61'831 9'624 35'371 137'262 Closed 24'317 38'867 5'021 9'095 77'300 Remaining cases 6'119 22'964 4'603 26'276 59'962 Exit rate 1.03 1.06 1.00 0.68 0.98
Other figures (2006)• More than 200’000 people summoned (more than 1'000 / day)
• 7'790'500 pages copied• 406'668 mails (paper)• 44,7 tons of recuperated paper
01.08.2009 - Page 10
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Information systems for Swiss courts
• 1st wave around 1980-85 : single applications– Tribunal fédéral, Genève, Zurich, Vaud
• years 1990s : 2 vendors take the rest of the market– client-server (Windows)
– moving towards 3-tiers architecture
– each court as a closed, independent entity
• 2005 : Geneva evaluates both vendors and decides not to take them– regression in functionalities
– complexity of data migration (different models)
– global switch very risky
01.08.2009 - Page 1
DépartementOffice
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Projects i-JUGE + Justice 2010
Main use cases
<<actor>>Case
management<<actor>>Archived
judgements
Employee
Judge
Case registration
Procedural acts
Judgement writing
Notifying and closing
Jurisprudence
<<actor>>phrase libraries
Mails
Archives
<<actor>>Office applic.
Statistics, reporting Administrator
Hearings
Financial management
<<actor>>Accounting
01.08.2009 - Page 13
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
History and future
• 1985: information system (Cobol + "All-in-1" office suite)
• 2002: 1st Perl applications (statistics, Web reporting)
• 2004: 1st major business application in Perl (judgements archive)
• 2005: vendor analysis, decision to rewrite the business application
• 2006: prototype "proof-of-concept" in Perl/Catalyst
• 2007: call for tenders
• 2008: development, stepwise introduction
• 2010: parameterizing new laws
• 2011: electronic data exchange
• 2013: database migration
• 2014: office migration
01.08.2009 - Page 14
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Goals
• replace old applications, obsolete– office (DEC All-in-1)
– business application (VMS / Cobol / DBMS Basis+)
• groupware
• electronic data exchange, open towards external partners
• adapt to important changes in law and organization
01.08.2009 - Page 15
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Principles
• Stepwise migration– functionality chunks
– old and new application live side-by-side on same database
• Web Application– inter-application links
– desktop/office integration
• Optimize user efficiency– special care for keyboard navigation
– DHTML / Ajax
• Sophisticated parameterization example
– 1 single app for various needs of 37 courts
01.08.2009 - Page 16
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Resources
• Budget (pluriannual)– i-JUGE : CHF 7'650'000
– Justice 2010 : CHF 4'140'000
• People– Strategic management : 8p.
– Operational management : 5p.
– Help desk, support, teaching : 6p.
– Analysis : 3p.
– Development & maintenance : 7p.
– Parameterizing, document production, Cobol maintenance : 2p.
– DBA, systems, exploitation : 5p.
Other projects Etat GE
integratedaccounting : 100 MCHF
humanresources : 60 MCHF
01.08.2009 - Page 1
DépartementOffice
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Technical aspects
01.08.2009 - Page 18
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Why Perl ?• positive experiences on former, less critical applications
• expressive power, concision – ( but not cryptic ! )
• productivity through available components (CPAN)– Template
– Catalyst
• modularity and abstraction mechanisms – multiparadigms ( imperative, object-oriented, functional )
• dynamic language– no compilation phase
– dynamic loading of components
– dynamic class / method creation
Old app• core in Cobol• scripts in "PRC"
01.08.2009 - Page 19
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Main components
DBI
DBIx::DataModel
Data::Domain
YAML
GE::J::Data::ConfigGE::J::ObjetMetier
Alien::GvaScript
Template
Catalyst
prototype.js
GE::J::Autorisation
GE::J::Action
JSON
DM-Web
DBD::JDBC
01.08.2009 - Page 20
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Metrics
985602088599Total
559118GvaScript
49499213Data::Domain
557514219DBIx::DM
824451854549Total
12213280tt2/js
21054727121DM Web
464154MainConfig
9522514Directory
25793015Autorisation
37395313Action
2515874260ObjetMetier
1628626242Data
LinesSubFilesModule
01.08.2009 - Page 21
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Tools• Editors
– Emacs– Vim
• Sources– subversion – Tortoise
• Documentation– Pod + Pod::POM::Web
• Distributions– mini-CPAN
• Directives– Perl Best Practices (D. Conway)– project guidelines (GE::Justice::Guidelines)
• Tasks– Request Tracker (RT)
• Groupware– Twiki
• Tests– Test::Harness / Test::More– [ Selenium ]
• Quality– [ Perl::Critic ]
• Searching– ack
01.08.2009 - Page 1
DépartementOffice
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Conclusions
01.08.2009 - Page 23
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Positive
• Perl– never any technological problem
– code clear and concise (mostly)
– good suite of tools
– productivity
– internal resistance disappeared
01.08.2009 - Page 24
Gestion des procédures judiciairesDIRECTION DES SYSTÈMES D'INFORMATION (DSI)
Negative
• sometimes hard to recruit– (but not impossible)
– some consultants refused to do any Perl ("would stain their CV" !)
– no Perl teaching in schools and universities
• heavy parameterization � hard to test– combinatorics, many possible cases
– complex data sets
• technical problems– still some install difficulties on Win32
– no native Perl driver for our DBMS; JDBC too slow