SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
GEF SVG export in JWT
A newcomer’s rocky ride to Eclipse

Eclipse DemoCamp Grenoble 2012




                            Yoann Rodière (Open Wide, FR)
                         thanks to Marc Dutoo (Open Wide, FR)


             Confidential | Date | Other Information, if necessary
                                                                     © 2002 IBM Corporation
SVG export in JWT

                • Bug #327563 (since 2010)

                • Why export?
                        – JWT (Java Workflow Tooling) is all about modeling
                        – Modeling is all about communication
                        – Diagram export, i.e. communicating one's work, is
                          unavoidable!
                • Why SVG?
                        – (besides throwing a poor newbie in heavily mined territory)
                        – Indeed, JWT already has image export : PNG, JPG
                        – … but tell that to an image professional and he'll laugh!
                        – Users need a scalable, “zoom-able”, vector format



Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0   2
License headaches ahead

                • Obviously, we'll need a library
                • Unfortunately, no such feature in GEF
                • Image Export Plugin - Thomas Mayer
                        – Supports PDF, EPS, … SVG!
                        – GPL'd

       “The Eclipse Public License is similar to the Common Public License”
       “[...] its weak copyleft and choice of law clause make it incompatible with the
       GNU GPL”
                                                                      Copyright © 2011 Free Software Foundation, Inc.
                                                         http://www.gnu.org/licenses/license-list.html#SoftwareLicenses

        Well, there's always a way to argue, but...


                                       Lawyers are dangerous!

Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0                                     3
And now what?

                • Let's get back to basics
                • How to create SVG files?
                        – Apache Batik
                        – Already in Orbit! => Faster CQ re-approval by the IP team


                • Problem: Batik targets AWT
                        – Eclipse => SWT
                        – We need a bridge!




Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0   4
Software from the back of the attic

                • Holongate: a bridge between Java2D (AWT) and
                  Draw2D (SWT)
                       – Not in Orbit
                       – Some strange JNI, system-dependent code in their repo
                       – Old
                          • Started in 2004
                          • Last updated in 2007, Eclipse 3.1 (is it still alive?)


                 What's unknown is dangerous!
                       – Lawyers ahead!
                       – Compatibility issues (OS, Eclipse 3.8 vs 3.1)
                       – Old dependencies
                          • Obsolete versions?
                          • Version conflicts?
                       – … with Juno release ever closer (and IP Team ever busier)!




Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0   5
Getting around APIs (1)

                • Another bridge: GMF (ever heard about
                  GMF?)
                        – Class GraphicsToGraphics2DAdaptor
                        – But...
                           • Aims at implementing SVG export for GMF only
                           • Therefore internal... how selfish!




                 What you can't control is dangerous!
                        – Relying on private APIs is relying on chance
                        – Know about Murphy's Law? ;)
                           • As Einstein said, “**Yearly releases** don't play dice”



Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0   6
Getting around APIs (2)

                • So, game over?
                • No! We could go the strict, right way...
                       – Use the public API where it exposes SVG export services
                       – Which would mean using GMF and not only GEF
                • … or the quick, practical way
                       – Copy/paste what we need
                       – Add comments to point to the original code
                       – Keep all copyright notices
                       – File a CQ

                 What does not change... is quite safe!
                       – Code is known & already running
                       – No API change to fear
                       – Complete control over the code to fix bugs
                          • e.g. implement unsupported operations such as setTextAntialias
                       – Switch to GMF API is straightforward if the classes are ever made public



Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0               7
What's next?

                • Clean up the mess
                        – “Solution” doesn't mean “definitive”; ours was quick but not
                          perfect
                        – Assess Holongate (now we've got the time)
                        – Ask GMF for an API extension


                • Provide other exports...?
                        – See later with Marc ;)




Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0    8
Conclusion

                • For a junior Eclipse contributor
                        – Beware of licenses
                        – Beware of unknown software
                        – Beware of unstable APIs (internal... or not)
                        – Believe in iterative development ;)


                • For a senior Eclipse contributor
                        – Beware of junior Eclipse contributors!




Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0   9

Weitere ähnliche Inhalte

Was ist angesagt?

JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachPROIDEA
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
OSGi Versioning And Testing
OSGi Versioning And TestingOSGi Versioning And Testing
OSGi Versioning And Testingpvanderlei
 
Eclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricksEclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricksTomasz Zarna
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !Cédric Brun
 
SOLID -Clean Code For Mere Mortals
SOLID -Clean Code For Mere MortalsSOLID -Clean Code For Mere Mortals
SOLID -Clean Code For Mere MortalsWekoslav Stefanovski
 
