SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
Because you can’t fix what
you don’t know is broken…
About me
2
• Initiator of the Automated Error Reporting Initiative
• Project Lead of Eclipse Code Recommenders
• Eclipse Committer since 2010
• Plug-in Developer for 10+ years (Eclipse 2.1)
• Member of the Eclipse Architecture Council
• Co-Lead of Java User Group Darmstadt
• CEO of Codetrails
• Passion to improve developers day-to-day work with
intelligent and practical tools - mostly using Data
Mining on Big (Software Engineering) Data.
@marcelbruch
marcelbruch
Adding a new character to the plot
3
Software

User
{ ——–}
Application

Developer
Product
Manager
Imagine the following situation…
4
Software

User
{ ——–}
Application

Developer
Product
Manager
But when the user starts the app…
5
6Can you feel their pain…?
This image is not available in your country
In the logs you’d find…
7
✘ ✘ ✘
The tragedy of manual error reports
8
✘ ✘
!
maintenance
✘ ✘ ✘
Release SR 2
production
SR 1
✘
!
The tragedy of manual error reports
9
maintenance
Release SR 2
production
SR 1
✘ ✘ ✘
10Not too happy but feeling okay…
This image is not available in your country
What can we do?
11
Application Developer
?
{ ——–}
The Automated
Error Reporting Initiative
12
Live Demo
13
About server responses,

Bugzilla, and immediate feedback
„Keep users informed about your progress…“
14
Systems Overview
15
AERI Web UI Eclipse BugzillaEclipse IDEs
„Direct Reporter Feedback“
Not yet tracked problems…
16
Committers needinfo…
17
Status: – – –
Resolution: – – –
Bug 442500 – ….
Fixed…
18
Status: – – –
Resolution: – – –
Bug 442500 – ….
Won’t Fix…
19
Status: – – –
Resolution: – – –
Bug 442500 – ….
Invalid (aka log messages)
20
Status: – – –
Resolution: – – –
Bug 442500 – ….
About caching, filtering,

