UC3 designs, builds, and stewards open-source services that support digital preservation, research data management, data publication, and persistent identifiers across the University of California system. Our product development approach reflects our commitment to transparency, sustainability, collaboration, and long-term stewardship.
We organize our teams with clear roles, shared standards, and iterative development practices that allow us to respond thoughtfully to evolving community needs while maintaining reliable and secure services. The sections below describe how we structure our teams and how we work.
UC3 Product Development Values
To achieve transparency, have rigor, support curiosity, with continuous attention to integrity, UC3 relies on core values expressed in The Agile Manifesto:
- Individuals and personal interactions over process and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Who we are
Our Organization
California Digital Library (CDL) is a systemwide resource for the University of California, not tied to any particular UC campus. We position ourselves to work across all the UCs and complement and amplify the work being done at campus libraries and research programs. We do this through consulting, collaborations, as well as software development. As a result, CDL is a good mixture of academic research library, product development, and outreach.
UC Curation Center (UC3) is one of 4 programs at CDL. Our focus is to create value for UC within the broad discipline of digital curation. The specific topic areas include digital preservation, research data management, data publication, and persistent identifiers. Our services support each of these areas through the development of software applications: Merritt, DMP Tool, and EZID.
Our Product Development Teams
To achieve maximum impact with limited resources, we must be efficient with our development processes and team structures. Our processes rely upon principles of transparency, collaboration, iterative development, simplicity, security, and sustainability. Each product team consists of a product manager, a development team of one or more developers, and a shared UC3 DevOps engineer, with ad hoc support from CDL’s User Experience (UX) team for accessibility and usability, and Infrastructure and Support (IAS) for network administration, security administration, and cloud consulting.
Product Manager
The Product Manager serves as the primary point of contact for each product, leading the vision and coordinating the team’s work to ensure the service meets the needs of its users. They define priorities, clarify requirements, and ensure alignment between stakeholder needs and development efforts.
Product Managers obtain key input by engaging regularly with stakeholders through outreach, participation in relevant communities, and consultation with organizational leadership. Participation includes conferences, working groups and standards organizations to represent the systems that they manage. Through this ongoing engagement, product managers catalog the needs of their service. Work is prioritized by assessing the value-add and impact of these needs which drive the iterative implementation carried out by the development team.
They maintain and prioritize the product backlog, facilitate sprint planning, and provide clarity around goals, constraints, and expected outcomes. By translating stakeholder input into actionable backlog items and iterative releases, the Product Manager supports steady progress while balancing feature development with long-term technical sustainability.
In partnership with the Development Team and Technical Leads, the Product Manager helps ensure that product direction remains responsive, focused, and aligned with long-term platform goals.
Development Team
Developers are both CDL employees and external developers from partner organizations or other UC campuses. To ensure continuity and cohesion within the internal team, external developers tend to be dedicated to a particular service or topic area while UC3 developers are intended to be distributed across the UC3 services. All services share a central UC3 Development Manager to oversee and coordinate activities, processes, and practices across the teams. Additionally, we employ a DevOps/SysAdmin engineer to provide infrastructure support to all UC3 development teams. Together, the development teams liaison with the IAS team.
UC3 product teams collaborate with CDL’s cross-functional teams on an as-needed basis to deliver the best possible service. For example, consulting with the CDL UX Team ensures the best user experience for our end-users and accessibility standards and best practices are being met.
Technical Leads
Each product team includes one or more Technical Leads. Technical Leads are senior developers who provide technical direction within the Development Team. They are responsible for advocating for the long-term health and maintainability of the platform, ensuring that architectural decisions support both current needs and future growth.
Technical Leads assess the feasibility of new product features within the context of the existing architecture and help identify foundational components that enable incremental delivery of more complex capabilities over time. They play an important role in managing technical debt, planning refactors, and championing software upgrades that support the long-term evolution of the service. In close partnership with the Product Manager, Technical Leads help translate prioritized work into actionable development efforts while maintaining architectural integrity and technical coherence.
DevOps Engineer
UC3 is unique within CDL in embedding a dedicated DevOps Engineer within the development team. Working in close partnership with Technical Leads, the DevOps Engineer advises on cloud infrastructure decisions and emerging technologies, with a focus on open-source alignment, responsible cost stewardship, and long-term sustainability. This role supports development velocity while building secure, reliable, and scalable foundations that support long-term growth and innovation.
Using Resources Wisely
UC3 operates with shared standards, documentation, and cross-service familiarity to remain flexible and resilient. By maintaining consistent development practices and fostering collaboration across teams, we reduce single points of dependency and support continuity across services.
Operational documentation, recurring reviews, and a practice of ensuring that at least two developers are familiar with each service’s architecture and processes enable smooth transitions when responsibilities shift. This shared stewardship model strengthens sustainability while allowing us to adapt to evolving priorities.
How We Work
Our development philosophy centers on fostering a culture and environment that supports the unique needs of each service while adhering to shared best practices across teams. These practices span knowledge sharing, agile development, deployment strategies, release management, testing, and operational support.
The structure of our product development teams supports services that are reliable, highly available, performant, and sustainable. These outcomes are achieved through the product management and software development practices described below.
UC3 prioritizes open-source technologies and open development practices whenever feasible. By building and contributing to open ecosystems, we promote transparency, community collaboration, sustainability, and long-term stewardship of our services.
UC3 Product Management Practices
The Product Manager works closely with the Development Team to incorporate technical considerations such as architectural enhancements, scalability improvements, maintenance, and long-term sustainability.
Teams work in agile sprints of two to three weeks, with regular standups, sprint planning, reviews, and retrospectives. This framework supports adaptability, allowing us to respond thoughtfully to evolving user needs and technology trends.
Rather than committing to long-term delivery dates months or years in advance, we maintain a prioritized product backlog. This approach allows us to continuously refine focus areas, incorporate new information, and adjust direction as needed while maintaining delivery discipline within each sprint.
To support predictable delivery and protect focus time, work requests and communications are coordinated through the Product Manager. This ensures clear prioritization, alignment across stakeholders, and reduced disruption to sprint commitments.
UC3 Software Development
All work is guided by our shared development principles outlined below.
Shared Development Principles
Code for Everything – Infrastructure and applications are managed through version-controlled code.
Secure by Default – We apply least-privilege access, encryption, proactive vulnerability management, and regular patching.
Make It Visible – Services include logging, monitoring, metrics, and alerting to quickly detect and understand issues.
Share and Document – Architectural decisions, patterns, and operational knowledge are documented and shared.
Spend Wisely – We design with cost awareness in mind, balancing scalability, performance, and sustainability.
Software Development Responsibilities
The Development Team is responsible for designing, building, testing, deploying, and maintaining UC3 service applications. This includes:
- Application and infrastructure architectural design and implementation
- Feature development and bug resolution
- Development of APIs and supporting tools
- Maintenance of codebases and monitoring of application health
- Robust automated test coverage
- Continuous integration and deployment processes
- Ensuring high availability and operational reliability
- Addressing security concerns and vulnerabilities
Software Development Practices
Architecture & Design
UC3 services are hosted in AWS. Architectural proposals are shared with Development Team members and the Infrastructure Application Support (IAS) team early in the design process to gather feedback and ensure alignment. This collaborative approach strengthens solutions and promotes knowledge sharing.
Development, Build & Test
While implementation strategies vary across programming languages and services, UC3 teams share common development practices. All code changes undergo peer review through pull requests, and automated builds are used to validate changes consistently. Automated unit and integration tests are executed to verify functionality and reduce the risk of regression.
Development, staging, and production environments are managed with controlled access policies to ensure appropriate separation and security. Increasingly, teams adopt containerized environments to standardize runtime configurations and improve consistency across systems. Monitoring, metrics, and scaling configurations are incorporated into the development process to support reliability and performance as services evolve.
Deployment & Release Strategy
Services support continuous integration and automated deployments through workflow tools that enable controlled releases and rollback capability when necessary.
Release management includes tagging specific versions of software, deploying through automated processes, and providing release notes to communicate changes.
Operations & Monitoring
We operate highly available services with continuous monitoring of application and system metrics. Logging, alerting, and dashboarding tools support rapid issue identification and response.
Releases and patching occur within defined maintenance windows, and established incident management procedures guide triage and resolution. As our services migrate to container-based and serverless deployments, our applications are designed to be disposable and re-createable. Performance and load issues are proactively analyzed to maintain reliability at scale.
Our goal is to minimize service disruption and support sustainable, maintainable systems.
Security, Privacy, and Accessibility
Security is an ongoing responsibility. We regularly assess and address potential vulnerabilities across access controls, environment management, encryption, network security, secrets management, and monitoring practices.
Privacy considerations guide our data practices. We store only what is necessary, protect it through secure methods, and remove data when appropriate.
Accessibility is integrated into development from the outset. UC3 services are designed to meet WCAG 2.1 standards, and accessibility is assessed throughout the development lifecycle to ensure usability for all users.
Together, these practices reflect UC3’s commitment to building and sustaining services that serve the University of California community over the long term. By combining clear roles, shared standards, and open development practices, we aim to deliver reliable, secure, and adaptable platforms that evolve alongside the needs of researchers and libraries.