Developer Guide
Contents:
- Introduction
- Development Environment
- Windows Development
- Tips
- Iterating on Code and Redeploying
- Netbeans Connector Chrome Extension
- Thumbnails
- Database Schema Exploration
- Deploying With
asadmin
- Running the Dataverse Software Installation Script in Non-Interactive Mode
- Preventing Payara from Phoning Home
- Solr
- Git
- Sample Data
- Switching from Glassfish to Payara
- UI Pages Development
- Troubleshooting
- Version Control
- Where to Find the Dataverse Software Code
- Branching Strategy
- How to Make a Pull Request
- Find or Create a GitHub Issue
- Communicate Which Issue You Are Working On
- Create a New Branch Off the develop Branch
- Commit Your Change to Your New Branch
- Writing a Release Note Snippet
- Push Your Branch to GitHub
- Make a Pull Request
- Replace Issue with Pull Request
- Make Sure Your Pull Request Has Been Advanced to Code Review
- Summary of Git commands
- How to Resolve Conflicts in Your Pull Request
- Adding Commits to a Pull Request from a Fork
- Handing a Pull Request from a “develop” Branch
- SQL Upgrade Scripts
- Testing
- The Health of a Codebase
- Testing in Depth
- Unit Tests
- Integration Tests
- Measuring Coverage of API Tests
- Load/Performance Testing
- Continuous Integration
- Accessibility Testing
- Future Work
- API Design
- Security
- Performance
- Problem Statement
- Current Practices
- Cache When You Can
- Use Async
- Use a Queue
- Offload Expensive Operations Outside the App Server
- Drop to Raw SQL as Necessary
- Add Indexes to Database Tables
- Find Bottlenecks with a Profiler
- Warn Developers in Code Comments
- Write Docs for Devs about Perf
- Horizontal Scaling of App Server
- Code Review and QA
- Locust Testing at Release Time
- Issue Tracking and Prioritization
- Document Performance Tools
- Google Analytics
- Abandoned Tools and Practices
- Areas of Particular Concern
- Suggested Practices
- Implement the Frontend Plan for Performance
- Set up Query Counter in Jenkins
- Count Database Queries per API Test
- Teach Developers How to Do Performance Testing Locally
- Automate Performance Testing
- Make Production Data or Equivalent Available to Developers
- Automate Performance Testing with Production Data or Equivalent
- Use Monitoring as Performance Testing
- Learn from Training and Conferences
- Learn from the Community How They Monitor Performance
- Teach the Community to Do Performance Testing
- Conclusion
- Dependency Management
- Debugging
- Coding Style
- Consuming Configuration
- Deployment
- Docker, Kubernetes, and Containers
- Making Releases
- Introduction
- Regular or Hotfix?
- Ensure Issues Have Been Created
- Declare a Code Freeze
- Conduct Performance Testing
- Conduct Smoke Testing
- Write Release Notes
- Upgrade Instructions for Internal
- Deploy Release Candidate to Demo
- Prepare Release Branch
- Merge “develop” into “master”
- Add Milestone to Pull Requests and Issues
- (Optional) Test Docker Images
- Build the Guides for the Release
- Create a Draft Release on GitHub
- Run a Build to Create the War File
- Build Installer (dvinstall.zip)
- Make Artifacts Available for Download
- Publish the Release
- Update Guides Link
- Close Milestone on GitHub and Create a New One
- Update the Container Base Image Version Property
- Deploy Final Release on Demo
- Update SchemaSpy
- Alert Translators About the New Release
- Add the Release to the Dataverse Roadmap
- Announce the Release on the Dataverse Blog
- Announce the Release on the Mailing List
- For Hotfixes, Merge Hotfix Branch into “develop” and Rename SQL Scripts
- Making Library Releases
- Metadata Export Formats
- Tools
- Universal Numerical Fingerprint (UNF)
- Make Data Count
- Shibboleth, OAuth and OIDC
- Geospatial Data
- SELinux
- Big Data Support
- Auxiliary File Support
- Direct DataFile Upload/Replace API
- Globus Transfer API
- Dataset Semantic Metadata API
- Dataset Migration API
- Workflows
- Font Custom
- Classic Dev Environment
- Quick Start (Docker)
- Classic Dev Environment
- Set Up Dependencies
- Run the Dataverse Software Installer Script
- Configure Your Development Environment for Publishing
- Configure Your Development Environment for GUI Edits
- Next Steps