ckeditor / ckeditor5-design

☠ Early discussions about CKEditor 5's architecture. Closed now. Go to https://github.com/ckeditor/ckeditor5 ☠
58 stars 12 forks source link

Application architecture – ckeditor5, engine, UI, utils #139

Closed Reinmar closed 7 years ago

Reinmar commented 8 years ago

It all started in https://github.com/ckeditor/ckeditor5-core/issues/242 and https://github.com/ckeditor/ckeditor5-design/issues/138.

We realised that the current contents of https://github.com/ckeditor/ckeditor5-core can be split into three, highly independent parts: application, editing engine and the UI. They are now more or less kept in separate directories and the code is well decoupled already, but we feel that a split into separate packages will further clarify the situation.

The new separation:

img_0740

  1. The application: https://github.com/ckeditor/ckeditor5. The repository right now contains only the builder, dev tasks and a such. The base of the application could stay in ckeditor5-core, but then this would be an empty package, because there are just a couple of classes. Therefore, there's also no problem with adding them to ckeditor5.
  2. The engine: https://github.com/ckeditor/ckeditor5-engine. This repository will contain all the data, data manipulation, rendering, and editing logic. This package will be usable without the application (ckeditor5 package) in specific cases, like in server-side services.
  3. The UI: https://github.com/ckeditor/ckeditor5-ui. This repository will be totally decoupled from the ckeditor5 and ckeditor5-engine packages. This will ensure that a totally different UI can be used with the editor, without a need to reimplement the existing components. The developer will use the application and engine packages and his/her UI.
  4. The utils (aka app framework): https://github.com/ckeditor/ckeditor5-utils. The shared dependencies of all the above packages.

The application and engine will be called "the core", so the features following this logic, will implement their "core" and "UI" separately. This answers #138.

Reinmar commented 7 years ago

Already implemented for a long time. We'll describe this in the docs.