SlideShare a Scribd company logo
1 of 9
Download to read offline
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 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
 

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

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

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
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?
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
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
 

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