SlideShare a Scribd company logo
Who Took The Cookie From The Cookie Jar?



                                                                                       Olivier Thomann
                                                                                       IBM Ottawa Lab

                                                                                       March 25th, 2010




        Confidential | Date | Other Information, if necessary
      Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
                                                                                                     © 2002 IBM Corporation
Overview
    • API Tooling Features
    • API Use Reports
    • Future Work
    • Summary
    • Q&A




2
                             Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Tooling Features
    • Reports
          Illegal API use
          Binary incompatibility relative to a baseline
          Incorrect bundle version numbers
          Missing or malformed @since tags
          Leakage of non-APIs types inside APIs
          Invalid references inside system libraries
    • Tightly integrated toolset in the Eclipse SDK
        Currently limited to Plug-in projects/OSGi bundles
        Runs as a builder (auto-build, incremental and full builds)
        Immediate feedback as you develop and use APIs


3
                                              Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Specifying API Contracts
    • Use Javadoc tags
        E.g. @noimplement, @noextend, @noreference, @noinstantiate


    • Benefits
        Contracts live with the code for producers and consumers
        Content assist helps developers
        Available for projects that are not using 1.5 annotations
        Restrictions appear in published Javadoc APIs in a standard
         way
        Tools can process tags



4
                                           Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Example of Published API




5
                               Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Binary Compatibility
    • Evolving APIs such that they are backwards compatible
      with existing binaries
       http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs
       It is easy to get it wrong
       Now the tooling takes care of this
    • The user simply specifies an API baseline
       Generally this means pointing to the previous release




6
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Bundle Version Number Management
    • http://wiki.eclipse.org/index.php/Version_Numbering
    • The tooling takes care of letting the user know when
      the minor or major version of a bundle should be
      changed according to the following rules:
        A new API that is not a breaking change requires the minor
         version to be incremented
        A new API that is a breaking change requires the major
         version to be incremented
    • No support for the micro version for the initial release.
        Technically speaking, this version should be changed as
         soon as any modification is made in the source code:
         comment change, method body change,…

7
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Detecting API Leaks
    • This is a crucial task to maintain a good API
    • It detects the usage of non-API types exposed by API
      definitions through return types of methods, method
      parameter types, thrown exceptions and field’s type.
    • Having such leaks can make your API unusable since
      the internal types might not be accessible




8
                                    Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Filtering of API Problems
    • Each component can define a problem filters
    • The filters are used to remove/ignore known breakage
      from reports.
       For example, an API breakage has been approved by the
        PMC and you don’t want to get it reported for each build.




9
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
IDE and Build Process
     • Each feature is available from within the IDE or during
       the build process.
     • The IDE support is required to help the Eclipse
       developer while the code is written
     • The build process support is required to provide
       feedback during the Eclipse build. This also allows
       other projects to use it inside their builds.




10
                                       Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
IDE support
     • Addition of a new builder
     • Addition of a new nature
     • Creation of markers for each type of api problems:
       missing @since tags, binary compatibility issues, API
       usage, …
     • Addition of quick-fixes
     • Addition of code assist for Javadoc tag proposals




11
                                      Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Build support
     • Addition of new Ant tasks:
         Generation of an .api_description file
         Comparison of SDK drops: binary compatibility, API usage
          reports
     • Integration inside the Eclipse builds (headless mode)
     • Integration inside Ant build (no Eclipse running)




12
                                         Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Use Scans
     • Once the APIs are specified, the user needs to make
       sure that he/she is using them appropriately.
     • API use reports flag any kind of illegal API use:
         API use: reference to an API that is not supposed to be
          referenced, implementation of an interface that is not
          supposed to be implemented, ….
         The current toolset cannot detect use of in-lined members
     • A consequence of wrong illegal API usage is to
       increase the potential binary incompatibilities with
       future releases.


13
                                          Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Migration Reports
     • This can be generated once an API usage report is
       available
     • A migration report is generated from:
         an API use report
         A newer release of the API being used
     • It detects all possible migration issues that could occur
       between the version from which the API usage report
       has been generated and the current version
         Note: problems with constants will not be detected




14
                                          Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Demos of API Usage
     and Migration reports




15
                   Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Future Work




16
             Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Post 3.6 Work
     • Handling of package versioning
     • Support extended to support more than just bundles
         Pure Java™ projects
         Consider plug-in extension points
     • Global searching inside Eclipse projects
     • Improve integration with Rel-Eng build reporting
     • Determine compatible version range of required
       bundles
     • And what you might suggest


17
                                              Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Summary




18
           Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
API Tooling today
     • Help you to define your API restrictions
     • Keep a consistent and standard presentation of API
       restrictions
     • Detect binary breakage between a baseline and the
       current version
     • Detect illegal API usage and generate reports
     • Generate migration reports
     • Detect wrong @since tags and inconsistent bundle
       versioning
     • Detect API leaking
     • Detect illegal references inside BREEs

19
                                     Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Links
     • Wiki
         http://wiki.eclipse.org/Api_Tooling

     • Bugzilla
         https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE

     • Please send any questions you might have to the API tooling
       team:
          Olivier_Thomann@ca.ibm.com
          Darin_W right@ca.ibm.com
          Michael_Rennie@ca.ibm.com


20
                                            Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Q & A

21
        Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
Legal Notices
     • Copyright © IBM Corp., 2007-2010. All rights reserved. This presentation and the
       source code in it are made available under the EPL, v1.0.
     • Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in
       the United States, other countries, or both.
     • Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc.
     • IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation,
       in the United States, other countries or both.
     • Other company, product, or service names may be trademarks or service marks of
       others.
     • THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR
       INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO
       VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS
       PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES
       ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH
       INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR
       STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE




22
                                                     Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.

More Related Content

What's hot

How to design effective APIs
How to design effective APIsHow to design effective APIs
How to design effective APIs
Bansilal Haudakari
 
API Tooling in Eclipse
API Tooling in EclipseAPI Tooling in Eclipse
API Tooling in Eclipse
Chris Aniszczyk
 
iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluation
Serghei Moret
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
Moon Technolabs Pvt. Ltd.
 
API presentation
API presentationAPI presentation
API presentation
Carlos Justiniano
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12
Sanjeev Sharma
 
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos DeliveryBadoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
CodeFest
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Moon Technolabs Pvt. Ltd.
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year Edition
Lizzy Guido (she/her)
 
MOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaMOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in Java
Gergely Kis
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012
Alan Greenblatt
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
Gergely Kis
 
5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing
Perfecto by Perforce
 
Mobile Monitoring Best Practices
Mobile Monitoring Best PracticesMobile Monitoring Best Practices
Mobile Monitoring Best Practices
Lizzy Guido (she/her)
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric Floe
Eric Floe
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Deck
sschwarzhoff
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
Alaina Carter
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
Semaphore
 
Mobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and ChellengesMobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and Chellenges
Sanjeev Sharma
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++
Gilang Mentari Hamidy
 

What's hot (20)

How to design effective APIs
How to design effective APIsHow to design effective APIs
How to design effective APIs
 
API Tooling in Eclipse
API Tooling in EclipseAPI Tooling in Eclipse
API Tooling in Eclipse
 
iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluation
 
Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development Should you choose react native or swift for i os app development
Should you choose react native or swift for i os app development
 
API presentation
API presentationAPI presentation
API presentation
 
Dev ops for cross platform mobile modeveast 12
Dev ops for cross platform mobile   modeveast 12Dev ops for cross platform mobile   modeveast 12
Dev ops for cross platform mobile modeveast 12
 
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos DeliveryBadoo: Cross platform Mobile Test Automation and Continuos Delivery
Badoo: Cross platform Mobile Test Automation and Continuos Delivery
 
Xamarin vs. native script which one is the ideal cross-platform framework fo...
Xamarin vs. native script  which one is the ideal cross-platform framework fo...Xamarin vs. native script  which one is the ideal cross-platform framework fo...
Xamarin vs. native script which one is the ideal cross-platform framework fo...
 
What's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year EditionWhat's New with Perfecto? - Mid-Year Edition
What's New with Perfecto? - Mid-Year Edition
 
MOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in JavaMOE: Cross Platform Mobile Apps in Java
MOE: Cross Platform Mobile Apps in Java
 
Flex update - August, 2012
Flex update - August, 2012Flex update - August, 2012
Flex update - August, 2012
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 
5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing5 Mobile App Trends & What They Mean for Dev & Testing
5 Mobile App Trends & What They Mean for Dev & Testing
 
Mobile Monitoring Best Practices
Mobile Monitoring Best PracticesMobile Monitoring Best Practices
Mobile Monitoring Best Practices
 
