Skip to content

Make XcodeGen the only authoring path for generated Apple projects #183

Description

@gaelic-ghost

Decision

For Socket’s Apple bootstrap workflows, XcodeGen is the only supported authoring path for Xcode projects.

Do not retain, recommend, or add a standard Xcode-created-project fallback. Do not hand-edit generated .pbxproj files.

Why

The project specification needs one clear, reviewable source of truth. A split between generated project specs and manual Xcode project creation/editing introduces silent drift, makes bootstrap behavior non-deterministic, and leaves no reliable ownership model for build settings, target graphs, schemes, and local-package dependencies.

Required changes

  • Make project.yml (and its referenced .xcconfig, entitlement, scheme, and resource files) the authoritative project definition.
  • Generate every Xcode project through xcodegen generate.
  • Remove the standard Xcode project-creation / manual-project fallback from Apple bootstrap guidance and scripts.
  • Treat an unavailable xcodegen binary as a clear blocked prerequisite, not a reason to switch project-authoring models.
  • Keep the generated .pbxproj checked in but never manually edited.
  • Ensure workspace composition also stays declarative where possible; do not make users rely on hand-maintained generated-project state.
  • Update validation and tests to enforce the policy.

Acceptance criteria

  1. Every supported native-app bootstrap run produces an XcodeGen spec and generates its .xcodeproj from it.
  2. No bootstrap documentation presents manual Xcode project creation as an alternate supported route.
  3. The workflow fails clearly when XcodeGen is unavailable.
  4. Tests cover the generated-project-only contract.

This is a deliberate architecture boundary, not a temporary preference.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions