SlideShare a Scribd company logo
1 Copyright ©2014 CollabNet, Inc. All Rights Reserved.ENTERPRISE CLOUD DEVELOPMENTENTERPRISE CLOUD DEVELOPMENT
Guiding Diffy to the Enterprise land
Dariusz Luksza
Eryk Szymanski
CollabNet Engineering, Potsdam, Germany
2 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
First TeamForge Gerrit integration was hacked into
2.1 – this means close to zero possibility of update
●
About 1,5 year ago we started our journey …
●
So we started from scratch with 2.6 and its plugin
architecture
●
We had only three requirements:
– Keep same behaviour and API as we had in 2.1
– Keep same performance characteristics
– Make it easy to update to newest upstream version
3 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
Few stats about our biggest plugin:
– cat `find src/main/java -name "*.java"` | wc -l
11962
– du -sh src/main/java
828K src/main/java
●
This is actually plugin responsible for
synchronization with TeamForge
4 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
Expectations
Reality
The Road From 2.1 to 2.6
5 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
The Road From 2.1 to 2.6
Reality
6 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
The Road From 2.1 to 2.6
7 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
Obstacle 1
missing extension points
8 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
We are contributing back all our modifications to Gerrit:
– Initial support for Web UI plugins (#38330, #38331, #38332),
– Fix binding of @Listen annotated extensions points in HTTP and SSH module
(#39293),
– Bump GWT to 2.5.0 version and fix connected issues (#39540, #39610 #38962),
– Prevent from deleting refs/changes/ (#40385),
– Fix GitWeb Caching (#41360),
– Add additional context for group name suggester API (#40123),
– Initial work on making JavaSript plugins architecture more pleasant for JS
developers (#39270),
– Allow include external group into internal one and set external group as a owner
of internal one (#46840, #47020),
– Add --list-plugins and --install-pliugin parameters to init step (#47818, #47819),
– Fix ChangeMergedEvent parameter for merged patch sets (#48221)
– Improvements to logging subsystem (#51890, #52164)
– Make plugin servlet's context path authorization aware (#51192)
– Get rid of JdbcSQLException while numbers are read from cache (#51193)
9 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
But still some of our core contributions are in the
review:
– Authentication extension point
– Secure store extension point
– Commit verification fast path
●
So what?
– Instead of investing our time in new features (like Angular-
Gerrit) we are burning our cycles rebasing, resolving conflicts
and testing above functionalities with current stable branch
10 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
Obstacle 2
redeploy & friends
11 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
Each plugin runs in separate ClassLoader
●
If one of your libraries is not behaving well (eg. is
not cleaning thread locals like Apache Axis does)
you will get out of PermGen space after 5th or 10th
deploy
●
Solution? Simple, always restart gerrit before next
deploy
●
This work for us for quite long time... since our 4th
plugin appears... we loaded Axis (and other
dependencies) fourth time and we need to change
container.javaOptions to increase PermGen size
because Gerrit was unable to load all plugins
12 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
What is more, separate ClassLoaders for each
plugin means NO class instance sharing between
plugins!
●
Solution? We didn't find one. Currently we share
only one single piece of information (the repository
ID) between our plugins, using refs/meta/teamforge
ref
13 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
Obstacle 3
extending Web UI
14 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
HistoryProtection UI:
Notification UI:
15 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
Even after our contribution to 2.6 extending Web UI
was hard (things dramatically changed in Gerrit 2.8)
●
Further modifications in Gerrit were required:
– GWT module for REST api
– JSNI extensions for REST calls
●
Can't start GWT debug session with plugin
(fallback to Window.alert() “debugging”)
●
GWT based development is SLOOOOW!!
16 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
Chasing the community
the never ending story
17 Copyright ©2014 CollabNet, Inc. All Rights Reserved.
●
Gerrit is a moving target
●
Now we are on 2.7
●
Still with 70 additional patches
●
Most of them were contributed back... but were not
merged yet
●
So we are rebasing them on top of upstream
●
Next stop? Gerrit 2.8...
●
What is the hard part? Finding balance between
contributions and our internal modifications
18 Copyright ©2014 CollabNet, Inc. All Rights Reserved.ENTERPRISE CLOUD DEVELOPMENTENTERPRISE CLOUD DEVELOPMENT
Thank you!
Dariusz Luksza
Eryk Szymanski
CollabNet Engineering, Potsdam, Germany

More Related Content

What's hot

Announcing asp.net core updates in .net 5 preview 8
Announcing asp.net core updates in .net 5 preview 8Announcing asp.net core updates in .net 5 preview 8
Announcing asp.net core updates in .net 5 preview 8
Concetto Labs
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
Fran García
 
Jfrog artifactory as private docker registry
Jfrog artifactory as private docker registryJfrog artifactory as private docker registry
Jfrog artifactory as private docker registry
Vipin Mandale
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
Michael Plöd
 
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
Wasura Wattearachchi
 
Git in 10 minutes (WordCamp Europe 2017)
Git in 10 minutes (WordCamp Europe 2017)Git in 10 minutes (WordCamp Europe 2017)
Git in 10 minutes (WordCamp Europe 2017)
Borek Bernard
 
Testing with JUnit 5 and Spring
Testing with JUnit 5 and SpringTesting with JUnit 5 and Spring
Testing with JUnit 5 and Spring
VMware Tanzu
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
Bartosz Kosarzycki
 
Git introduction for Beginners
Git introduction for BeginnersGit introduction for Beginners
Git introduction for Beginners
MortezaTaghaddomi
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
takezoe
 
React and Web Performance
React and Web Performance React and Web Performance
React and Web Performance
LarsRttig1
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
David Paluy
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)
Igalia
 
Git flow for daily use
Git flow for daily useGit flow for daily use
Git flow for daily use
Mediacurrent
 
Branching and merging strategy
Branching and merging strategyBranching and merging strategy
Branching and merging strategy
Rahul Janghel
 
19 GitFlow #burningkeyboards
19 GitFlow #burningkeyboards19 GitFlow #burningkeyboards
19 GitFlow #burningkeyboards
Denis Ristic
 
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Roberto Pérez Alcolea
 
Git & gitflow
Git & gitflowGit & gitflow
Git & gitflow
Nolifelover Earn
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
Anil Sharma
 

What's hot (20)

Announcing asp.net core updates in .net 5 preview 8
Announcing asp.net core updates in .net 5 preview 8Announcing asp.net core updates in .net 5 preview 8
Announcing asp.net core updates in .net 5 preview 8
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Jfrog artifactory as private docker registry
Jfrog artifactory as private docker registryJfrog artifactory as private docker registry
Jfrog artifactory as private docker registry
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
 
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
 
Git in 10 minutes (WordCamp Europe 2017)
Git in 10 minutes (WordCamp Europe 2017)Git in 10 minutes (WordCamp Europe 2017)
Git in 10 minutes (WordCamp Europe 2017)
 
Testing with JUnit 5 and Spring
Testing with JUnit 5 and SpringTesting with JUnit 5 and Spring
Testing with JUnit 5 and Spring
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
Git introduction for Beginners
Git introduction for BeginnersGit introduction for Beginners
Git introduction for Beginners
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
React and Web Performance
React and Web Performance React and Web Performance
React and Web Performance
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)
 
Git flow for daily use
Git flow for daily useGit flow for daily use
Git flow for daily use
 
Branching and merging strategy
Branching and merging strategyBranching and merging strategy
Branching and merging strategy
 
19 GitFlow #burningkeyboards
19 GitFlow #burningkeyboards19 GitFlow #burningkeyboards
19 GitFlow #burningkeyboards
 
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
 
Git & gitflow
Git & gitflowGit & gitflow
Git & gitflow
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
 

Viewers also liked

Digital Media Strategy
Digital Media Strategy Digital Media Strategy
Digital Media Strategy
Amy Barnes
 
Secure collab on premise
Secure collab on premiseSecure collab on premise
Secure collab on premise
Cisco Canada
 
削除フラグのはなし
削除フラグのはなし削除フラグのはなし
削除フラグのはなしShigetaka Yachi
 
Fundamentals of brand building
Fundamentals of brand building Fundamentals of brand building
Fundamentals of brand building
Enitan Odetayo
 
10 Revealing Statistics About Compensation & Benefits You should Know
10 Revealing Statistics About Compensation & Benefits You should Know10 Revealing Statistics About Compensation & Benefits You should Know
10 Revealing Statistics About Compensation & Benefits You should Know
Elodie A.
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
Seth Familian
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
Natasha Murashev
 

Viewers also liked (7)

Digital Media Strategy
Digital Media Strategy Digital Media Strategy
Digital Media Strategy
 
Secure collab on premise
Secure collab on premiseSecure collab on premise
Secure collab on premise
 
削除フラグのはなし
削除フラグのはなし削除フラグのはなし
削除フラグのはなし
 
Fundamentals of brand building
Fundamentals of brand building Fundamentals of brand building
Fundamentals of brand building
 
10 Revealing Statistics About Compensation & Benefits You should Know
10 Revealing Statistics About Compensation & Benefits You should Know10 Revealing Statistics About Compensation & Benefits You should Know
10 Revealing Statistics About Compensation & Benefits You should Know
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to Guiding Diffy to the Enterprise land

Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentd
Soluto
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0
Diego Zuluaga
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
Aeshan Wijetunge
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component Library
Clement Ho
 
Build and release iOS apps using Fastlane tools
Build and release iOS apps using Fastlane toolsBuild and release iOS apps using Fastlane tools
Build and release iOS apps using Fastlane tools
Wise Engineering
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
Abhinav Gupta
 
Sprint 151
Sprint 151Sprint 151
Sprint 151
ManageIQ
 
Berlin AWS meetup: here.com on AWS
Berlin AWS meetup: here.com on AWSBerlin AWS meetup: here.com on AWS
Berlin AWS meetup: here.com on AWS
Cristian Măgherușan-Stanciu
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop Browsers
Alexandre Gouaillard
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
Roberto Pérez Alcolea
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​
Edward Burns
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Java 9 and Beyond
Java 9 and BeyondJava 9 and Beyond
Java 9 and Beyond
Mayank Patel
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 Development
Brad Rippe
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
Łukasz Piątkowski
 
Introduction to git & github
Introduction to git & githubIntroduction to git & github
Introduction to git & github
Vinothini KadambavanaSundaram
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
Zachary Klein
 
Application depolyment
Application depolymentApplication depolyment
Application depolyment
shriikantL
 
Sprint 140
Sprint 140Sprint 140
Sprint 140
ManageIQ
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
 

Similar to Guiding Diffy to the Enterprise land (20)

Unify logz with fluentd
Unify logz with fluentdUnify logz with fluentd
Unify logz with fluentd
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component Library
 
Build and release iOS apps using Fastlane tools
Build and release iOS apps using Fastlane toolsBuild and release iOS apps using Fastlane tools
Build and release iOS apps using Fastlane tools
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Sprint 151
Sprint 151Sprint 151
Sprint 151
 
Berlin AWS meetup: here.com on AWS
Berlin AWS meetup: here.com on AWSBerlin AWS meetup: here.com on AWS
Berlin AWS meetup: here.com on AWS
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop Browsers
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​Jakarta EE 11 Status Update​
Jakarta EE 11 Status Update​
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Java 9 and Beyond
Java 9 and BeyondJava 9 and Beyond
Java 9 and Beyond
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 Development
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
 
Introduction to git & github
Introduction to git & githubIntroduction to git & github
Introduction to git & github
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
 
Application depolyment
Application depolymentApplication depolyment
Application depolyment
 
Sprint 140
Sprint 140Sprint 140
Sprint 140
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 

More from Dariusz Łuksza

A story of 715 commits… in ~15 minutes

A story of 715 commits… in ~15 minutes
A story of 715 commits… in ~15 minutes

A story of 715 commits… in ~15 minutes

Dariusz Łuksza
 
One Man App
One Man AppOne Man App
One Man App
Dariusz Łuksza
 
Your own full blown Gerrit plugin
Your own full blown Gerrit pluginYour own full blown Gerrit plugin
Your own full blown Gerrit plugin
Dariusz Łuksza
 
Review your code like a Googler
Review your code like a GooglerReview your code like a Googler
Review your code like a Googler
Dariusz Łuksza
 
Git in Eclipse
Git in EclipseGit in Eclipse
Git in Eclipse
Dariusz Łuksza
 
Gerrit Code Review - The Introduction
Gerrit Code Review - The IntroductionGerrit Code Review - The Introduction
Gerrit Code Review - The Introduction
Dariusz Łuksza
 
Gerrit JavaScript Plugins
Gerrit JavaScript PluginsGerrit JavaScript Plugins
Gerrit JavaScript Plugins
Dariusz Łuksza
 
Eclipse of idleness and focus on current task (rev. 2)
Eclipse of idleness and focus on current task (rev. 2)Eclipse of idleness and focus on current task (rev. 2)
Eclipse of idleness and focus on current task (rev. 2)
Dariusz Łuksza
 

More from Dariusz Łuksza (9)

A story of 715 commits… in ~15 minutes

A story of 715 commits… in ~15 minutes
A story of 715 commits… in ~15 minutes

A story of 715 commits… in ~15 minutes

 
One Man App
One Man AppOne Man App
One Man App
 
Your own full blown Gerrit plugin
Your own full blown Gerrit pluginYour own full blown Gerrit plugin
Your own full blown Gerrit plugin
 
Review your code like a Googler
Review your code like a GooglerReview your code like a Googler
Review your code like a Googler
 
Git in Eclipse
Git in EclipseGit in Eclipse
Git in Eclipse
 
Put more eyes on code
Put more eyes on codePut more eyes on code
Put more eyes on code
 
Gerrit Code Review - The Introduction
Gerrit Code Review - The IntroductionGerrit Code Review - The Introduction
Gerrit Code Review - The Introduction
 
Gerrit JavaScript Plugins
Gerrit JavaScript PluginsGerrit JavaScript Plugins
Gerrit JavaScript Plugins
 
Eclipse of idleness and focus on current task (rev. 2)
Eclipse of idleness and focus on current task (rev. 2)Eclipse of idleness and focus on current task (rev. 2)
Eclipse of idleness and focus on current task (rev. 2)
 

Recently uploaded

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
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
 
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
 
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
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
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
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
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
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
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
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 

Recently uploaded (20)

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
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
 
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
 
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
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
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
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
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
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
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
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 

Guiding Diffy to the Enterprise land

  • 1. 1 Copyright ©2014 CollabNet, Inc. All Rights Reserved.ENTERPRISE CLOUD DEVELOPMENTENTERPRISE CLOUD DEVELOPMENT Guiding Diffy to the Enterprise land Dariusz Luksza Eryk Szymanski CollabNet Engineering, Potsdam, Germany
  • 2. 2 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● First TeamForge Gerrit integration was hacked into 2.1 – this means close to zero possibility of update ● About 1,5 year ago we started our journey … ● So we started from scratch with 2.6 and its plugin architecture ● We had only three requirements: – Keep same behaviour and API as we had in 2.1 – Keep same performance characteristics – Make it easy to update to newest upstream version
  • 3. 3 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● Few stats about our biggest plugin: – cat `find src/main/java -name "*.java"` | wc -l 11962 – du -sh src/main/java 828K src/main/java ● This is actually plugin responsible for synchronization with TeamForge
  • 4. 4 Copyright ©2014 CollabNet, Inc. All Rights Reserved. Expectations Reality The Road From 2.1 to 2.6
  • 5. 5 Copyright ©2014 CollabNet, Inc. All Rights Reserved. The Road From 2.1 to 2.6 Reality
  • 6. 6 Copyright ©2014 CollabNet, Inc. All Rights Reserved. The Road From 2.1 to 2.6
  • 7. 7 Copyright ©2014 CollabNet, Inc. All Rights Reserved. Obstacle 1 missing extension points
  • 8. 8 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● We are contributing back all our modifications to Gerrit: – Initial support for Web UI plugins (#38330, #38331, #38332), – Fix binding of @Listen annotated extensions points in HTTP and SSH module (#39293), – Bump GWT to 2.5.0 version and fix connected issues (#39540, #39610 #38962), – Prevent from deleting refs/changes/ (#40385), – Fix GitWeb Caching (#41360), – Add additional context for group name suggester API (#40123), – Initial work on making JavaSript plugins architecture more pleasant for JS developers (#39270), – Allow include external group into internal one and set external group as a owner of internal one (#46840, #47020), – Add --list-plugins and --install-pliugin parameters to init step (#47818, #47819), – Fix ChangeMergedEvent parameter for merged patch sets (#48221) – Improvements to logging subsystem (#51890, #52164) – Make plugin servlet's context path authorization aware (#51192) – Get rid of JdbcSQLException while numbers are read from cache (#51193)
  • 9. 9 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● But still some of our core contributions are in the review: – Authentication extension point – Secure store extension point – Commit verification fast path ● So what? – Instead of investing our time in new features (like Angular- Gerrit) we are burning our cycles rebasing, resolving conflicts and testing above functionalities with current stable branch
  • 10. 10 Copyright ©2014 CollabNet, Inc. All Rights Reserved. Obstacle 2 redeploy & friends
  • 11. 11 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● Each plugin runs in separate ClassLoader ● If one of your libraries is not behaving well (eg. is not cleaning thread locals like Apache Axis does) you will get out of PermGen space after 5th or 10th deploy ● Solution? Simple, always restart gerrit before next deploy ● This work for us for quite long time... since our 4th plugin appears... we loaded Axis (and other dependencies) fourth time and we need to change container.javaOptions to increase PermGen size because Gerrit was unable to load all plugins
  • 12. 12 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● What is more, separate ClassLoaders for each plugin means NO class instance sharing between plugins! ● Solution? We didn't find one. Currently we share only one single piece of information (the repository ID) between our plugins, using refs/meta/teamforge ref
  • 13. 13 Copyright ©2014 CollabNet, Inc. All Rights Reserved. Obstacle 3 extending Web UI
  • 14. 14 Copyright ©2014 CollabNet, Inc. All Rights Reserved. HistoryProtection UI: Notification UI:
  • 15. 15 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● Even after our contribution to 2.6 extending Web UI was hard (things dramatically changed in Gerrit 2.8) ● Further modifications in Gerrit were required: – GWT module for REST api – JSNI extensions for REST calls ● Can't start GWT debug session with plugin (fallback to Window.alert() “debugging”) ● GWT based development is SLOOOOW!!
  • 16. 16 Copyright ©2014 CollabNet, Inc. All Rights Reserved. Chasing the community the never ending story
  • 17. 17 Copyright ©2014 CollabNet, Inc. All Rights Reserved. ● Gerrit is a moving target ● Now we are on 2.7 ● Still with 70 additional patches ● Most of them were contributed back... but were not merged yet ● So we are rebasing them on top of upstream ● Next stop? Gerrit 2.8... ● What is the hard part? Finding balance between contributions and our internal modifications
  • 18. 18 Copyright ©2014 CollabNet, Inc. All Rights Reserved.ENTERPRISE CLOUD DEVELOPMENTENTERPRISE CLOUD DEVELOPMENT Thank you! Dariusz Luksza Eryk Szymanski CollabNet Engineering, Potsdam, Germany