Under the Hood of the Grammarly Editor, Part Two: How Suggestions Work
Bài tóm tắt Grammarly 2022 3. Quy mô lớn Độ khó: Trung bình
Grammarly · 2022 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Phần hai của series về editor web của Grammarly (phần một về chỉnh sửa cộng tác thời gian thực, chưa ingest).
Bối cảnh
- Editor dùng giao thức operational transformation (OT) với định dạng Delta (insert, delete, retain) cho cả văn bản, thay đổi của người dùng và gợi ý từ backend. Backend quét văn bản rồi gửi gợi ý về client.
Thay đổi chính
- Gợi ý cũng là Delta: giao thức được mở rộng bằng một trường
transformchứa Delta của thay đổi đề xuất; áp gợi ý chỉ làcomposeDelta văn bản với Delta gợi ý. Theo Grammarly, từ gợi ý sửa một từ tới viết lại cả câu, cả đoạn, giao thức chưa phải đổi lần nào. - Ràng buộc: mọi lệnh mới phải rebase được theo chỉnh sửa đang diễn ra của người dùng mà không chờ backend. Client có Suggestions Repository (trạng thái
registered→applied) và Delta Manager rebase mọi gợi ý còn hiệu lực sau mỗi thay đổi văn bản (ví dụ vị tríretaindịch thêm 2 khi người dùng sửa "A" thành "The"); gợi ý cho cả câu chỉ ẩn khi người dùng sửa đúng phần được tô. - Áp nhiều gợi ý một lần: lặp áp từng cái làm UI đứng vài giây, vì việc tốn nhất là cập nhật Delta văn bản, lặp lại cho mỗi gợi ý. Cách sửa: compose các Delta gợi ý thành một rồi áp một lần. Bản đầu làm hỏng văn bản vì mỗi gợi ý được tạo cho trạng thái văn bản trước đó; phải rebase từng gợi ý lên Delta đã gộp trước khi compose.
Vì sao
- Trình duyệt chỉ làm một việc mỗi lúc; nhiều lần cập nhật nhỏ liên tiếp trên trạng thái lớn khiến UI đứng, còn một lần cập nhật gộp thì không.
Bài học cho SWE
- Biểu diễn mọi thay đổi (người dùng, máy) cùng một định dạng ghép được cho phép thêm loại thay đổi mới mà không đổi giao thức.
- Gộp nhiều thao tác thành một lần cập nhật trạng thái phải giữ ngữ nghĩa thứ tự: mỗi thao tác cần được biến đổi theo các thao tác đã gộp trước nó.
Liên quan
- Kiến trúc frontend · Batching và khấu hao round-trip
- Cùng công ty: Grammarly 2023
#operational transformation#Delta#compose#rebase#suggestion repository#Delta Manager#client-side state#batch apply#UI freeze
Được nhắc tới trong
Công ty (1)