İçeriğe geç
nitorel
7 GÜNSistemine başlaİlk sistemini yedi günde kur
Öğren
YazılarKaynaklı yazı dizileriKavramlarKavram kasası, formatlarSistemlerYöntemler, iş akışlarıKütüphaneKitaplar, kaynaklar
Kullan
AraçlarTarafsız araç atlasıNot DenetçisiÜcretsiz kontrol ↗nitoreldumpZihnini boşalt ↗nitorelhabitAlışkanlık takibi ↗
HakkındaŞablonlar 1 ücretsiz
kasa/yazilar/affine/06-affine-acik-kaynak-mimarisi.md

Rehber · Not 112Deneyim

AFFiNE nasıl çalışıyor? BlockSuite, CRDT ve local-first mimarinin kökeni

AFFiNE'in 2022–2023 mühendislik yazıları, ürünün tarihsel mimarisini üç parçayla anlatır: AFFiNE ürün yüzeyi, blok düzenleme altyapısı BlockSuite ve CRDT tabanlı ortak çalışma/backend altyapısı OctoBase. Yjs, blok modeli, provider ayrımı ve çevrimdışı düzenleme fikri bugünkü Page–Edgeless yaklaşımının neden mümkün olduğunu anlamaya yardım eder; eski yazılar güncel implementasyonu tek başına kanıtlamaz.

Yazan Ahmet Canal · 5 Ekim 2026

[[affine]][[blocksuite]][[crdt]][[local-first]]
Okuma
4 dk
Yayın
5 Ekim 2026
Geri bağlantı
2
Kaynak
5
İçindekiler · 14 bölüm
Önce isimleri ayıralımToeverythingAFFiNEBlockSuiteOctoBase"A tuşuna bastım" neden bu kadar karmaşık?İşlemden veri modelineCRDT kullanıcıya ne kazandırır?Çevrimdışı düzenleme tasarımın neresinde?Block modeli neden Page + Edgeless için uygun?Tarayıcı tarafında başka ne oluyor?2023 local-first planı neydi?2026'da neden hâlâ bu eski yazıları okuyoruz?Kullanıcı için çıkarım
Bilgi ağı · 6 bağlantılı not
Dizi · 6 / 24AFFiNE’i Adım Adım Kullanmak
  1. 01AFFiNE nedir? Belge, tahta ve veritabanı tek çalışma alanında
  2. 02AFFiNE'de yazı ve tahta aynı çalışmada
  3. 03AFFiNE MCP: Claude ve Cursor notlarını okuyabilirse ne değişir?
  4. 04AFFiNE'e veri taşımak: Notion, Obsidian, OneNote ve Bear
  5. 05AFFiNE 2026: 0.25, 0.26 ve 0.27 ile ne değişti?
  6. 06AFFiNE nasıl çalışıyor? BlockSuite, CRDT ve local-first mimarinin kökeni
  7. 07AFFiNE'i seçmeden önce: güçlü tarafları, sınırları ve 2026 gerçekliği
  8. 08AFFiNE'i CMS gibi kullanmak: kendi bloglarını nasıl kurdular?
  9. 09AFFiNE local-first: veri gerçekten nerede başlıyor?
  10. 10AFFiNE Cloud, yerel çalışma ve self-host: hangisini seçmelisin?
  11. 11AFFiNE self-host: Docker ile kendi sunucunda çalıştırmak ne kazandırır?
  12. 12AFFiNE self-host etmeden önce: yedek, güncelleme ve geri dönüş planı
  13. 13AFFiNE'de veri yaşam döngüsü: içe aktarma, çalışma, senkronizasyon ve çıkış
  14. 14AFFiNE Database: notları tabloya sıkıştırmadan yapılandırmak
  15. 15AFFiNE Calendar View: Database kayıtlarını takvimde görmek
  16. 16AFFiNE takvim entegrasyonları: Google Calendar ve CalDAV ne yapıyor?
  17. 17AFFiNE AI: bilgi tabanına yapay zekâ eklenince ne değişiyor?
  18. 18AFFiNE BYOK: kendi AI API anahtarını kullanmak ne kazandırıyor?
  19. 19AFFiNE MCP kullanım senaryoları: Claude, Cursor ve ChatGPT notlarına nasıl erişir?
  20. 20AFFiNE'den çıkmak kolay mı? Vendor lock-in testi
  21. 21AFFiNE mobil: iOS ve Android günlük bilgi sistemi için yeterli mi?
  22. 22AFFiNE 2022'den 2026'ya nasıl değişti?
  23. 23AFFiNE kullanmalı mısın? 30 günlük karar testi
  24. 24AFFiNE yedekleme ve kurtarma: sync varken neden yine yedek gerekir?
