|
| 1 | +// SPDX-License-Identifier: MIT AND Palimpsest-0.8 |
| 2 | +// SPDX-FileCopyrightText: 2024-2025 hyperpolymath |
1 | 3 |
|
| 4 | += CCCP: Campaign for Cooler Coding and Programming |
| 5 | +:author: hyperpolymath |
| 6 | +:revnumber: 1.0.0 |
| 7 | +:revdate: 2025-12-26 |
| 8 | +:toc: left |
| 9 | +:toclevels: 3 |
| 10 | +:icons: font |
| 11 | +:source-highlighter: rouge |
| 12 | + |
| 13 | +image:https://img.shields.io/badge/CCCP-Certified-c41e3a[CCCP Certified] |
| 14 | +image:https://img.shields.io/badge/RSR-Gold-ffd700[RSR Gold] |
| 15 | + |
| 16 | +== What is CCCP? |
| 17 | + |
| 18 | +The *Campaign for Cooler Coding and Programming* is the philosophical and ethical foundation of the link:https://github.com/hyperpolymath/rhodium-standard-repositories[Rhodium Standard Repositories (RSR)] framework. |
| 19 | + |
| 20 | +CCCP defines *principles and policies* for building software that is: |
| 21 | + |
| 22 | +* *Emotionally safe* — development without shame or anxiety |
| 23 | +* *Technically excellent* — type-safe, memory-safe, formally verified |
| 24 | +* *Politically autonomous* — independent of Big Tech lock-in |
| 25 | + |
| 26 | +== The Four Temperatures of "Cooler" |
| 27 | + |
| 28 | +[cols="1,3"] |
| 29 | +|=== |
| 30 | +| Temperature | Meaning |
| 31 | + |
| 32 | +| *Emotional* |
| 33 | +| Reduced anxiety through reversibility, safe experimentation, no shame in mistakes |
| 34 | + |
| 35 | +| *Computational* |
| 36 | +| Efficient systems, no unnecessary cycles, minimal runtime overhead |
| 37 | + |
| 38 | +| *Social* |
| 39 | +| Warm community with graduated trust, cool-headed technical decisions |
| 40 | + |
| 41 | +| *Political* |
| 42 | +| Resistance to monopolistic tooling, anti-corporate lock-in, autonomy through offline-first design |
| 43 | +|=== |
| 44 | + |
| 45 | +== Core Principles |
| 46 | + |
| 47 | +=== 1. Post-JavaScript Liberation |
| 48 | + |
| 49 | +Rejecting the npm/node ecosystem's fragility in favor of: |
| 50 | + |
| 51 | +* *ReScript* — OCaml soundness, compiles to JS |
| 52 | +* *Rust* — Systems programming with memory safety |
| 53 | +* *Deno* — Secure-by-default runtime (when JS is unavoidable) |
| 54 | + |
| 55 | +=== 2. Offline-First as Autonomy |
| 56 | + |
| 57 | +* Work continues without constant connectivity |
| 58 | +* No cloud-dependent tooling |
| 59 | +* SaltRover for offline repository management |
| 60 | + |
| 61 | +=== 3. Distributed State Without Coordination |
| 62 | + |
| 63 | +* *CRDTs* eliminate locking and cache invalidation |
| 64 | +* Conflict-free by design |
| 65 | +* No single point of failure |
| 66 | + |
| 67 | +=== 4. Formal Verification as Mutual Aid |
| 68 | + |
| 69 | +* Correctness is an act of solidarity |
| 70 | +* SPARK/Ada for safety-critical paths |
| 71 | +* Type systems prevent bugs before they happen |
| 72 | + |
| 73 | +=== 5. Community Over Ego |
| 74 | + |
| 75 | +* TPCF (Tri-Perimeter Contribution Framework) |
| 76 | +* Graduated trust without gatekeeping |
| 77 | +* Collective ownership patterns |
| 78 | + |
| 79 | +=== 6. Language Polyglotism as Resistance |
| 80 | + |
| 81 | +Using diverse languages resists monoculture: |
| 82 | + |
| 83 | +[cols="1,2"] |
| 84 | +|=== |
| 85 | +| Approved | Banned |
| 86 | + |
| 87 | +| ReScript, Rust, Deno, Gleam, OCaml, Ada, Julia, Guile Scheme, Nickel |
| 88 | +| TypeScript, Node.js/npm, Go, Python (except SaltStack), Java/Kotlin, Swift |
| 89 | +|=== |
| 90 | + |
| 91 | +== Language Policy |
| 92 | + |
| 93 | +=== Allowed Languages |
| 94 | + |
| 95 | +[cols="1,2,2"] |
| 96 | +|=== |
| 97 | +| Language | Use Case | Notes |
| 98 | + |
| 99 | +| *ReScript* |
| 100 | +| Primary application code |
| 101 | +| Compiles to JS, OCaml type safety |
| 102 | + |
| 103 | +| *Rust* |
| 104 | +| Systems, performance, WASM |
| 105 | +| Preferred for CLI tools |
| 106 | + |
| 107 | +| *Deno* |
| 108 | +| Runtime & package management |
| 109 | +| Replaces Node/npm/Bun |
| 110 | + |
| 111 | +| *Gleam* |
| 112 | +| Backend services |
| 113 | +| BEAM or JS target |
| 114 | + |
| 115 | +| *OCaml* |
| 116 | +| Compilers, formal methods |
| 117 | +| Strong type system |
| 118 | + |
| 119 | +| *Ada* |
| 120 | +| Safety-critical systems |
| 121 | +| SPARK verification |
| 122 | + |
| 123 | +| *Julia* |
| 124 | +| Data processing, batch scripts |
| 125 | +| High-performance numerics |
| 126 | + |
| 127 | +| *Guile Scheme* |
| 128 | +| State/meta files |
| 129 | +| STATE.scm, META.scm, ECOSYSTEM.scm |
| 130 | + |
| 131 | +| *Nickel* |
| 132 | +| Configuration language |
| 133 | +| Type-safe configs |
| 134 | + |
| 135 | +| *Bash/POSIX Shell* |
| 136 | +| Scripts, automation |
| 137 | +| Keep minimal |
| 138 | +|=== |
| 139 | + |
| 140 | +=== Banned Languages |
| 141 | + |
| 142 | +[cols="1,2,2"] |
| 143 | +|=== |
| 144 | +| Banned | Replacement | Rationale |
| 145 | + |
| 146 | +| *TypeScript* |
| 147 | +| ReScript |
| 148 | +| Unsound gradual typing |
| 149 | + |
| 150 | +| *Node.js* |
| 151 | +| Deno |
| 152 | +| Insecure by default |
| 153 | + |
| 154 | +| *npm/Bun/pnpm/yarn* |
| 155 | +| Deno |
| 156 | +| Supply chain risks |
| 157 | + |
| 158 | +| *Go* |
| 159 | +| Rust |
| 160 | +| Error handling, generics |
| 161 | + |
| 162 | +| *Python* (general) |
| 163 | +| ReScript/Rust |
| 164 | +| No static types |
| 165 | + |
| 166 | +| *Java/Kotlin* |
| 167 | +| Rust/Tauri/Dioxus |
| 168 | +| JVM overhead, platform lock-in |
| 169 | + |
| 170 | +| *Swift* |
| 171 | +| Tauri/Dioxus |
| 172 | +| Platform lock-in |
| 173 | +|=== |
| 174 | + |
| 175 | +NOTE: Python is permitted *only* for SaltStack configuration management (temporary exception). |
| 176 | + |
| 177 | +=== Mobile Development |
| 178 | + |
| 179 | +No exceptions for Kotlin/Swift. Use Rust-first approach: |
| 180 | + |
| 181 | +1. *Tauri 2.0+* — Web UI (ReScript) + Rust backend, MIT/Apache-2.0 |
| 182 | +2. *Dioxus* — Pure Rust native UI, MIT/Apache-2.0 |
| 183 | + |
| 184 | +Both are FOSS with independent governance. |
| 185 | + |
| 186 | +== Package Management Hierarchy |
| 187 | + |
| 188 | +[cols="1,2"] |
| 189 | +|=== |
| 190 | +| Priority | Tool |
| 191 | + |
| 192 | +| *Primary* |
| 193 | +| Guix (guix.scm) |
| 194 | + |
| 195 | +| *Fallback* |
| 196 | +| Nix (flake.nix) |
| 197 | + |
| 198 | +| *JS deps* |
| 199 | +| Deno (deno.json imports) |
| 200 | +|=== |
| 201 | + |
| 202 | +== Migration Priority |
| 203 | + |
| 204 | +When encountering banned languages: |
| 205 | + |
| 206 | +1. *Immediate*: Block new code in banned languages |
| 207 | +2. *Short-term*: Convert TypeScript to ReScript |
| 208 | +3. *Medium-term*: Replace Node/npm with Deno |
| 209 | +4. *Long-term*: Rewrite Go/Python in Rust |
| 210 | + |
| 211 | +== The Citadel of Code Creation |
| 212 | + |
| 213 | +The *Citadel* is where RSR meets CCCP — the actual implementation pattern that embodies both. |
| 214 | + |
| 215 | +=== What Makes It a "Citadel"? |
| 216 | + |
| 217 | +* *Defensible Position* — Local dev environment can't be taken away by service outages |
| 218 | +* *Self-Sufficient* — Nix + Podman + SaltRover = complete autonomy |
| 219 | +* *Collective Defense* — Architecture makes mutual aid easier than isolation |
| 220 | +* *Safe Haven* — Emotionally and technically safe to experiment |
| 221 | + |
| 222 | +== Relationship to RSR |
| 223 | + |
| 224 | +[source] |
| 225 | +---- |
| 226 | +CCCP (Philosophy) |
| 227 | + │ |
| 228 | + ▼ |
| 229 | +RSR (Standards Framework) |
| 230 | + ├── Defines 150+ compliance criteria |
| 231 | + ├── CCCP principles embedded |
| 232 | + └── Tier mapping (Bronze/Silver/Gold/Rhodium) |
| 233 | + │ |
| 234 | + ▼ |
| 235 | +Your Repository (Implementation) |
| 236 | + ├── Emotionally safe development |
| 237 | + ├── Technically excellent |
| 238 | + └── Politically autonomous |
| 239 | +---- |
| 240 | + |
| 241 | +== CCCP Certification |
| 242 | + |
| 243 | +Projects can display CCCP certification when they: |
| 244 | + |
| 245 | +1. Use only approved languages (see Language Policy) |
| 246 | +2. Follow offline-first principles |
| 247 | +3. Use FOSS tooling with independent governance |
| 248 | +4. Implement reversibility patterns |
| 249 | +5. Follow TPCF contribution model |
| 250 | + |
| 251 | +=== Badge |
| 252 | + |
| 253 | +[source,markdown] |
| 254 | +---- |
| 255 | + |
| 256 | +---- |
| 257 | + |
| 258 | +== Further Reading |
| 259 | + |
| 260 | +* link:https://github.com/hyperpolymath/rhodium-standard-repositories[RSR Framework] |
| 261 | +* link:https://github.com/hyperpolymath/mustfile[Mustfile] — Type-safe deployment |
| 262 | +* link:https://github.com/hyperpolymath/palimpsest-license[Palimpsest License] — Multi-layered licensing |
| 263 | + |
| 264 | +== Contributing |
| 265 | + |
| 266 | +CCCP is a living document. Contributions that align with its principles are welcome. |
| 267 | + |
| 268 | +See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc] for guidelines. |
| 269 | + |
| 270 | +== License |
| 271 | + |
| 272 | +MIT + Palimpsest-0.8 |
| 273 | + |
| 274 | +--- |
| 275 | + |
| 276 | +_"We build systems that don't decay under pressure, communities that support experimentation without shame, and infrastructure that respects human autonomy."_ |
| 277 | + |
| 278 | +— The Rhodium Standard |
0 commit comments