15 EMF projects in 25 minutes
15 EMF projects in 25 minutes15 EMF projects in 25 minutes
15 EMF projects in 25 minutesCédric Brun
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitSamsung Open Source Group
 
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse LibraEclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse LibraNaci Dai
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for AndroidHan Yin
 

Was ist angesagt? (12)

JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
 
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
Scala Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
OSGi Versioning And Testing
OSGi Versioning And TestingOSGi Versioning And Testing
OSGi Versioning And Testing
 
Eclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricksEclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricks
 
OpenStack Extensions
OpenStack ExtensionsOpenStack Extensions
OpenStack Extensions
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !
 
SOLID -Clean Code For Mere Mortals
SOLID -Clean Code For Mere MortalsSOLID -Clean Code For Mere Mortals
SOLID -Clean Code For Mere Mortals
 
15 EMF projects in 25 minutes
15 EMF projects in 25 minutes15 EMF projects in 25 minutes
15 EMF projects in 25 minutes
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & Toolkit
 
9 cm604.1
9 cm604.19 cm604.1
9 cm604.1
 
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse LibraEclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for Android
 

Ähnlich wie GEF SVG export in JWT: a newcomer’s rocky ride to Eclipse

Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Nuxeo
 
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetRationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetParis Open Source Summit
 
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten HaitzlerEFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten HaitzlerRyo Jin
 
Common Client Rich Client Platforms
Common Client   Rich Client PlatformsCommon Client   Rich Client Platforms
Common Client Rich Client PlatformsGeertjan Wielenga
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?Miles Sabin
 
Run your Java code on Cloud Foundry
Run your Java code on Cloud FoundryRun your Java code on Cloud Foundry
Run your Java code on Cloud FoundryAndy Piper
 
EclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionEclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionMarc Dutoo
 
Hithhiker guide to eclipse presentation frameworks galaxy
Hithhiker guide to eclipse presentation frameworks galaxyHithhiker guide to eclipse presentation frameworks galaxy
Hithhiker guide to eclipse presentation frameworks galaxyglefur
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingChris Aniszczyk
 
OSGi Sticker Shock Eclipse Con 2010
OSGi Sticker Shock   Eclipse Con 2010OSGi Sticker Shock   Eclipse Con 2010
OSGi Sticker Shock Eclipse Con 2010ericjohnson
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansMichael Vorburger
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfShaiAlmog1
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedSteve Dalton
 
Eclipsecon 2010 - Scala Support in Eclipse
Eclipsecon 2010 - Scala Support in EclipseEclipsecon 2010 - Scala Support in Eclipse
Eclipsecon 2010 - Scala Support in EclipseMiles Sabin
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 NurembergMarcel Bruch
 
From Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse ModelingFrom Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse ModelingCédric Brun
 
Graphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorfGraphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorfKarsten Schmidt
 
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Michał Ćmil
 
Conquering Gef Part2: Building graphical web-apps with Eclipse
Conquering Gef Part2: Building graphical web-apps with EclipseConquering Gef Part2: Building graphical web-apps with Eclipse
Conquering Gef Part2: Building graphical web-apps with EclipseVineet Sinha
 

Ähnlich wie GEF SVG export in JWT: a newcomer’s rocky ride to Eclipse (20)

Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
 
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinetRationalize Android Development with StAnD - Clement Escoffier, akquinet
Rationalize Android Development with StAnD - Clement Escoffier, akquinet
 
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten HaitzlerEFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten Haitzler
 
Common Client Rich Client Platforms
Common Client   Rich Client PlatformsCommon Client   Rich Client Platforms
Common Client Rich Client Platforms
 
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
JVM Languages Support in Eclipse - Monkey-patching the JDT for fun and profit?
 
Run your Java code on Cloud Foundry
Run your Java code on Cloud FoundryRun your Java code on Cloud Foundry
Run your Java code on Cloud Foundry
 
EclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionEclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel Evolution
 
Swt qt ese2010
Swt qt ese2010Swt qt ese2010
Swt qt ese2010
 
Hithhiker guide to eclipse presentation frameworks galaxy
Hithhiker guide to eclipse presentation frameworks galaxyHithhiker guide to eclipse presentation frameworks galaxy
Hithhiker guide to eclipse presentation frameworks galaxy
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API Tooling
 
OSGi Sticker Shock Eclipse Con 2010
OSGi Sticker Shock   Eclipse Con 2010OSGi Sticker Shock   Eclipse Con 2010
OSGi Sticker Shock Eclipse Con 2010
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdf
 