Kısaca

AFFiNE'in eski mühendislik yazıları ürünün kökenini üç isimle anlatır: **AFFiNE** kullanıcıya görünen çalışma alanı, **BlockSuite** blokları düzenleme ve dönüştürme altyapısı, **OctoBase** ise o dönemde CRDT tabanlı ortak çalışma/backend altyapısı olarak tarif edilir. 2022 teknik yazıları BlockSuite'in Yjs kullanan blok modelini ve çevrimdışı düzenlemeyi sağlayan provider ayrımını anlatır. Bunlar mimari tarihçedir; 2026'daki her iç bileşenin hâlâ aynı biçimde çalıştığını bu eski yazılardan varsaymamak gerekir.

[[Page ve Edgeless]] neden aynı içeriği iki farklı düşünme yüzeyinde gösterebiliyor? Cevabın bir kısmı AFFiNE'in başından beri "sayfa" yerine **dönüşebilir blok** fikrini merkeze koymasında.

Önce isimleri ayıralım

1 Şubat 2023 tarihli AFFiNE yazısı dört adı açıklıyor.

Toeverything

Projelerin arkasındaki organizasyon.

AFFiNE

Kullanıcının gördüğü bilgi ve çalışma alanı ürünü.

BlockSuite

AFFiNE'de blok oluşturma, düzenleme, görüntüleme ve dönüştürme işlevlerini bağımsız bir paket olarak ayırma girişimi.

Yazının temel fikri şu: AFFiNE'deki "her şey blok" yaklaşımı yalnız ürünün içine gömülmesin; başka geliştiricilerin de kullanabileceği bir editör altyapısına dönüşsün.

OctoBase

Aynı 2023 yazısı OctoBase'i, CRDT tabanlı ortak çalışma backend'i ve veritabanı olarak tanımlar. Görevi veri kopyaları arasındaki çakışmaları çözmek ve local-first/gerçek zamanlı ortak çalışmayı mümkün kılmaktır.

Bu tanım **2023 mimari anlatımıdır**. 2026 ürününü incelerken güncel repo ve dokümantasyon ayrıca kontrol edilmelidir.

"A tuşuna bastım" neden bu kadar karmaşık?

AFFiNE ekibi 2022'de iki uzun yazıyı tek bir basit olay üzerine kuruyor: ortak çalışmalı bir editörde kullanıcı **A** tuşuna bastığında ne olur?

Bu iyi bir mimari sorudur. Çünkü ekranda tek harf görürsün; sistemde ise en az şu işler olabilir:

  • mevcut seçim anlaşılır,
  • hangi bloğun değişeceği bulunur,
  • veri modeli güncellenir,
  • değişiklik geri alınabilir hâle gelir,
  • yerel depoya yazılır,
  • ağ varsa diğer istemcilere aktarılır,
  • başka kullanıcının eşzamanlı değişikliğiyle uzlaştırılır.

Kullanıcı deneyimi basit görünür; sistem karmaşıklığı aşağıya gömülür.

İşlemden veri modeline

İlk teknik yazı iki yaklaşımı ayırıyor.

Bir editör değişikliği doğrudan son metni değiştirerek tutabilir. Fakat ortak çalışma için çoğu zaman "ne yapıldı?" bilgisini de modellemek gerekir.

Örneğin:

  • ekle,
  • sil,
  • değiştir.

Bu yaklaşım undo/redo ve ağ üzerinden değişiklik taşıma için önemlidir.

