SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Guiding Diffy to the Enterprise land
Report
Dariusz Łuksza
Follow
Software Developer
Mar. 22, 2014
•
0 likes
•
880 views
1
of
18
Guiding Diffy to the Enterprise land
Mar. 22, 2014
•
0 likes
•
880 views
Download Now
Download to read offline
Report
Technology
Dariusz Łuksza
Follow
Software Developer
Recommended
React and Web Performance
Lars Roettig
218 views
•
14 slides
Rhomobile roadmap
tau-technologies
8.5K views
•
9 slides
Magento PWA Studio extensibility
Lars Roettig
404 views
•
26 slides
Rhomobile 5.5 Release Notes
Konstantin Rybas
971 views
•
5 slides
Sprint 152
ManageIQ
110 views
•
16 slides
Griffon Update Gr8conf 2013
Andres Almiray
7K views
•
30 slides
More Related Content
What's hot
Announcing asp.net core updates in .net 5 preview 8
Concetto Labs
32 views
•
22 slides
Git and git flow
Fran García
1.6K views
•
24 slides
Jfrog artifactory as private docker registry
Vipin Mandale
1.1K views
•
15 slides
Migrating from Grails 2 to Grails 3
Michael Plöd
3K views
•
27 slides
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
Wasura Wattearachchi
143 views
•
27 slides
Git in 10 minutes (WordCamp Europe 2017)
Borek Bernard
2K views
•
36 slides
What's hot
(20)
Announcing asp.net core updates in .net 5 preview 8
Concetto Labs
•
32 views
Git and git flow
Fran García
•
1.6K views
Jfrog artifactory as private docker registry
Vipin Mandale
•
1.1K views
Migrating from Grails 2 to Grails 3
Michael Plöd
•
3K views
WSO2 Screencast - How to Easily Build a Git-Based CI/CD Pipeline for your API...
Wasura Wattearachchi
•
143 views
Git in 10 minutes (WordCamp Europe 2017)
Borek Bernard
•
2K views
Testing with JUnit 5 and Spring
VMware Tanzu
•
1.8K views
Git-flow workflow and pull-requests
Bartosz Kosarzycki
•
16.1K views
Git introduction for Beginners
MortezaTaghaddomi
•
318 views
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia
•
155 views
How to keep maintainability of long life Scala applications
takezoe
•
6.8K views
React and Web Performance
LarsRttig1
•
41 views
Git flow Introduction
David Paluy
•
9.2K views
Web Technologies in Automotive & Robotics (BlinkOn 10)
Igalia
•
247 views
Git flow for daily use
Mediacurrent
•
8K views
Branching and merging strategy
Rahul Janghel
•
440 views
19 GitFlow #burningkeyboards
Denis Ristic
•
183 views
Leveraging Gradle @ Netflix (Madrid GUG Feb 2, 2021)
Roberto Pérez Alcolea
•
995 views
Git & gitflow
Nolifelover Earn
•
971 views
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
Anil Sharma
•
989 views
Viewers also liked
Digital Media Strategy
Amy Barnes
464 views
•
100 slides
Secure collab on premise
Cisco Canada
3.2K views
•
61 slides
削除フラグのはなし
Shigetaka Yachi
16.8K views
•
83 slides
Fundamentals of brand building
Enitan Odetayo
39.2K views
•
26 slides
10 Revealing Statistics About Compensation & Benefits You should Know
Elodie A.
9.7K views
•
17 slides
Visual Design with Data
Seth Familian
2.8M views
•
76 slides
Viewers also liked
(7)
Digital Media Strategy
Amy Barnes
•
464 views
Secure collab on premise
Cisco Canada
•
3.2K views
削除フラグのはなし
Shigetaka Yachi
•
16.8K views
Fundamentals of brand building
Enitan Odetayo
•
39.2K views
10 Revealing Statistics About Compensation & Benefits You should Know
Elodie A.
•
9.7K views
Visual Design with Data
Seth Familian
•
2.8M views
Build Features, Not Apps
Natasha Murashev
•
389K views
Similar to Guiding Diffy to the Enterprise land
Unify logz with fluentd
Soluto
319 views
•
18 slides
Apigee deploy grunt plugin.1.0
Diego Zuluaga
856 views
•
16 slides
Sst hackathon express
Aeshan Wijetunge
331 views
•
13 slides
Building our Component Library
Clement Ho
384 views
•
50 slides
Build and release iOS apps using Fastlane tools
Wise Engineering
115 views
•
25 slides
Fun with Jenkins & Salesforce
Abhinav Gupta
2.9K views
•
22 slides
Similar to Guiding Diffy to the Enterprise land
(20)
Unify logz with fluentd
Soluto
•
319 views
Apigee deploy grunt plugin.1.0
Diego Zuluaga
•
856 views
Sst hackathon express
Aeshan Wijetunge
•
331 views
Building our Component Library
Clement Ho
•
384 views
Build and release iOS apps using Fastlane tools
Wise Engineering
•
115 views
Fun with Jenkins & Salesforce
Abhinav Gupta
•
2.9K views
Sprint 151
ManageIQ
•
123 views
Berlin AWS meetup: here.com on AWS
Cristian Măgherușan-Stanciu
•
605 views
Webrtc plugins for Desktop Browsers
Alexandre Gouaillard
•
2.1K views
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
•
8.1K views
Java 9 and Beyond
Mayank Patel
•
1.1K views
CISOA Conference 2020 Banner 9 Development
Brad Rippe
•
150 views
Introduction to git & github
Vinothini KadambavanaSundaram
•
76 views
Grails 4: Upgrade your Game!
Zachary Klein
•
140 views
Application depolyment
shriikantL
•
266 views
Sprint 140
ManageIQ
•
193 views
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
•
480 views
Pivotal Platform - December Release A First Look
VMware Tanzu
•
465 views
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
Getup Cloud
•
791 views
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
•
1.7K views
More from Dariusz Łuksza
A story of 715 commits… in ~15 minutes
Dariusz Łuksza
246 views
•
20 slides
One Man App
Dariusz Łuksza
482 views
•
25 slides
Your own full blown Gerrit plugin
Dariusz Łuksza
2.5K views
•
36 slides
Review your code like a Googler
Dariusz Łuksza
1.8K views
•
89 slides
Git in Eclipse
Dariusz Łuksza
1.2K views
•
19 slides
Put more eyes on code
Dariusz Łuksza
483 views
•
19 slides
More from Dariusz Łuksza
(9)
A story of 715 commits… in ~15 minutes
Dariusz Łuksza
•
246 views
One Man App
Dariusz Łuksza
•
482 views
Your own full blown Gerrit plugin
Dariusz Łuksza
•
2.5K views
Review your code like a Googler
Dariusz Łuksza
•
1.8K views
Git in Eclipse
Dariusz Łuksza
•
1.2K views
Put more eyes on code
Dariusz Łuksza
•
483 views
Gerrit Code Review - The Introduction
Dariusz Łuksza
•
2.3K views
Gerrit JavaScript Plugins
Dariusz Łuksza
•
1.8K views
Eclipse of idleness and focus on current task (rev. 2)
Dariusz Łuksza
•
1.4K views
Recently uploaded
Product Research Presentation
DeahJadeArellano
25 views
•
13 slides
Future of Skills
Alison B. Lowndes
73 views
•
50 slides
How to reduce expenses on monitoring
RomanKhavronenko
23 views
•
54 slides
Google cloud Study Jam 2023.pptx
GDSCNiT
438 views
•
56 slides
Take Control of Podcasting thanks to Open Source and Podcasting 2.0
🎙 Benjamin Bellamy
74 views
•
59 slides
Mule Meetup Calgary- API Governance & Conformance.pdf
NithaJoseph4
53 views
•
19 slides
Recently uploaded
(20)
Product Research Presentation
DeahJadeArellano
•
25 views
Future of Skills
Alison B. Lowndes
•
73 views
How to reduce expenses on monitoring
RomanKhavronenko
•
23 views
Google cloud Study Jam 2023.pptx
GDSCNiT
•
438 views
Take Control of Podcasting thanks to Open Source and Podcasting 2.0
🎙 Benjamin Bellamy
•
74 views
Mule Meetup Calgary- API Governance & Conformance.pdf
NithaJoseph4
•
53 views
UiPath Tips and Techniques for Debugging - Session 3
DianaGray10
•
49 views
Knowledge Graphs and Generative AI_GraphSummit Minneapolis Sept 20.pptx
Neo4j
•
33 views
Getting your enterprise ready for Microsoft 365 Copilot
Vignesh Ganesan I Microsoft MVP
•
217 views
Webhook Testing Strategy
Dimpy Adhikary
•
82 views
How is AI changing journalism? Strategic considerations for publishers and ne...
Damian Radcliffe
•
117 views
h2 meet pdf test.pdf
JohnLee971654
•
64 views
EuroBSDCon 2023 - (auto)Installing BSD Systems - Cases using pfSense, TrueNAS...
Vinícius Zavam
•
67 views
9C Monthly Newsletter - SEPT 2023
PublishingTeam
•
234 views
GDSC Cloud Lead Presentation.pptx
AbhinavNautiyal8
•
72 views
Chandrayaan 3.pptx
PrasunJha12
•
31 views
Common WordPress APIs - Options API
Jonathan Bossenger
•
33 views
CamundaCon NYC 2023 Keynote - Shifting into overdrive with process orchestration
Bernd Ruecker
•
40 views
Mastering Automation Quality: Exploring UiPath's Test Suite for Seamless Test...
DianaGray10
•
38 views
Need for Speed: Removing speed bumps in API Projects
Łukasz Chruściel
•
121 views
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