SlideShare a Scribd company logo
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

More Related Content

What's hot

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
PROIDEA
 
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 Testing
pvanderlei
 
Eclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricksEclipse 3.7 : Tips and tricks
Eclipse 3.7 : Tips and tricks
Tomasz 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 minutes
Cé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 & Toolkit
Samsung 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 Libra
Naci Dai
 
Kotlin for Android
Kotlin for AndroidKotlin for Android
Kotlin for Android
Han Yin
 

What's hot (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
 

Similar to 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 Haitzler
Ryo 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 Foundry
Andy Piper
 
EclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel EvolutionEclipseCon2010 - Painless Metamodel Evolution
EclipseCon2010 - Painless Metamodel Evolution
Marc 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 galaxy
glefur
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API Tooling
Chris Aniszczyk
 
OSGi Sticker Shock Eclipse Con 2010
OSGi Sticker Shock   Eclipse Con 2010OSGi Sticker Shock   Eclipse Con 2010
OSGi Sticker Shock Eclipse Con 2010
ericjohnson
 
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
Michael Vorburger
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdf
ShaiAlmog1
 
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
Steve 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 Nuremberg
Marcel Bruch
 
From Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse ModelingFrom Acceleo.org To Eclipse Modeling
From Acceleo.org To Eclipse Modeling
Cédric Brun
 
Graphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorfGraphiti indigo demo_camp_walldorf
Graphiti indigo demo_camp_walldorf
Karsten 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 Eclipse
Vineet Sinha
 

Similar to 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
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 

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