Yazı daha sonra iki büyük ortak çalışma ailesini karşılaştırıyor:

  • **OT — Operational Transformation**
  • **CRDT — Conflict-free Replicated Data Type**

BlockSuite için verilen örnek Yjs tabanlı CRDT yaklaşımıdır.

CRDT kullanıcıya ne kazandırır?

Teknik ayrıntının kullanıcıya dönük sonucu şu:

Aynı belgenin birden fazla kopyası farklı yerlerde değişebilir ve sistem, değişiklikleri yalnız "son yazan kazanır" mantığıyla ezmek zorunda kalmadan ortak bir sonuca ulaştırmaya çalışır.

Bu local-first yazılım için kritiktir.

Çünkü ağ her zaman açık olmayabilir.

Çevrimdışı düzenleme tasarımın neresinde?

İkinci teknik yazı, Yjs/YDoc örneğinde yerel model değişikliklerinin ağ isteğinden bağımsız uygulanabildiğini anlatıyor.

Burada **provider** ayrımı önemli:

  • depolama sağlayıcısı: değişikliği yerel/veri tabanı tarafına yazar,
  • ağ sağlayıcısı: değişikliği WebSocket/WebRTC benzeri kanal üzerinden taşır.

Bir belge birden fazla provider'a bağlanabilir.

Bu düşünce sayesinde "offline" ayrı bir ekran modu olmak zorunda değildir. Kullanıcı yerel modeli değiştirir; ağ geldiğinde senkron mekanizması devreye girer.

Bu, [[local-first]] yaklaşımının teknik karşılıklarından biridir.

Block modeli neden Page + Edgeless için uygun?

2023 açıklamasında AFFiNE isminin "affine transformation" fikrinden geldiği belirtiliyor: bilgi farklı şekillere dönüşürken alttaki "gerçek" mümkün olduğunca aynı kalır.

Bunu ürün diline çevirirsek:

  • aynı bilgi doğrusal belgede okunabilir,
  • aynı blok görsel yüzeyde konumlandırılabilir,
  • yapılandırılmış koleksiyonun parçası olabilir.

Ama burada dikkat: "aynı veri modeli sayesinde her şey her zaman kayıpsız dönüşür" gibi daha güçlü bir iddiayı bu eski yazılardan çıkarmamalıyız. Ürün davranışını güncel sürümde ayrıca test etmek gerekir.

Tarayıcı tarafında başka ne oluyor?

Platform I/O yazısı editörün yalnız veri modeli olmadığını gösteriyor.

Örneğin metin seçimi için:

  • tarayıcının native selection API'si,
  • contenteditable,
  • MutationObserver,
  • özel seçim arayüzleri,
  • Web Components

gibi parçalar devreye giriyor.

BlockSuite'in tarihsel tasarımı, her paragrafı ayrı düzenlenebilir birim olarak ele alıp metin dışı blokları farklı DOM bileşenlerinde tutmaya çalışıyor.

Buradan çıkan önemli ürün dersi:

**Güçlü ortak çalışma; senkron algoritması, seçim, DOM, undo, blok ve ağ davranışının birlikte tasarlanmasını gerektirir.**

2023 local-first planı neydi?

Mart 2023 yazısı AFFiNE'in offline/local-first hedefini aşamalar halinde anlatıyordu:

  1. cihazda yerel kullanım + isteğe bağlı AFFiNE Cloud,
  2. yerel ağ içinde cihazlar arası senkron,
  3. yerel ağda hesaplar arası ortak çalışma ve isteğe bağlı sunucu/cloud.

Aynı yazı workspace'i dosya düzeyinde kontrol etme, farklı import/export biçimleri ve self-host desteği hedeflerinden de söz ediyordu.

Bunların hepsi 2023 planının parçalarıdır. 2026'da hangi kısmın tam olarak ürünleştiğini görmek için güncel doküman ve sürüm notlarına bakmak gerekir.

2026'da neden hâlâ bu eski yazıları okuyoruz?

Çünkü ürünün bugünkü yüzeyini anlamak için kökenindeki üç karar hâlâ öğretici:

**1. Blok birinci sınıf nesne.** Editör, uzun bir rich-text alanından daha geniş bir veri modeli kullanıyor.

