SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Andrea Bollini, 4Science
Terry Brady, Georgetown University Library
Giuseppe Digilio, 4Science
Tim Donohue, DuraSpace
Creating High-Quality
Software: Update to
Development Practices
About
❖ Why changes?
❖ Contract first approach
❖ Test Driven Development
❖ The review process
❖ … the result so far
Why changes?
❖ Increase participation
➢ Community sprints
❖ Simplifying the review process
❖ Improve the software quality
❖ Support development of long term goal
Contract first approach
❖ What is the REST Contract?
❖ Standards based
❖ Best and wide adopted practice
❖ Unlock angular development
Test Driven Development
TDD ≠ fully tested
100% coverage ≠ TDD
"test with a purpose" and know why you are testing
something and to what level it needs to be tested
=
(REST Contract first)
Test Driven Development
«Write new code only if an automated test has failed»
(Kent Beck, Test-Driven Development by Example)
«Only ever write code to fix a failing test»
(Lasse Koskela, Test Driven)
«We produce well-designed, well-tested, and well-factored code
in small, verifiable steps»
(James Shore, Agile Development)
Test Infrastructure
TRAVIS CI
GIVEN
//1. A community-collection structure with
one parent community with
sub-community and
two collections.
//2. Three public items that are readable by
Anonymous with different subjects
This has to be like this because collections
don’t have anything else !?!?!?
Start a constructive review process
❖ REST Contract PRs should be created
before REST and Angular
Implementation PRs
❖ Bug fix PRs should come with tests that
can reproduce the bug and prove that it
has been fixed
What this mean???
https://jira.duraspace.org/browse/DS-4269
Clean and HQ code
❖ Code should follow the DSpace Code
Style Guide
❖ Javadocs (or TypeDocs) are required for
all code classes & public methods
❖ Small PR (< 1,000 lines of actual code)
❖ Test Coverage should increase
How this look like???
Speedup the review
❖ We are very glad for all the volunteer work both on coding than
review
❖ PRs requiring review are now assigned in the weekly meeting
to 1-2 reviewers
❖ Reviewers are expected to provide feedback within 1-2 weeks,
request for changes will be lifted in not followed up
❖ +2 from different institutions are required, exception for
obvious fix or PRs older than 3 weeks with not outstanding
negative vote
How we can review???
https://github.com/DSpace/DSpace/pull/2444
DSpace Testing in Docker
• Fully replicable test environment that
anyone can run.
• Runs independently from your test
infrastructure.
• Discard and re-create as needed.
Docker Resources - DSpace 7
• Images
– dspace - backend
– dspace-angular - frontend
– dspacedb - postgres
– dspacesolr - solr back end
• Compose files
– Orchestration
– https://github.com/DSpace-Labs/DSpace-Docker-Images
Automated Image Builds
• Each branch of DSpace
– 4x, 5x, 6x, 7x
• Master branch of DSpace-angular
• Prototype application to build PR
images on demand
Replicable Test Data
• Re-usable test data recorded here
– https://github.com/DSpace-Labs/AIP-Files
• Auto-ingest coded in compose files
• Seeking community contributions to
test datasets
– Not restricted by licenses
… the result so far
79% 76%
{ REST }
3 ̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴ 400
Questions?
Slides available at
https://tinyurl.com/or2019-dspace-hq
Sl
Angular UI live coverage: https://coveralls.io/github/DSpace/dspace-angular?branch=master
Backend live coverage: https://coveralls.io/github/DSpace/DSpace?branch=master
REST PRs: https://github.com/DSpace/DSpace/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22REST+API+v7%22
Angular PRs: https://github.com/DSpace/dspace-angular/pulls
Images Clker-Free-Vector-Images from Pixabay / PR logo from Commons Wikimedia - author GitHub

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

TDC 2021 - Better software, faster: Principles of Continuous Delivery and DevOps
TDC 2021 - Better software, faster: Principles of Continuous Delivery and DevOpsTDC 2021 - Better software, faster: Principles of Continuous Delivery and DevOps
TDC 2021 - Better software, faster: Principles of Continuous Delivery and DevOps
 
JUG CH September 2021 - Debugging distributed systems
JUG CH September 2021 - Debugging distributed systemsJUG CH September 2021 - Debugging distributed systems
JUG CH September 2021 - Debugging distributed systems
 