Java: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggeratedJava: Rumours of my demise are greatly exaggerated
Java: Rumours of my demise are greatly exaggerated
 
Eclipsecon 2010 - Scala Support in Eclipse
Eclipsecon 2010 - Scala Support in EclipseEclipsecon 2010 - Scala Support in Eclipse
Eclipsecon 2010 - Scala Support in Eclipse
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 Nuremberg
 
From Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse ModelingFrom Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse Modeling
 
Graphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorfGraphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorf
 
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
 
Conquering Gef Part2: Building graphical web-apps with Eclipse
Conquering Gef Part2: Building graphical web-apps with EclipseConquering Gef Part2: Building graphical web-apps with Eclipse
Conquering Gef Part2: Building graphical web-apps with Eclipse
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

GEF SVG export in JWT: a newcomer’s rocky ride to Eclipse

  • 1. GEF SVG export in JWT A newcomer’s rocky ride to Eclipse Eclipse DemoCamp Grenoble 2012 Yoann Rodière (Open Wide, FR) thanks to Marc Dutoo (Open Wide, FR) Confidential | Date | Other Information, if necessary © 2002 IBM Corporation
  • 2. SVG export in JWT • Bug #327563 (since 2010) • Why export? – JWT (Java Workflow Tooling) is all about modeling – Modeling is all about communication – Diagram export, i.e. communicating one's work, is unavoidable! • Why SVG? – (besides throwing a poor newbie in heavily mined territory) – Indeed, JWT already has image export : PNG, JPG – … but tell that to an image professional and he'll laugh! – Users need a scalable, “zoom-able”, vector format Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 2
  • 3. License headaches ahead • Obviously, we'll need a library • Unfortunately, no such feature in GEF • Image Export Plugin - Thomas Mayer – Supports PDF, EPS, … SVG! – GPL'd “The Eclipse Public License is similar to the Common Public License” “[...] its weak copyleft and choice of law clause make it incompatible with the GNU GPL” Copyright © 2011 Free Software Foundation, Inc. http://www.gnu.org/licenses/license-list.html#SoftwareLicenses Well, there's always a way to argue, but... Lawyers are dangerous! Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 3
  • 4. And now what? • Let's get back to basics • How to create SVG files? – Apache Batik – Already in Orbit! => Faster CQ re-approval by the IP team • Problem: Batik targets AWT – Eclipse => SWT – We need a bridge! Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 4
  • 5. Software from the back of the attic • Holongate: a bridge between Java2D (AWT) and Draw2D (SWT) – Not in Orbit – Some strange JNI, system-dependent code in their repo – Old • Started in 2004 • Last updated in 2007, Eclipse 3.1 (is it still alive?) What's unknown is dangerous! – Lawyers ahead! – Compatibility issues (OS, Eclipse 3.8 vs 3.1) – Old dependencies • Obsolete versions? • Version conflicts? – … with Juno release ever closer (and IP Team ever busier)! Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 5
  • 6. Getting around APIs (1) • Another bridge: GMF (ever heard about GMF?) – Class GraphicsToGraphics2DAdaptor – But... • Aims at implementing SVG export for GMF only • Therefore internal... how selfish! What you can't control is dangerous! – Relying on private APIs is relying on chance – Know about Murphy's Law? ;) • As Einstein said, “**Yearly releases** don't play dice” Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 6
  • 7. Getting around APIs (2) • So, game over? • No! We could go the strict, right way... – Use the public API where it exposes SVG export services – Which would mean using GMF and not only GEF • … or the quick, practical way – Copy/paste what we need – Add comments to point to the original code – Keep all copyright notices – File a CQ What does not change... is quite safe! – Code is known & already running – No API change to fear – Complete control over the code to fix bugs • e.g. implement unsupported operations such as setTextAntialias – Switch to GMF API is straightforward if the classes are ever made public Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 7
  • 8. What's next? • Clean up the mess – “Solution” doesn't mean “definitive”; ours was quick but not perfect – Assess Holongate (now we've got the time) – Ask GMF for an API extension • Provide other exports...? – See later with Marc ;) Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 8
  • 9. Conclusion • For a junior Eclipse contributor – Beware of licenses – Beware of unknown software – Beware of unstable APIs (internal... or not) – Believe in iterative development ;) • For a senior Eclipse contributor – Beware of junior Eclipse contributors! Eclipse Foundation, Inc. | © 2012 by the Open Wide. Made available under the EPL v1.0 9