Principii
Crescătorul hotărăște ce se întâmplă cu datele lui — nu noi, nu starea unui abonament, nu un tichet de suport. Tot ce urmează decurge de aici, inclusiv prețurile, inclusiv ultima secțiune, care spune cinstit de ce un proiect construit pe principiul ăsta nu e totuși open source.
Fiecare principiu spune ce înseamnă astăzi în produs și ce stă în spatele lui. Unde răspunsul e „un test”, testul e numit. Unde e „poți verifica singur”, e dat numărul pasului. Nimic de aici nu e o intenție îmbrăcată în haine de fapt.
Utilizatorul hotărăște ce se întâmplă cu datele lui
Exportul e disponibil oricând, cu abonament sau fără, și scoate un CSV simplu care se deschide în orice program de calcul tabelar. Ștergerea contului golește imediat baza de date activă și distruge pe loc fotografiile, fără nicio copie nicăieri.
Poți verifica asta — pașii 5, 6, 7 și 8 din verificarea de pe Datele tale, care spune și exact cât supraviețuiesc copiile rândurilor în copiile de siguranță de rutină înainte să expire.
Pagina aia spune limpede cât ține fereastra copiilor, în loc să se oprească la „șters”, ceea ce e același principiu aplicat descrierii principiului.
Exportul e întotdeauna gratuit
În luna de probă, după ea, și după ce expiră un abonament. Nu există stare a contului pe care propriile tale însemnări să devină de neatins: când abonamentul se încheie, contul rămâne de citit și exportul iese la fel.
Poți verifica asta astăzi — pasul 5. Nimic din cod nu pune exportul în spatele unei plăți, fiindcă nu există nimic în cod care să pună ceva în spatele unei plăți: nu există încă nicio integrare de facturare.
Asta e cinstit, dar nu e durabil, așa că e trecut ca muncă de făcut și nu lăsat ca bună intenție: când apar funcțiile plătite, un test trebuie să verifice că drumul exportului nu trece prin nicio verificare de abonament, și el vine odată cu integrarea de facturare, nu după ea. În ziua aia, afirmația asta încetează să depindă de un pas de verificare și începe să depindă de un test, ceea ce e un lucru mai tare.
Fără limitări puse ca să doară
Luna de probă nu e ciuntită ca să vândă abonamentul, și nici după ea nu apare o limită de porumbei.
Poți verifica asta — pasul 3: adaugă un porumbel, apoi mai adaugă doi. Nimic nu-ți cere să treci la alt plan și nimic nu te oprește.
Aici se vede cel mai clar unde produsul e în dezacord cu piața lui. La unii concurenți din cloud, ziua în care nu mai plătești e ziua în care nu mai ajungi la ce ai scris tu; la noi e ziua în care contul rămâne de citit și exportul iese la fel. Asta e toată deosebirea, și e singura care contează când e vorba de douăzeci de ani de evidență.
Prietenos la import
Însemnările unui crescător sunt deja undeva: exportul altei aplicații, fișierul unui aparat de cronometrare, clasamentul unei federații. Să-l întâlnești acolo e o funcție, nu o amabilitate.
Impus. Fiecare importator e un modul înregistrat într-un singur loc
(packages/core/src/importers/registry.ts) și fiecare e testat pe un fișier de
probă adevărat. Un importator fără fișier de probă nu se publică, pentru că un
importator care n-a văzut niciodată un fișier adevărat e o presupunere.
Dacă federația ta sau aparatul tău scot un format pe care nu-l citim încă, trimite-ne o probă. Ăsta e tot procesul.
Româna întâi
Româna e limba sursă și engleza o oglindește — nu invers, și nu un strat de traducere adăugat la sfârșit. Cuvintele din aplicație sunt cuvintele pe care le folosește un columbofil când vorbește despre porumbeii lui: inel, pontă, împerechere, hală, pui. Nu sunt echivalente alese dintr-un dicționar de cineva care n-a intrat niciodată într-o crescătorie.
Impus. O suită de paritate pică atunci când o cheie există într-o limbă și
nu în cealaltă (apps/mobile/src/i18n/parity.test.ts), iar o regulă din build
pică atunci când un text care ajunge la utilizator ocolește traducerea —
inclusiv etichetele pentru cititorul de ecran, care sunt text citit de cineva
chiar dacă nu-l vede nimeni.
Asta e o decizie de proiectare, nu o limitare. Programele făcute pentru o piață mare și traduse apoi pentru una mică se recunosc de către oamenii din piața mică, și se recunosc drept ceea ce sunt: o traducere făcută la sfârșit.
Ce nu facem
Fără reclame. Datele tale nu se vând și nu se împart niciodată cu terți. Fără urmărire între aplicații sau între site-uri.
Impus de politica de confidențialitate publicată, care ne obligă și care numește lista completă a ce pleacă de pe telefon — șase evenimente de analiză, generate din aceeași constantă pe care o folosește aplicația, fără niciun număr de inel, niciun porumbel, nicio cursă și niciun identificator.
Prețurile, la timpul viitor
Astăzi nu e nimic de cumpărat. Nu există nicio integrare de facturare în proiect; termenii și condițiile descriu funcții plătite fiindcă au fost scriși ca să fie gata pentru ele, iar pagina asta n-o să pretindă că butonul e acolo.
Ce vor vinde funcțiile plătite, când vor exista: comoditate. Importuri automate în loc de manuale, documente de pedigree mai bogate, publicare în plus. Ce n-o să vândă niciodată e accesul la propriile tale însemnări — niciun zid de plată în fața porumbeilor tăi, a rezultatelor tale sau a exportului tău. Deosebirea contează destul cât să fie spusă înainte să fie vorba de bani, pentru că o linie trasată devreme e mult mai ușor de ținut.
De ce nu e open source
Răspunsul cinstit are trei părți, și niciuna nu e că open source ar fi greșit.
Codul e produsul. E un proiect comercial pe o piață mică, făcut de un singur om împotriva unor concurenți cu mai mulți bani și mai mulți oameni. Ce le lipsește nu e informația despre cum se construiește un program de crescătorie — domeniul e bine înțeles și cei consacrați au decenii de el. Ce ia timp e grija: importatoarele testate pe fișiere adevărate, numerele care se potrivesc cu ale federației, formularele care merg cu o singură mână în hală. Publicarea aia ar da unui concurent cu bani un an de muncă nespectaculoasă, și nu există versiune a proiectului ăstuia care să supraviețuiască dacă e al doilea după o copie a lui însuși făcută cu mai multe resurse.
Părțile care chiar ar ajuta un alt dezvoltator sunt publicate aici în schimb. Cum se calculează numerele, cu funcțiile citate, e pe Cum calculăm. Cum funcționează autorizarea și ce o dovedește e pe Securitate. Arhitectura și deciziile din spatele ei, inclusiv cele care au ieșit prost, sunt pe Arhitectura. Asta e mai tot ce ar deschide cineva depozitul ca să afle, și se citește gratuit, fără să cloneze nimic.
Ce ți se cuvine nu e codul sursă — sunt datele tale și o ieșire. Open source e un răspuns la întrebarea „ce se întâmplă cu mine dacă proiectul ăsta dispare”, și e un răspuns bun. Nu e singurul. Un export gratuit, complet, într-un format simplu, pe care îl poți rula astăzi, cu abonament sau fără, fără să ne întrebi, răspunde direct la aceeași întrebare — și, spre deosebire de un depozit publicat, merge și pentru un crescător care n-o să compileze nimic în viața lui.
Dacă pachetul de domeniu pur ar putea fi deschis pe cont propriu — calculele, parserele, formatele de inel, fără nimic din produs în jurul lor — a fost cântărit serios și e o decizie pentru mai târziu, nu o promisiune acum. Ar cere un angajament adevărat de publicare și o interfață pe care alți oameni să se poată bizui, și nu e genul de lucru făcut pe jumătate.
Mai departe
- De ce — de ce a fost construit, la persoana întâi. Principiile astea sunt angajamentele; pagina aia e motivul din spatele lor.
- Arhitectura — cum e construit și ce a costat.
- Securitate — modelul de autorizare și testele din spatele lui.
- Datele tale — aceleași angajamente, scrise pentru crescătorul ale cărui date sunt în ele.