Towards Continuous Delivery at SoundCloud
Towards Continuous Delivery at SoundCloudTowards Continuous Delivery at SoundCloud
Towards Continuous Delivery at SoundCloud
 
Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014Building your Continuous Delivery Toolkit @ JUC SF 2014
Building your Continuous Delivery Toolkit @ JUC SF 2014
 
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan RomanDevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
 
Nascenia: Road to Software Industry
Nascenia: Road to Software IndustryNascenia: Road to Software Industry
Nascenia: Road to Software Industry
 
TDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael KuehneTDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
TDD for APIs @ Europython 2015, Bilbao by Michael Kuehne
 
DevOps
DevOpsDevOps
DevOps
 
#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360
 
Blocks to DevOps
Blocks to DevOpsBlocks to DevOps
Blocks to DevOps
 
DockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operationsDockerCon US 2016 - Scaling Open Source operations
DockerCon US 2016 - Scaling Open Source operations
 
Continuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practiceContinuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practice
 
DevOps(1) : What's DevOps - (MOSG)
DevOps(1) : What's DevOps - (MOSG)DevOps(1) : What's DevOps - (MOSG)
DevOps(1) : What's DevOps - (MOSG)
 
DevSecCon Tel Aviv 2018 - End2End containers SSDLC by Vitaly Davidoff
DevSecCon Tel Aviv 2018 - End2End containers SSDLC by Vitaly DavidoffDevSecCon Tel Aviv 2018 - End2End containers SSDLC by Vitaly Davidoff
DevSecCon Tel Aviv 2018 - End2End containers SSDLC by Vitaly Davidoff
 
Security Implications for a DevOps Transformation
Security Implications for a DevOps TransformationSecurity Implications for a DevOps Transformation
Security Implications for a DevOps Transformation
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018  Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
Daniel Cerecedo | From legacy to cloud... and beyond | Codemotion Madrid 2018
 
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
 
Java Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDDJava Beginners Meetup February 2017: Testing and TDD
Java Beginners Meetup February 2017: Testing and TDD
 

Ähnlich wie DSpace 7 - Creating High-Quality Software: Update to Development Practices

Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
Roberto Jr. Figueroa
 
Open.source.innovation.20070624
Open.source.innovation.20070624Open.source.innovation.20070624
Open.source.innovation.20070624
Vu Hung Nguyen
 

Ähnlich wie DSpace 7 - Creating High-Quality Software: Update to Development Practices (20)

The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOps
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloads
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOps
 
Test box bdd
Test box bddTest box bdd
Test box bdd
 
Waterfallacies V1 1
Waterfallacies V1 1Waterfallacies V1 1
Waterfallacies V1 1
 
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...Perforce on Tour 2015 -  Optimising the Developer Pipeline: Deliver Faster & ...
Perforce on Tour 2015 - Optimising the Developer Pipeline: Deliver Faster & ...
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Enter the mind of an Agile Developer
Enter the mind of an Agile DeveloperEnter the mind of an Agile Developer
Enter the mind of an Agile Developer
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
Devops Mindset Essentials
Devops Mindset EssentialsDevops Mindset Essentials
Devops Mindset Essentials
 
Devops - why, what and how?
Devops - why, what and how?Devops - why, what and how?
Devops - why, what and how?
 
Bdd with m spec
Bdd with m specBdd with m spec
Bdd with m spec
 
Case study
Case studyCase study
Case study
 
DevOps Roadshow - removing barriers between development and operations
DevOps Roadshow - removing barriers between development and operationsDevOps Roadshow - removing barriers between development and operations
DevOps Roadshow - removing barriers between development and operations
 
MyHeritage - QA Automations in a Continuous Deployment environment
MyHeritage -  QA Automations in a Continuous Deployment environmentMyHeritage -  QA Automations in a Continuous Deployment environment
MyHeritage - QA Automations in a Continuous Deployment environment
 
Test-Driven-Development.pptx
Test-Driven-Development.pptxTest-Driven-Development.pptx
Test-Driven-Development.pptx
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Open.source.innovation.20070624
Open.source.innovation.20070624Open.source.innovation.20070624
Open.source.innovation.20070624
 

Mehr von 4Science

From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
4Science
 
IIIF and DSpace 7 - IIIF Conference 2023.pdf
IIIF and DSpace 7 - IIIF Conference 2023.pdfIIIF and DSpace 7 - IIIF Conference 2023.pdf
IIIF and DSpace 7 - IIIF Conference 2023.pdf
4Science
 