**2. Ortak çalışma veri modeline gömülüyor.** Senkron sonradan eklenmiş bir dosya kopyalama işi olarak düşünülmüyor.

**3. Offline/local-first ürün mimarisinin başından beri parçası.** Bu yüzden yalnız pazarlama etiketinden ibaret olup olmadığını tarihsel olarak izleyebiliyoruz.

Temmuz 2026'da güncellenen açık kaynak yazısı, bugünkü ürünü Page, Edgeless ve databases/collections üçlüsüyle anlatıyor. Yani erken dönemdeki "yazı + görsel düşünme + yapılandırılmış veri" fikri, ürün yüzeyinde hâlâ okunabiliyor.

Kullanıcı için çıkarım

AFFiNE'i değerlendirirken "hangi özellikleri var?" sorusundan önce şunu sor:

**Benim bilgim tek bir belge biçiminde mi kalacak, yoksa yazı, tahta ve yapılandırılmış görünüm arasında hareket edecek mi?**

İkinci cevap baskınsa AFFiNE'in mimari fikri anlamlı hâle gelir.

Birinci cevap baskınsa — yalnız düz Markdown, minimum bağımlılık ve uzun vadeli dosya taşınabilirliği istiyorsan — daha basit bir araç daha doğru olabilir.

Mimari, ürünün **hangi probleme doğal olarak uyduğunu** söyler.

Bu yazıda geçen araçlar

AFFiNEBelge, beyaz tahta ve veritabanını aynı sayfada birleştiren açık kaynak çalışma alanı.Freemium · Yerel + senkron

Araçlar örnek içindir; hiçbiri zorunlu değil. Karşılaştırma için araç atlasına bak.

Kaynaklar

Kaynak profili2 kitap3 web

  1. Smolak, C. (2023, 1 Şubat). *Who are we and what makes AFFiNE?* affine.pro/blog/who-are-we-and-what-makes-affine web
  2. Wang, Y., & Smolak, C. (2022, 7 Aralık). *Collaborative Editor Data Model: What Happens After A*. affine.pro/blog/what-happens-after-you-press-a-in-a-collaborative-editor-data-model kitap
  3. Wang, Y., & Smolak, C. (2022, 7 Aralık). *Collaborative Editor Platform I/O: What Happens After A*. affine.pro/blog/what-happens-after-you-press-a-in-a-collaborative-editor-platform-io kitap
  4. Hou, J. (2023, 17 Mart). *Achieving a Local-First, Privacy-Centric User Experience with AFFiNE's Offline Capabilities*. affine.pro/blog/local-first-privacy-focussed-affine-offline web
  5. AFFiNE. (2026, 19 Temmuz). *AFFiNE Open Source: From the First Year to 2026*. affine.pro/blog/one-year-of-open-source web

Deneyim: Editöryal pratik ve kitaplara dayanıyor; birincil araştırma içermiyor. Türler kaynak metninden otomatik çıkarılır. Tüm kaynaklar ve onları anan yazılar Kütüphane’de.

Ahmet Canal

Ahmet Canal

Dijital ürünler geliştiriyor, bilgi mimarisi ve sistem tasarımı üzerine çalışıyorum. Nitorel’i, notlarımı ihtiyaç duyduğum anda yeniden bulma derdinden yola çıkarak yazıyorum.

kaynak-notlari/kaynak-notu-affine-acik-kaynak-mimarisi.md#kaynak-notu
Kasana al

Bu notu [[kasana]] al.

Yazının özeti, başlıkları, devam yazıları ve kaynakları Obsidian’a hazır bir kaynak notu olarak iner. “Kendi notum” bölümünü sen doldurursun; okuduğun yazı böylece kasanda bir bağlantıya dönüşür.

Kasan yok mu? Ücretsiz Starter Vault
gelen-kutusu/haftalik-not.md#bülten · haftada bir
Bülten

Haftada bir not, gelen kutuna [[bağlansın]].

Yeni yazılar ve uygulanabilir tek bir fikir. Reklam yok, istediğin an tek tıkla ayrılırsın.

