ProficientNowTechRFCs

14. Rationale

RFC-DEVELOPER-PLATFORM-0001                                      Section 14
Category: Standards Track                                       Rationale

14. Rationale

← Platform Integrations | Index | Next: Evolution →


14.1 Portal Framework Selection

14.1.1 Decision

Selected: Backstage (CNCF Incubating)

Backstage is selected as the developer portal framework. Backstage is an open platform for building developer portals, originally created by Spotify and now a CNCF Incubating project.

14.1.2 Selection Criteria

CriterionWeightRationale
Open sourceHighNo vendor lock-in
CNCF governanceHighCommunity-driven roadmap
Plugin ecosystemHighExtensibility for platform tools
Production adoptionHighProven at scale
Kubernetes-nativeMediumAligns with platform
Self-hostedMediumData sovereignty
Active communityMediumSupport and contributions

14.1.3 Decision Rationale

Backstage was selected because:

FactorRationaleInvariant Support
Open sourceNo licensing costs, auditable codeCost, transparency
Plugin architectureEnables platform-specific integrationsINV-14
Permission frameworkBuilt-in capability-based authorizationINV-2, INV-3
Catalog modelEntity-based service registryINV-7
Template systemGolden path implementationINV-5
TechDocsDocumentation-as-codeINV-8
OIDC supportKeycloak integrationINV-1
AdoptionOver 3,400 organizations, proven patternsRisk reduction

14.2 Rejected Alternatives

14.2.1 Port

Description: Port is a commercial Internal Developer Platform with visual no-code configuration.

Why It Was Attractive:

  • No-code configuration for rapid setup
  • Built-in data model for common patterns
  • Visual workflow builder
  • Managed service option

Why It Was Rejected:

ReasonImpactInvariant Violation
Commercial licensingRecurring costs, budget dependencyCost
Vendor lock-inTied to vendor roadmapOperational risk
Limited extensibilityCannot implement custom integrationsINV-14
Managed serviceLess control over data and securitySecurity

Conclusion: Port's commercial model and limited extensibility conflict with platform requirements for open, extensible infrastructure.

14.2.2 OpsLevel

Description: OpsLevel is a commercial service catalog and developer portal focused on service ownership and operational maturity.

Why It Was Attractive:

  • Strong service ownership model
  • Maturity scoring
  • Built-in standards enforcement
  • Integration marketplace

Why It Was Rejected:

ReasonImpactInvariant Violation
Commercial licensingRecurring costsCost
Limited customizationCannot implement platform-specific workflowsINV-5
Less flexible templatesConstrained golden path implementationINV-5
Closed sourceCannot audit or extend core functionalityTransparency

Conclusion: OpsLevel's commercial model and customization limitations do not align with platform extensibility requirements.

14.2.3 Cortex

Description: Cortex is a commercial Internal Developer Portal with AI-powered features and analytics.

Why It Was Attractive:

  • AI-powered insights
  • Strong analytics and reporting
  • Service maturity tracking
  • Automated documentation

Why It Was Rejected:

ReasonImpactInvariant Violation
Commercial licensingRecurring costsCost
Black-box AICannot audit decision logicTransparency
Vendor dependencyPlatform evolution tied to vendorOperational risk
Limited self-hostingData sovereignty concernsSecurity

Conclusion: Cortex's AI-first approach and commercial model introduce unacceptable vendor dependency and transparency limitations.

14.2.4 Custom Build

Description: Building a custom developer portal from scratch using standard web frameworks.

Why It Was Attractive:

  • Complete control over functionality
  • Exact fit for requirements
  • No external dependencies
  • Custom user experience

Why It Was Rejected:

ReasonImpactInvariant Violation
Development effortSignificant engineering investmentResource
Maintenance burdenOngoing feature developmentResource
No ecosystemMust build all integrationsINV-14
Reinventing patternsDuplicating solved problemsINV-5

Conclusion: Custom development would require significant investment to replicate functionality already proven in Backstage, violating the golden path principle of building on established patterns.

14.2.5 Flightdeck (Arctir)

Description: Flightdeck is an open-source simplified Backstage deployment wrapper.

Why It Was Attractive:

  • Simplified Backstage deployment
  • Pre-configured plugins
  • Reduced setup complexity
  • Open source

Why It Was Rejected:

ReasonImpact
Smaller communityFewer plugins, less support
Less documentationHigher learning curve
Dependency layerAdditional abstraction to maintain
Backstage subsetMay limit future extensibility

Conclusion: While Flightdeck simplifies deployment, direct Backstage usage provides greater flexibility and community support.


14.3 Design Decisions

14.3.1 Capability-Based UI

Decision: Implement capability-based UI rendering instead of runtime authorization blocking.

Rationale:

FactorJustification
User experienceUsers not confused by unavailable options
Error reductionNo "access denied" scenarios
Security modelAuthorization through visibility
AlignmentMatches RFC-IAM-0001 authorization model

Alternatives Considered:

  • Runtime authorization blocking: Rejected due to poor UX and error scenarios
  • Role-based UI templates: Rejected due to maintenance complexity

14.3.2 GitOps-Only Output

Decision: All self-service actions produce Git commits, no direct API modifications.

Rationale:

FactorJustification
Audit trailAll changes tracked in version control
Peer reviewOptional review for sensitive changes
RollbackGit-based rollback capability
ConsistencySingle deployment pathway

Alternatives Considered:

  • Direct API calls: Rejected due to audit trail gaps and bypass risk
  • Hybrid approach: Rejected due to inconsistent operational model

14.3.3 Documentation Colocation

Decision: Require documentation in code repositories (TechDocs), not external wikis.

Rationale:

FactorJustification
CurrencyDocumentation updated with code
OwnershipSame team owns code and docs
ReviewDocumentation changes in PRs
DiscoveryDocs visible in developer workflow

Alternatives Considered:

  • External wiki: Rejected due to drift and ownership issues
  • Hybrid approach: Rejected due to discoverability fragmentation

14.4 Trade-offs

14.4.1 Self-Hosting Trade-off

Trade-off: Self-hosted Backstage requires operational investment.

BenefitCost
Data sovereigntyInfrastructure management
Customization freedomUpgrade responsibility
No licensing feesEngineering time

Mitigation: Helm chart deployment, GitOps management, documented runbooks.

14.4.2 Plugin Development Trade-off

Trade-off: Platform-specific plugins require development effort.

BenefitCost
Exact integration fitDevelopment time
Platform-specific UXMaintenance burden
No external dependencyTesting requirements

Mitigation: Start with community plugins, develop custom plugins incrementally.

14.4.3 Golden Path Trade-off

Trade-off: Opinionated templates reduce flexibility.

BenefitCost
ConsistencyLess flexibility
Compliance by defaultCannot deviate from standard
Faster onboardingMay not fit all use cases

Mitigation: Multiple templates for common scenarios, escape hatches for exceptions.


Document Navigation


End of Section 14 — RFC-DEVELOPER-PLATFORM-0001