DSpace-CRIS, anticipating innovation
DSpace-CRIS, anticipating innovationDSpace-CRIS, anticipating innovation
DSpace-CRIS, anticipating innovation
4Science
 
DSpace 7 ORCID Integration
DSpace 7 ORCID IntegrationDSpace 7 ORCID Integration
DSpace 7 ORCID Integration
4Science
 
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
4Science
 

Mehr von 4Science (20)

From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
From Digital Records to Digital Cultural Landscapes. Beyond Digital Library b...
 
“Adoption DSpace 7 and 8 Challenges and Solutions from Real Migration Experie...
“Adoption DSpace 7 and 8 Challenges and Solutions from Real Migration Experie...“Adoption DSpace 7 and 8 Challenges and Solutions from Real Migration Experie...
“Adoption DSpace 7 and 8 Challenges and Solutions from Real Migration Experie...
 
DSpace-CRIS design & Implementation
DSpace-CRIS design & ImplementationDSpace-CRIS design & Implementation
DSpace-CRIS design & Implementation
 
Status of discussions with repository platforms_ DSpace.pdf
Status of discussions with repository platforms_ DSpace.pdfStatus of discussions with repository platforms_ DSpace.pdf
Status of discussions with repository platforms_ DSpace.pdf
 
DSpace GLAM Infographic.pdf
DSpace GLAM Infographic.pdfDSpace GLAM Infographic.pdf
DSpace GLAM Infographic.pdf
 
DSpace CRIS EFS Miami.pdf
DSpace CRIS EFS Miami.pdfDSpace CRIS EFS Miami.pdf
DSpace CRIS EFS Miami.pdf
 
IIIF and DSpace 7 - IIIF Conference 2023.pdf
IIIF and DSpace 7 - IIIF Conference 2023.pdfIIIF and DSpace 7 - IIIF Conference 2023.pdf
IIIF and DSpace 7 - IIIF Conference 2023.pdf
 
DSpace-CRIS, anticipating innovation
DSpace-CRIS, anticipating innovationDSpace-CRIS, anticipating innovation
DSpace-CRIS, anticipating innovation
 
DSpace 7 ORCID Integration
DSpace 7 ORCID IntegrationDSpace 7 ORCID Integration
DSpace 7 ORCID Integration
 
Bringing IIIF to the DSpace community
Bringing IIIF to the DSpace communityBringing IIIF to the DSpace community
Bringing IIIF to the DSpace community
 
Implementing the Notify protocol and standard practices in DSpace
Implementing the Notify protocol and standard practices in DSpaceImplementing the Notify protocol and standard practices in DSpace
Implementing the Notify protocol and standard practices in DSpace
 
The EOSC DIH "ELD Advance" project
The EOSC DIH "ELD Advance" projectThe EOSC DIH "ELD Advance" project
The EOSC DIH "ELD Advance" project
 
DSpace implementation of the COAR Notify Project - status update
DSpace implementation of the COAR Notify Project - status updateDSpace implementation of the COAR Notify Project - status update
DSpace implementation of the COAR Notify Project - status update
 
Convegno Stelline 2020 - 4Science -16 settembre _ pubbliche
Convegno Stelline 2020 - 4Science -16 settembre _ pubblicheConvegno Stelline 2020 - 4Science -16 settembre _ pubbliche
Convegno Stelline 2020 - 4Science -16 settembre _ pubbliche
 
Convegno Stelline 2020 - 4Science -16 settembre _ accademiche
Convegno Stelline 2020 - 4Science -16 settembre _ accademicheConvegno Stelline 2020 - 4Science -16 settembre _ accademiche
Convegno Stelline 2020 - 4Science -16 settembre _ accademiche
 
Convegno Stelline 2020 - 4Science
Convegno Stelline 2020 - 4Science Convegno Stelline 2020 - 4Science
Convegno Stelline 2020 - 4Science
 
DSpace-CRIS 7: What is Coming? OR2020
DSpace-CRIS 7: What is Coming? OR2020DSpace-CRIS 7: What is Coming? OR2020
DSpace-CRIS 7: What is Coming? OR2020
 
News about DSpace-CRIS Anwendertreffen 2020
News about DSpace-CRIS Anwendertreffen 2020News about DSpace-CRIS Anwendertreffen 2020
News about DSpace-CRIS Anwendertreffen 2020
 