anonymization, and other shortcuts…
„What goes to eclipse.org?“
21
Do we send all errors to Eclipse…?
22
really
The error reporting funnel
23
✘
structural filter
#1: Structural Filtering
24
java.net.UnknownHostException: marketplace.eclipse.org
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.Socket.connect(Socket.java:538)
at com.example.HttpClient.openServer(HttpClient.java:527)
at com.example.http.HttpClient.<init>(HttpClient.java:211)
at com.example.HttpURLConnection.connect(HttpURLConnection.java:932)
at org.eclipse.recommenders.internal.news.rcp.PollFeedJob.run(PollFeedJob.java:69)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Error connecting to ‘http://marketplace.eclipse.org/rss.xml’.
#2: Did I already sent this?
25
✘
structural filter
personal filter
#3: Did anyone else sent this?
26
✘
structural filter
personal filter
global hist.
structural filter
personal filter
If you hit a known issue…
27
✘
global hist.
#4: Review
28
review
✘
structural filter
personal filter
global hist.
#4: Review
29
The server side
Walkthrough through the committer front-end
30
The core concepts
31
The Core Concepts
32
✘
✘
✘ ✘
✘ ✘
✘
✘✘ Incidents
Problems
Projects
The committer front-end
33
Creating bug reports
34
Creating bug reports
35
Notifying committers
36
Project Alerts
37
Weekly or daily email digests
38
Some fun facts
e = mc2 —> errors = (more code)2
39
Disclaimer
Don’t draw preliminary conclusions!
Please consult your personal statistican…
How many milestones testers?
450 simrel committers 1200 eclipse committers Testers?~7000 error reporters
Milestones adoption
42
RC3
RC2
RC1
M7
M6
M5
M4
M3
M2
M1
1000
220
160
650
450
400
560
600
Do new milestones introduce new problems?
70
10
# reporters one week high
SR2
SR1
R
Luna
Mars
0
350
700
1050
1400
4.4.0 4.4.1 4.4.2 M1 M2 M3 M4 M5 M6 M7 RC1 RC2 RC3
Milestones adoption
43
Christmas
Addition to all
EPP packages
RCs
Addition to first
EPP packages
How hard do they suffer?
44
300 - 3000 reports
25 testers
50-300 reports
330 testers
3-50 reports
3600 testers
1-2 reports
3000 testers
What do they report?
45
0
750
1500
2250
3000
‚Normal‘ Errors
Out of Memory
Freezes
Stack Overflows
3rd Party Involved
Top 100 of 7000
Me
What kind of errors are send?
46
3rd Party Involved
16 %
Stack Overflows
0 %
Freezes
9 %
Out Of Memory
1 %
'Normal' Errors
74 %
What are the most popular exceptions?
47
32 %
12 %
25 %
3 %
8 %
2 %
18 %
What are the most popular exceptions?
48
Other
32 %
No {Class | Method | Field} DefFoundError
12 %
NullPointerException
25 %
IndexOutOfBoundsException
3 %
IllegalArgumentException
8 %
ClassCastException
2 %
{File} IOException
18 %
NullPointerExceptions by Projects
49
0
1000
2000
3000
NullPointerException
Code Recommenders
65
Statisticians, note: Projects automatically marked as „being responsible“ fixing these
NullPointerExceptions but does not mean the NPE happened in their code.
Tip: Enable null analysis
50
@Override
protected void run(@Nullable List<Incident> slice)
{
for (Incident incident : slice) {
JDT offers a lot…
51
Tip: Never return null
52
@Override
public Optional<String> getReason() {
return Optional.ofNullable(cause);
}
Use java.util.Optional or com.google.common.base.Optional instead
Oh Class, Were Art Thou?
53
Use proper import ranges and define uses on your exports to get rid of 

{Class | Method | Field} DefNotFoundErrors, LinkageErrors, and some
ClassCastExceptions. OSGI needs that information to work properly…
Export-Package: org.eclipse.recommenders.utils;
uses:="org.osgi.framework,
org.eclipse.core.runtime,
com.google.common.base,
com.google.common.collect"
Import-Package:
com.google.common.annotations;version="[15.0.0,16.0.0)",
Index out of bounds?
54
a b c d e
-1 and array.length do not work. No matter how often you try…
There is no tool support for this. Just unit tests and code that tries to fail gracefully.
Tip: If error messages are not helpful…
55
try {
// …
} catch (Exception e) {
log(„An error occurred“, e);
}
21% of all logged errors do not contain stack traces.
try {
// …
} catch (Exception e) {
log(„Invalid argument {}“, value, e);
}
Are your users ready for Java 8?
56
both

2,5%
Java 1.7
33%
Java 1,8

64%
Java 1.9
0,3%
Which VM do users run the Eclipse IDE with?
Do people anonymize their messages?
57
Sometimes
3 %
No
81 %
Yes
16 %
Are you concerned that your exception message may reveal sensitive data?
Bugfixing Rates
Speak plain: Does it work?
58
Bugzilla Summary
59
1170 bugs
275 fixed (24%)
100 invalid
70 not eclipse
467 in progress (40%)
172 duplicates (15%)69 works 4 me
28 wont fix
Bugzilla
Fixed bugs by projects
60
More (35)
84
---
11
EGit
15
Papyrus
19
Recommenders
41
Xtext
42
Oomph
58
In progress & fixed bugs
61
0
30
60
90
120
Oomph TMF Recommenders Papyrus EGit ---
97
1914
17
29
20
11
15
19
4142
58
Fixed
In Progress
Future Work?
Feature requests are tracked in bugzilla. Make sure your request is in there and vote for it.
Client:
• Separate view to „review, analyze and send later“
• Making client reusable in other (Eclipse- or SWT-based) applications
• Additional client-side automated analysis
Server:
• Ensure scalability of the system
• Improve duplicate detections
• Go Neon if feedback is good.
Hosting an error reporting service for Java software?
• Need one? TTML.
62
How to reach EPP Logging
63
• Code: Check out the EPP Logging Oomph profile
• Wiki: https://wiki.eclipse.org/EPP/Logging
• Manual: https://dev.eclipse.org/recommenders/community/confess/#/about
• Forum: https://www.eclipse.org/forums/index.php/f/69/
• Bugzilla: https://bugs.eclipse.org/bugs/buglist.cgi?component=logging&product=EPP
• Mail: error-reports-inbox@eclipse.org
Credits
• Daniel Haftstein, Codetrails – Eclipse client conception and implementation
• Marcel Bruch, Codetrails – Server-side conception and implementation
• Webmasters, Eclipse Foundation – Eclipse server infrastructure & integration
• Thanks to many early adopters and committers providing feedback
64
Feedback
65
Contact Us
66
Codetrails GmbH
Robert-Bosch-Str. 7
64293 Darmstadt, Germany
www: codetrails.com
phone: 06151 / 2767 092
email: info@codetrails.com
Dr. Marcel Bruch
CEO
mobile: 0179 / 1317 721
email: marcel.bruch@codetrails.com
Feedback
67

Weitere ähnliche Inhalte

Andere mochten auch

Digital Future of IT Service Providers - Converge Chennai 2015
Digital Future of IT Service Providers - Converge Chennai 2015Digital Future of IT Service Providers - Converge Chennai 2015
Digital Future of IT Service Providers - Converge Chennai 2015Thoughtworks
 
Autonomic Computing and Self Healing Systems
Autonomic Computing and Self Healing SystemsAutonomic Computing and Self Healing Systems
Autonomic Computing and Self Healing SystemsWilliam Chipman
 
Self healing-systems
Self healing-systemsSelf healing-systems
Self healing-systemsSKORDEMIR
 
Delivering Digital Business Solutions, Raja Ukil, CIO, Wipro
Delivering Digital Business Solutions, Raja Ukil, CIO, WiproDelivering Digital Business Solutions, Raja Ukil, CIO, Wipro
Delivering Digital Business Solutions, Raja Ukil, CIO, WiproINDUSCommunity
 
Ppt.on wipro by anil
Ppt.on wipro by anilPpt.on wipro by anil
Ppt.on wipro by anilAnil Kumar
 

Andere mochten auch (6)

Digital Future of IT Service Providers - Converge Chennai 2015
Digital Future of IT Service Providers - Converge Chennai 2015Digital Future of IT Service Providers - Converge Chennai 2015
Digital Future of IT Service Providers - Converge Chennai 2015
 
Automation Concepts
Automation ConceptsAutomation Concepts
Automation Concepts
 
Autonomic Computing and Self Healing Systems
Autonomic Computing and Self Healing SystemsAutonomic Computing and Self Healing Systems
Autonomic Computing and Self Healing Systems
 
Self healing-systems
Self healing-systemsSelf healing-systems
Self healing-systems
 
Delivering Digital Business Solutions, Raja Ukil, CIO, Wipro
Delivering Digital Business Solutions, Raja Ukil, CIO, WiproDelivering Digital Business Solutions, Raja Ukil, CIO, Wipro
Delivering Digital Business Solutions, Raja Ukil, CIO, Wipro
 
Ppt.on wipro by anil
Ppt.on wipro by anilPpt.on wipro by anil
Ppt.on wipro by anil
 

Ähnlich wie Because you can’t fix what you don’t know is broken...

Production Debugging at Code Camp Philly
Production Debugging at Code Camp PhillyProduction Debugging at Code Camp Philly
Production Debugging at Code Camp PhillyBrian Lyttle
 
Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214David Rodenas
 
Works For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsWorks For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsSALT Lab @ UBC
 
SAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeSAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeAndrey Karpov
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)Andrey Karpov
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesVMware Tanzu
 
Fighting Software Inefficiency Through Automated Bug Detection
 Fighting Software Inefficiency Through Automated Bug Detection Fighting Software Inefficiency Through Automated Bug Detection
Fighting Software Inefficiency Through Automated Bug DetectionMd E. Haque
 
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017Andrey Karpov
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetMarco Parenzan
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JSFestUA
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Andrey Karpov
 
How to Design a Program Repair Bot? Insights from the Repairnator Project
How to Design a Program Repair Bot? Insights from the Repairnator ProjectHow to Design a Program Repair Bot? Insights from the Repairnator Project
How to Design a Program Repair Bot? Insights from the Repairnator ProjectSimon Urli
 
BSides MCR 2016: From CSV to CMD to qwerty
BSides MCR 2016: From CSV to CMD to qwertyBSides MCR 2016: From CSV to CMD to qwerty
BSides MCR 2016: From CSV to CMD to qwertyJerome Smith
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015lpgauth
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeAndrzej Wasowski
 
(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and back(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and backDavid Rodenas
 
Estimating Security Risk Through Repository Mining
Estimating Security Risk Through Repository MiningEstimating Security Risk Through Repository Mining
Estimating Security Risk Through Repository MiningTamas K Lengyel
 

Ähnlich wie Because you can’t fix what you don’t know is broken... (20)

Production Debugging at Code Camp Philly
Production Debugging at Code Camp PhillyProduction Debugging at Code Camp Philly
Production Debugging at Code Camp Philly
 
Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214
 
Works For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug ReportsWorks For Me! Characterizing Non-Reproducible Bug Reports
Works For Me! Characterizing Non-Reproducible Bug Reports
 
SAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the codeSAST and Application Security: how to fight vulnerabilities in the code
SAST and Application Security: how to fight vulnerabilities in the code
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
 
Fighting Software Inefficiency Through Automated Bug Detection
 Fighting Software Inefficiency Through Automated Bug Detection Fighting Software Inefficiency Through Automated Bug Detection
Fighting Software Inefficiency Through Automated Bug Detection
 
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
 
Surge2012
Surge2012Surge2012
Surge2012
 
CodeChecker summary 21062021
CodeChecker summary 21062021CodeChecker summary 21062021
CodeChecker summary 21062021
 
Deep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnetDeep Dive Time Series Anomaly Detection in Azure with dotnet
Deep Dive Time Series Anomaly Detection in Azure with dotnet
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
 
The Knowledgeable Software Engineer
The Knowledgeable Software EngineerThe Knowledgeable Software Engineer
The Knowledgeable Software Engineer
 
How to Design a Program Repair Bot? Insights from the Repairnator Project
How to Design a Program Repair Bot? Insights from the Repairnator ProjectHow to Design a Program Repair Bot? Insights from the Repairnator Project
How to Design a Program Repair Bot? Insights from the Repairnator Project
 
BSides MCR 2016: From CSV to CMD to qwerty
BSides MCR 2016: From CSV to CMD to qwertyBSides MCR 2016: From CSV to CMD to qwerty
BSides MCR 2016: From CSV to CMD to qwerty
 
Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015Debugging Complex Systems - Erlang Factory SF 2015
Debugging Complex Systems - Erlang Factory SF 2015
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux Code
 
(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and back(automatic) Testing: from business to university and back
(automatic) Testing: from business to university and back
 
Estimating Security Risk Through Repository Mining
Estimating Security Risk Through Repository MiningEstimating Security Risk Through Repository Mining
Estimating Security Risk Through Repository Mining
 

Mehr von Marcel Bruch

The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No ImagesMarcel Bruch
 
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0Marcel Bruch
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Marcel Bruch
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 NurembergMarcel Bruch
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler DemocampsMarcel Bruch
 
Eclipse Democamp Zurich
Eclipse Democamp ZurichEclipse Democamp Zurich
Eclipse Democamp ZurichMarcel Bruch
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Marcel Bruch
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Marcel Bruch
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011Marcel Bruch
 
Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Marcel Bruch
 
2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertagMarcel Bruch
 

Mehr von Marcel Bruch (11)

The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No Images
 
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 Nuremberg
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps
 
Eclipse Democamp Zurich
Eclipse Democamp ZurichEclipse Democamp Zurich
Eclipse Democamp Zurich
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011
 
Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011
 
2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag
 

Kürzlich hochgeladen

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 

Because you can’t fix what you don’t know is broken...

  • 1. Because you can’t fix what you don’t know is broken…
  • 2. About me 2 • Initiator of the Automated Error Reporting Initiative • Project Lead of Eclipse Code Recommenders • Eclipse Committer since 2010 • Plug-in Developer for 10+ years (Eclipse 2.1) • Member of the Eclipse Architecture Council • Co-Lead of Java User Group Darmstadt • CEO of Codetrails • Passion to improve developers day-to-day work with intelligent and practical tools - mostly using Data Mining on Big (Software Engineering) Data. @marcelbruch marcelbruch
  • 3. Adding a new character to the plot 3 Software
 User { ——–} Application
 Developer Product Manager
  • 4. Imagine the following situation… 4 Software
 User { ——–} Application
 Developer Product Manager
  • 5. But when the user starts the app… 5
  • 6. 6Can you feel their pain…? This image is not available in your country
  • 7. In the logs you’d find… 7
  • 8. ✘ ✘ ✘ The tragedy of manual error reports 8 ✘ ✘ ! maintenance ✘ ✘ ✘ Release SR 2 production SR 1
  • 9. ✘ ! The tragedy of manual error reports 9 maintenance Release SR 2 production SR 1 ✘ ✘ ✘
  • 10. 10Not too happy but feeling okay… This image is not available in your country
  • 11. What can we do? 11 Application Developer ? { ——–}
  • 14. About server responses,
 Bugzilla, and immediate feedback „Keep users informed about your progress…“ 14
  • 15. Systems Overview 15 AERI Web UI Eclipse BugzillaEclipse IDEs „Direct Reporter Feedback“
  • 16. Not yet tracked problems… 16
  • 17. Committers needinfo… 17 Status: – – – Resolution: – – – Bug 442500 – ….
  • 18. Fixed… 18 Status: – – – Resolution: – – – Bug 442500 – ….
  • 19. Won’t Fix… 19 Status: – – – Resolution: – – – Bug 442500 – ….
  • 20. Invalid (aka log messages) 20 Status: – – – Resolution: – – – Bug 442500 – ….
  • 21. About caching, filtering,
 anonymization, and other shortcuts… „What goes to eclipse.org?“ 21
  • 22. Do we send all errors to Eclipse…? 22 really
  • 23. The error reporting funnel 23 ✘ structural filter
  • 24. #1: Structural Filtering 24 java.net.UnknownHostException: marketplace.eclipse.org at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) at java.net.Socket.connect(Socket.java:538) at com.example.HttpClient.openServer(HttpClient.java:527) at com.example.http.HttpClient.<init>(HttpClient.java:211) at com.example.HttpURLConnection.connect(HttpURLConnection.java:932) at org.eclipse.recommenders.internal.news.rcp.PollFeedJob.run(PollFeedJob.java:69) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Error connecting to ‘http://marketplace.eclipse.org/rss.xml’.
  • 25. #2: Did I already sent this? 25 ✘ structural filter personal filter
  • 26. #3: Did anyone else sent this? 26 ✘ structural filter personal filter global hist.
  • 27. structural filter personal filter If you hit a known issue… 27 ✘ global hist.
  • 30. The server side Walkthrough through the committer front-end 30
  • 32. The Core Concepts 32 ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘✘ Incidents Problems Projects
  • 38. Weekly or daily email digests 38
  • 39. Some fun facts e = mc2 —> errors = (more code)2 39
  • 40. Disclaimer Don’t draw preliminary conclusions! Please consult your personal statistican…
  • 41. How many milestones testers? 450 simrel committers 1200 eclipse committers Testers?~7000 error reporters
  • 42. Milestones adoption 42 RC3 RC2 RC1 M7 M6 M5 M4 M3 M2 M1 1000 220 160 650 450 400 560 600 Do new milestones introduce new problems? 70 10 # reporters one week high SR2 SR1 R Luna Mars
  • 43. 0 350 700 1050 1400 4.4.0 4.4.1 4.4.2 M1 M2 M3 M4 M5 M6 M7 RC1 RC2 RC3 Milestones adoption 43 Christmas Addition to all EPP packages RCs Addition to first EPP packages
  • 44. How hard do they suffer? 44 300 - 3000 reports 25 testers 50-300 reports 330 testers 3-50 reports 3600 testers 1-2 reports 3000 testers
  • 45. What do they report? 45 0 750 1500 2250 3000 ‚Normal‘ Errors Out of Memory Freezes Stack Overflows 3rd Party Involved Top 100 of 7000 Me
  • 46. What kind of errors are send? 46 3rd Party Involved 16 % Stack Overflows 0 % Freezes 9 % Out Of Memory 1 % 'Normal' Errors 74 %
  • 47. What are the most popular exceptions? 47 32 % 12 % 25 % 3 % 8 % 2 % 18 %
  • 48. What are the most popular exceptions? 48 Other 32 % No {Class | Method | Field} DefFoundError 12 % NullPointerException 25 % IndexOutOfBoundsException 3 % IllegalArgumentException 8 % ClassCastException 2 % {File} IOException 18 %
  • 49. NullPointerExceptions by Projects 49 0 1000 2000 3000 NullPointerException Code Recommenders 65 Statisticians, note: Projects automatically marked as „being responsible“ fixing these NullPointerExceptions but does not mean the NPE happened in their code.
  • 50. Tip: Enable null analysis 50 @Override protected void run(@Nullable List<Incident> slice) { for (Incident incident : slice) {
  • 51. JDT offers a lot… 51
  • 52. Tip: Never return null 52 @Override public Optional<String> getReason() { return Optional.ofNullable(cause); } Use java.util.Optional or com.google.common.base.Optional instead
  • 53. Oh Class, Were Art Thou? 53 Use proper import ranges and define uses on your exports to get rid of 
 {Class | Method | Field} DefNotFoundErrors, LinkageErrors, and some ClassCastExceptions. OSGI needs that information to work properly… Export-Package: org.eclipse.recommenders.utils; uses:="org.osgi.framework, org.eclipse.core.runtime, com.google.common.base, com.google.common.collect" Import-Package: com.google.common.annotations;version="[15.0.0,16.0.0)",
  • 54. Index out of bounds? 54 a b c d e -1 and array.length do not work. No matter how often you try… There is no tool support for this. Just unit tests and code that tries to fail gracefully.
  • 55. Tip: If error messages are not helpful… 55 try { // … } catch (Exception e) { log(„An error occurred“, e); } 21% of all logged errors do not contain stack traces. try { // … } catch (Exception e) { log(„Invalid argument {}“, value, e); }
  • 56. Are your users ready for Java 8? 56 both
 2,5% Java 1.7 33% Java 1,8
 64% Java 1.9 0,3% Which VM do users run the Eclipse IDE with?
  • 57. Do people anonymize their messages? 57 Sometimes 3 % No 81 % Yes 16 % Are you concerned that your exception message may reveal sensitive data?
  • 58. Bugfixing Rates Speak plain: Does it work? 58
  • 59. Bugzilla Summary 59 1170 bugs 275 fixed (24%) 100 invalid 70 not eclipse 467 in progress (40%) 172 duplicates (15%)69 works 4 me 28 wont fix Bugzilla
  • 60. Fixed bugs by projects 60 More (35) 84 --- 11 EGit 15 Papyrus 19 Recommenders 41 Xtext 42 Oomph 58
  • 61. In progress & fixed bugs 61 0 30 60 90 120 Oomph TMF Recommenders Papyrus EGit --- 97 1914 17 29 20 11 15 19 4142 58 Fixed In Progress
  • 62. Future Work? Feature requests are tracked in bugzilla. Make sure your request is in there and vote for it. Client: • Separate view to „review, analyze and send later“ • Making client reusable in other (Eclipse- or SWT-based) applications • Additional client-side automated analysis Server: • Ensure scalability of the system • Improve duplicate detections • Go Neon if feedback is good. Hosting an error reporting service for Java software? • Need one? TTML. 62
  • 63. How to reach EPP Logging 63 • Code: Check out the EPP Logging Oomph profile • Wiki: https://wiki.eclipse.org/EPP/Logging • Manual: https://dev.eclipse.org/recommenders/community/confess/#/about • Forum: https://www.eclipse.org/forums/index.php/f/69/ • Bugzilla: https://bugs.eclipse.org/bugs/buglist.cgi?component=logging&product=EPP • Mail: error-reports-inbox@eclipse.org
  • 64. Credits • Daniel Haftstein, Codetrails – Eclipse client conception and implementation • Marcel Bruch, Codetrails – Server-side conception and implementation • Webmasters, Eclipse Foundation – Eclipse server infrastructure & integration • Thanks to many early adopters and committers providing feedback 64
  • 66. Contact Us 66 Codetrails GmbH Robert-Bosch-Str. 7 64293 Darmstadt, Germany www: codetrails.com phone: 06151 / 2767 092 email: info@codetrails.com Dr. Marcel Bruch CEO mobile: 0179 / 1317 721 email: marcel.bruch@codetrails.com