Thinking tts - Eric Floe
Thinking tts - Eric FloeThinking tts - Eric Floe
Thinking tts - Eric Floe
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Deck
 
Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020Top 10 Automation Testing Tools in 2020
Top 10 Automation Testing Tools in 2020
 
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery ExplainediOS CI/CD: Continuous Integration and Continuous Delivery Explained
iOS CI/CD: Continuous Integration and Continuous Delivery Explained
 
Mobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and ChellengesMobile DevOps - Trends and Chellenges
Mobile DevOps - Trends and Chellenges
 
Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++Tizen Native Application Development with C/C++
Tizen Native Application Development with C/C++
 

Similar to Who Took The Cookie From The Cookie Jar?

P2 Introduction
P2 IntroductionP2 Introduction
P2 Introduction
irbull
 
EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)
moberhuber
 
Whats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ HargraveWhats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ Hargrave
mfrancis
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API Tooling
Chris Aniszczyk
 
How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind
Apigee | Google Cloud
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
Jason Bloomberg
 
Pain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re EverywherePain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re Everywhere
Nordic APIs
 
Building Your API for Longevity
Building Your API for LongevityBuilding Your API for Longevity
Building Your API for Longevity
MuleSoft
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
LibbySchulze
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
Aparna Sharma
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform Workspace
Tomasz Zarna
 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGi
Dan Selman
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
InfluxData
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
InfluxData
 
Bp209
Bp209Bp209
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioMuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
Jitendra Bafna
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
Aparna Sharma
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxData
 
Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience
confluent
 

Similar to Who Took The Cookie From The Cookie Jar? (20)

P2 Introduction
P2 IntroductionP2 Introduction
P2 Introduction
 
EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)EclipseCon 2010 API Design and Evolution (Tutorial)
EclipseCon 2010 API Design and Evolution (Tutorial)
 
Whats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ HargraveWhats Next for OSGi? - BJ Hargrave
Whats Next for OSGi? - BJ Hargrave
 
OSGi, Eclipse and API Tooling
OSGi, Eclipse and API ToolingOSGi, Eclipse and API Tooling
OSGi, Eclipse and API Tooling
 
How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind How to scale 1000s of API Integrations and not lose your mind
How to scale 1000s of API Integrations and not lose your mind
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
 
Pain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re EverywherePain Points In API Development? They’re Everywhere
Pain Points In API Development? They’re Everywhere
 
Building Your API for Longevity
Building Your API for LongevityBuilding Your API for Longevity
Building Your API for Longevity
 
Api clarity webinar
Api clarity webinarApi clarity webinar
Api clarity webinar
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform Workspace
 
Introduction to OSGi
Introduction to OSGiIntroduction to OSGi
Introduction to OSGi
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
 
Bp209
Bp209Bp209
Bp209
 
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.ioMuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
MuleSoft Surat Virtual Meetup#4 - Anypoint Monitoring and MuleSoft dataloader.io
 
Versioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdfVersioning Best Practices for API Architecture.pdf
Versioning Best Practices for API Architecture.pdf
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
 
Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience Simplifying the OpenAPI Development Experience
Simplifying the OpenAPI Development Experience
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 