Digital library: riflessioni su scelte e obiettivi. Visibilità delle collezio...
Digital library: riflessioni su scelte e obiettivi. Visibilità delle collezio...Digital library: riflessioni su scelte e obiettivi. Visibilità delle collezio...
Digital library: riflessioni su scelte e obiettivi. Visibilità delle collezio...
 
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
How to enhance your DSpace repository: use cases for DSpace-CRIS, DSpace-RDM,...
 

Kürzlich hochgeladen

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Kürzlich hochgeladen (20)

Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 

DSpace 7 - Creating High-Quality Software: Update to Development Practices

  • 1. Andrea Bollini, 4Science Terry Brady, Georgetown University Library Giuseppe Digilio, 4Science Tim Donohue, DuraSpace Creating High-Quality Software: Update to Development Practices
  • 2. About ❖ Why changes? ❖ Contract first approach ❖ Test Driven Development ❖ The review process ❖ … the result so far
  • 3. Why changes? ❖ Increase participation ➢ Community sprints ❖ Simplifying the review process ❖ Improve the software quality ❖ Support development of long term goal
  • 4. Contract first approach ❖ What is the REST Contract? ❖ Standards based ❖ Best and wide adopted practice ❖ Unlock angular development
  • 5. Test Driven Development TDD ≠ fully tested 100% coverage ≠ TDD "test with a purpose" and know why you are testing something and to what level it needs to be tested = (REST Contract first)
  • 6. Test Driven Development «Write new code only if an automated test has failed» (Kent Beck, Test-Driven Development by Example) «Only ever write code to fix a failing test» (Lasse Koskela, Test Driven) «We produce well-designed, well-tested, and well-factored code in small, verifiable steps» (James Shore, Agile Development)
  • 8. GIVEN //1. A community-collection structure with one parent community with sub-community and two collections. //2. Three public items that are readable by Anonymous with different subjects This has to be like this because collections don’t have anything else !?!?!?
  • 9. Start a constructive review process ❖ REST Contract PRs should be created before REST and Angular Implementation PRs ❖ Bug fix PRs should come with tests that can reproduce the bug and prove that it has been fixed
  • 11. Clean and HQ code ❖ Code should follow the DSpace Code Style Guide ❖ Javadocs (or TypeDocs) are required for all code classes & public methods ❖ Small PR (< 1,000 lines of actual code) ❖ Test Coverage should increase
  • 12. How this look like???
  • 13. Speedup the review ❖ We are very glad for all the volunteer work both on coding than review ❖ PRs requiring review are now assigned in the weekly meeting to 1-2 reviewers ❖ Reviewers are expected to provide feedback within 1-2 weeks, request for changes will be lifted in not followed up ❖ +2 from different institutions are required, exception for obvious fix or PRs older than 3 weeks with not outstanding negative vote
  • 14. How we can review??? https://github.com/DSpace/DSpace/pull/2444
  • 15. DSpace Testing in Docker • Fully replicable test environment that anyone can run. • Runs independently from your test infrastructure. • Discard and re-create as needed.
  • 16. Docker Resources - DSpace 7 • Images – dspace - backend – dspace-angular - frontend – dspacedb - postgres – dspacesolr - solr back end • Compose files – Orchestration – https://github.com/DSpace-Labs/DSpace-Docker-Images
  • 17. Automated Image Builds • Each branch of DSpace – 4x, 5x, 6x, 7x • Master branch of DSpace-angular • Prototype application to build PR images on demand
  • 18. Replicable Test Data • Re-usable test data recorded here – https://github.com/DSpace-Labs/AIP-Files • Auto-ingest coded in compose files • Seeking community contributions to test datasets – Not restricted by licenses
  • 19. … the result so far 79% 76% { REST } 3 ̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴̴ 400
  • 20. Questions? Slides available at https://tinyurl.com/or2019-dspace-hq Sl Angular UI live coverage: https://coveralls.io/github/DSpace/dspace-angular?branch=master Backend live coverage: https://coveralls.io/github/DSpace/DSpace?branch=master REST PRs: https://github.com/DSpace/DSpace/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22REST+API+v7%22 Angular PRs: https://github.com/DSpace/dspace-angular/pulls Images Clker-Free-Vector-Images from Pixabay / PR logo from Commons Wikimedia - author GitHub