01.05 — Posture politique du projet#

Le Holy Book ne sépare pas la philosophie de la politique du dépôt lui-même. Cinq engagements opérationnels en découlent.

1. Incorruptibilité#

« Transmettre Ocarina, c’est transmettre une voiture dont j’ai fait tout l’entretien moi-même, pour moi-même, donc très précautionneusement. En revanche, elle est et restera transmise telle quelle. C’est ma voiture. »

« J’y ai canalisé toute ma colère, pour y mettre tout mon amour. »

« Ocarina a une direction. Ceux qui souhaitent l’emmener ailleurs avec leurs vues de l’esprit sont libres d’en faire un fork et de ne jamais me contacter. »

Conséquences pratiques :

  • Refus des contributions « stylées ». La phrase de DHH est citée comme aval : « Fuck You. »
  • Refus assumé des PRs / issues non alignées. « aucun regret à fermer toute PR ou issue inutile. »
  • Refus de la « gouvernance démocratique du code ». Le projet est explicitement souverain.

Aucune contribution n’est exclue a priori : la barrière à l’entrée est l’alignement avec la direction.

2. Anti-hype#

« Ce même décembre 2025, cette startup dont le nom sera tu était présentée dans certains médias comme “le test IA No-Code qui ridiculise Selenium et fait trembler BrowserStack”. Rien que ça. »

« Pour autant, rien de cela ne coupera Ocarina d’une vision qui se développe depuis plus de 15 ans, loin de l’arrogance de tous ces enfants de la hype. »

  • Aucune dépendance « branchée » sans valeur fondamentale. Une seule dépendance d’exécution (python-docx).
  • Le projet revendique sa filiation à un héritage ancien (ISTQB, ROP, λ-calcul).
  • Le terme « pamphlet » est revendiqué (« n’importe quel projet “cutting-edge”, quel qu’il soit, démarre d’un pamphlet, est identitaire et passe par une étape de réel anti-marketing. »).

3. Anti-slipologues#

Slipologue = celui qui prétend « tout savoir » sans pratique, et qui pollue les discussions techniques avec des vues de l’esprit.

« Pendant trop longtemps, l’informatique a été prise en otage par une minorité, un “1%”, qui a cru bon de la transformer en terrain de jeux pour initiés : “trucs de geeks”, “techniques de ninjas”, “orienté objet”. Le verdict est sans appel : ça ne tient pas, ou alors très mal. »

Et :

« Tout comme l’IA, qui achève tranquillement de rendre la capacité de nuisance de ce “1%” obsolète. »

Conséquences pratiques :

  • Pas d’event-driven programming comme nouvelle religion.
  • Pas d’orienté objet déclaratif.
  • Pas de Rust « pour la performance » (cf. 03-kiss-and-complexity.md).

4. Anti No-Code, Code is Law#

« Le code est une donnée brute. Auditable. Consultable. Une boîte blanche. Très exactement ce avec quoi l’IA sait travailler depuis ses débuts. »

Et :

« Toujours est-il que le code est ce que l’on a de plus souverain, et qu’une promesse de valeur consistant à nous le retirer nous fait nous pincer le nez. »

Conséquences pratiques :

  • Tout le code utilisateur d’Ocarina est du Python : auditable, copiable, exécutable sans plateforme tierce.
  • Le framework est explicitement portable « sans installation » : « pour les scénarios les plus extrêmes : Ocarina n’a pas besoin d’être installé. Il se copie, s’adapte, et tourne. »
  • Pas de SaaS associé. Pas de cloud runner propriétaire.

5. Refus permanent d’async/await#

« Ocarina ne supporte pas async/await et ne le fera jamais. »

Justifications matérialisées :

RaisonDétail
Selenium est synchronePas d’API async native ; tout async au-dessus serait une couche d’enrobage stérile.
requests, redis synchronesL’écosystème ciblé (HTTP, Redis, fichiers) tient en synchrone sans coût.
LisibilitéUn scénario async impose des await au milieu, casse la grammaire visuelle « ouverture → acts → fermeture ».
Concurrence couverte par threadsLe ThreadPoolExecutor + le WebDriversPool (Semaphore) couvrent les besoins de parallélisation. Pas besoin d’asyncio.
Verrous distribués via RedisPour les besoins multi-process, c’est Redis qui coordonne (OTP_SEND_LOCK_KEY, etc.), pas une event loop.

6. Sécession#

« Aujourd’hui les gens lancent des projets comme on descend de chez soi acheter un paquet de clopes. (…) Ils se croient malins : la réalité est que tout VC, tout LP, tout le monde, en est bien conscient et chacun tient son rôle dans un jeu de dupes. »

Conséquence : Ocarina est publié sous le nom d’auteur d’Igor Casanova, sans entité commerciale derrière, sans promesse de support, sans roadmap publique. Le dépôt est mis à disposition « tel quel » au sens MIT du terme.

« Quant à moi, je n’ai rien à perdre en termes de réputation puisqu’il n’y a pas de réputation à construire sous ce nom. Uniquement un message à livrer, tel qu’il est, sans filtre. »

7. Refus des « tricks/hacks » (côté projet IA)#

Le CLAUDE.md d’ocarina-with-ai-example détaille la mise en pratique :

« No tricks or hacks. JS-clicks to skip hit-testing, # noqa to silence a rule, time.sleep to mask a race, driver.implicitly_wait to patch a timing bug. If a hack is genuinely the only option, document why no clean fix exists and mark it so a reader doesn’t copy the pattern. »

C’est la mise en discipline des principes ci-dessus dans une suite réelle.

Contre-exemple cité :

« The JS-click-for-logout incident is the canonical anti-example: ElementClickInterceptedException had a clean polling fix; the JS click hid the problem. »

Tableau de synthèse#

RefusMécanisme codeLien
async/awaitThreads + Semaphore + Redis../02-ocarina/10-infra/01-drivers-pool.md, ../07-ocarina-example/08-caches-locks.md
Plugin pytestRunner intégré (bootstrap)../02-ocarina/11-opinionated/06-bootstrap-launcher.md
DSL textuelDSL Python embedded../02-ocarina/03-railway/
Programmation réactive dans les scénariosCache + clés réservées../07-ocarina-example/08-caches-locks.md
# noqa muetToujours explicite et localpyproject.toml#tool.ruff
Contributions « stylées »Modèle MIT take it or fork it — 
JS-click pour bypasser le hit-testingPolling propre../08-ai-example/
time.sleep pour masquer une race conditionPolling explicite via WebDriverWaitid.
driver.implicitly_wait patché hors frameworkGéré uniquement par --wait-timeout du CLI../02-ocarina/11-opinionated/03-selenium-cli.md

Mot de la fin#

« Ocarina n’est pas et ne sera JAMAIS une solution pontifiante. » « Ocarina est et RESTERA une solution pour résoudre des problèmes concrets. »

Cette posture politique a un effet pratique direct sur ce qui mérite d’être lu en profondeur : le code source plutôt qu’un changelog, le Holy Book plutôt qu’un blog post marketing. C’est la promesse d’auditabilité de ../11-independence/02-auditability.md