Who Took The Cookie From The Cookie Jar?

  • 1. Who Took The Cookie From The Cookie Jar? Olivier Thomann IBM Ottawa Lab March 25th, 2010 Confidential | Date | Other Information, if necessary Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0. © 2002 IBM Corporation
  • 2. Overview • API Tooling Features • API Use Reports • Future Work • Summary • Q&A 2 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 3. API Tooling Features • Reports  Illegal API use  Binary incompatibility relative to a baseline  Incorrect bundle version numbers  Missing or malformed @since tags  Leakage of non-APIs types inside APIs  Invalid references inside system libraries • Tightly integrated toolset in the Eclipse SDK  Currently limited to Plug-in projects/OSGi bundles  Runs as a builder (auto-build, incremental and full builds)  Immediate feedback as you develop and use APIs 3 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 4. Specifying API Contracts • Use Javadoc tags  E.g. @noimplement, @noextend, @noreference, @noinstantiate • Benefits  Contracts live with the code for producers and consumers  Content assist helps developers  Available for projects that are not using 1.5 annotations  Restrictions appear in published Javadoc APIs in a standard way  Tools can process tags 4 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 5. Example of Published API 5 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 6. Binary Compatibility • Evolving APIs such that they are backwards compatible with existing binaries  http://wiki.eclipse.org/index.php/Evolving_Java-based_APIs  It is easy to get it wrong  Now the tooling takes care of this • The user simply specifies an API baseline  Generally this means pointing to the previous release 6 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 7. Bundle Version Number Management • http://wiki.eclipse.org/index.php/Version_Numbering • The tooling takes care of letting the user know when the minor or major version of a bundle should be changed according to the following rules:  A new API that is not a breaking change requires the minor version to be incremented  A new API that is a breaking change requires the major version to be incremented • No support for the micro version for the initial release.  Technically speaking, this version should be changed as soon as any modification is made in the source code: comment change, method body change,… 7 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 8. Detecting API Leaks • This is a crucial task to maintain a good API • It detects the usage of non-API types exposed by API definitions through return types of methods, method parameter types, thrown exceptions and field’s type. • Having such leaks can make your API unusable since the internal types might not be accessible 8 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 9. Filtering of API Problems • Each component can define a problem filters • The filters are used to remove/ignore known breakage from reports.  For example, an API breakage has been approved by the PMC and you don’t want to get it reported for each build. 9 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 10. IDE and Build Process • Each feature is available from within the IDE or during the build process. • The IDE support is required to help the Eclipse developer while the code is written • The build process support is required to provide feedback during the Eclipse build. This also allows other projects to use it inside their builds. 10 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 11. IDE support • Addition of a new builder • Addition of a new nature • Creation of markers for each type of api problems: missing @since tags, binary compatibility issues, API usage, … • Addition of quick-fixes • Addition of code assist for Javadoc tag proposals 11 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 12. Build support • Addition of new Ant tasks:  Generation of an .api_description file  Comparison of SDK drops: binary compatibility, API usage reports • Integration inside the Eclipse builds (headless mode) • Integration inside Ant build (no Eclipse running) 12 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 13. API Use Scans • Once the APIs are specified, the user needs to make sure that he/she is using them appropriately. • API use reports flag any kind of illegal API use:  API use: reference to an API that is not supposed to be referenced, implementation of an interface that is not supposed to be implemented, ….  The current toolset cannot detect use of in-lined members • A consequence of wrong illegal API usage is to increase the potential binary incompatibilities with future releases. 13 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 14. Migration Reports • This can be generated once an API usage report is available • A migration report is generated from:  an API use report  A newer release of the API being used • It detects all possible migration issues that could occur between the version from which the API usage report has been generated and the current version  Note: problems with constants will not be detected 14 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 15. Demos of API Usage and Migration reports 15 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 16. Future Work 16 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 17. Post 3.6 Work • Handling of package versioning • Support extended to support more than just bundles  Pure Java™ projects  Consider plug-in extension points • Global searching inside Eclipse projects • Improve integration with Rel-Eng build reporting • Determine compatible version range of required bundles • And what you might suggest 17 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 18. Summary 18 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 19. API Tooling today • Help you to define your API restrictions • Keep a consistent and standard presentation of API restrictions • Detect binary breakage between a baseline and the current version • Detect illegal API usage and generate reports • Generate migration reports • Detect wrong @since tags and inconsistent bundle versioning • Detect API leaking • Detect illegal references inside BREEs 19 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 20. Links • Wiki  http://wiki.eclipse.org/Api_Tooling • Bugzilla  https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE • Please send any questions you might have to the API tooling team:  Olivier_Thomann@ca.ibm.com  Darin_W right@ca.ibm.com  Michael_Rennie@ca.ibm.com 20 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 21. Q & A 21 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.
  • 22. Legal Notices • Copyright © IBM Corp., 2007-2010. All rights reserved. This presentation and the source code in it are made available under the EPL, v1.0. • Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. • Eclipse and the Eclipse logo are trademarks of Eclipse Foundation, Inc. • IBM and the IBM logo are trademarks or registered trademarks of IBM Corporation, in the United States, other countries or both. • Other company, product, or service names may be trademarks or service marks of others. • THE INFORMATION DISCUSSED IN THIS PRESENTATION IS PROVIDED FOR INFORMATIONAL PURPOSES ONLY. WHILE EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE INFORMATION, IT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, AND IBM SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, SUCH INFORMATION. ANY INFORMATION CONCERNING IBM'S PRODUCT PLANS OR STRATEGY IS SUBJECT TO CHANGE BY IBM WITHOUT NOTICE 22 Copy right © IBM Corp., 2010. All rights reserv ed. Licensed under EPL, v 1.0.