← Önceki bölümAFFiNE 2026: 0.25, 0.26 ve 0.27 ile ne değişti?Sonraki bölüm →AFFiNE'i seçmeden önce: güçlü tarafları, sınırları ve 2026 gerçekliği
Bu yazıya bağlananlar
←AFFiNE resmi kaynak haritası: hangi yazı neyi kanıtlıyor?AFFiNE←AFFiNE 2022'den 2026'ya nasıl değişti?AFFiNE
Bu ağda devam et
→AFFiNE nedir? Belge, tahta ve veritabanı tek çalışma alanındaAFFiNE→AFFiNE'de yazı ve tahta aynı çalışmadaAFFiNE→Local-first nedir? Notların neden önce kendi cihazında durmalıYerel öncelik→AFFiNE 2026: 0.25, 0.26 ve 0.27 ile ne değişti?AFFiNE→AFFiNE resmi kaynak haritası: hangi yazı neyi kanıtlıyor?AFFiNE→AFFiNE 2022'den 2026'ya nasıl değişti?AFFiNE
OKUMA İLERLEMESİ0%
İÇİNDEKİLER14
Önce isimleri ayıralımToeverythingAFFiNEBlockSuiteOctoBase"A tuşuna bastım" neden bu kadar karmaşık?İşlemden veri modelineCRDT kullanıcıya ne kazandırır?Çevrimdışı düzenleme tasarımın neresinde?Block modeli neden Page + Edgeless için uygun?Tarayıcı tarafında başka ne oluyor?2023 local-first planı neydi?2026'da neden hâlâ bu eski yazıları okuyoruz?Kullanıcı için çıkarım
Bilgi ağı7 not · 13 bağ
bu notAFFiNE nedir? Belge, tahta ve veritabanı tek çalışma alanında…nedirAFFiNE'de yazı ve tahta aynı çalışmadaAFFiNE'de yazı…Local-first nedir? Notların neden önce kendi cihazında durmalıLocal-first ne…AFFiNE 2026: 0.25, 0.26 ve 0.27 ile ne değişti?…2026AFFiNE resmi kaynak haritası: hangi yazı neyi kanıtlıyor?…resmi kaynak…AFFiNE 2022'den 2026'ya nasıl değişti?…2022'den 2026…

→ verdiği← gelen↔ karşılıklı

AFFiNE nasıl çalışıyor? BlockSuite, CRDT ve local-first mimarinin kökeniBir notun üstüne gel; bağlarını gör.
BU AĞDA DEVAM ET
01AFFiNE nedir? Belge, tahta ve veritabanı tek çalışma alanında02AFFiNE'de yazı ve tahta aynı çalışmada03Local-first nedir? Notların neden önce kendi cihazında durmalı04AFFiNE 2026: 0.25, 0.26 ve 0.27 ile ne değişti?
Tüm yazılara dön ↗
[[Zettelkasten]][[İkinci Beyin]][[PARA]][[Evergreen notlar]][[Atomik not]][[İçerik Haritası]][[Aşamalı özetleme]][[Haftalık gözden geçirme]][[Obsidian]][[Geri bağlantılar]][[Zettelkasten]][[İkinci Beyin]][[PARA]][[Evergreen notlar]][[Atomik not]][[İçerik Haritası]][[Aşamalı özetleme]][[Haftalık gözden geçirme]][[Obsidian]][[Geri bağlantılar]]
nitorel

Notlarını bir işe yarasın diye tutanlar için. Kişisel bilgi yönetimi üzerine Türkçe yöntemler, rehberler ve sistemler.

İlk notunu bağla
KeşfetBaşlangıçYazılarKavramlarMarkdown SözlüğüFormat Rehberi
UygulaSistemlerAraçlarNot Denetçisi ↗nitoreldump ↗Kütüphane
NitorelHakkındaŞablonlarBülten arşiviDeğişikliklerKünyeİletişim
İçerikler CC BY 4.0 · © 2026 Nitorel · Ürünler ve marka unsurları hariç. Ahmet Canal tarafından tasarlanmıştır. RSS
GizlilikÇerezlerKVKKKoşullarİade
İstanbul --:--Başa dön
Nitorel.