Discussion: v0.9.0 and further developments
See original GitHub issueThis is a discussion about the future release v0.9.0
.
About the legacy
Summernote began its journey in 2013 — it was the time Bootstrap 2 was getting popular and jQuery widely used, so Summernote was built on them. The first commit message was simple but grand, ‘summer is coming’ by @hackerwins.
As a WYSIWYG web editor, Summernote got popular. And most of its popularity came from its ease-of-use on Bootstrap-themed sites.
It was fine for a while. But Bootstrap released its version 3 and we’d decided to drop Bootstrap 2 and replace it with Bootstrap 3. At that time, it was not a bad choice. The difference between version 2 and 3 was not that huge and did not need to be changed many parts in most cases, almost drop-in replacement.
At the same time, we’d got a lot of requests about using Summernote without Bootstrap. So @hackerwins made a lightweight version, and we named it lite
. We got two versions.
And Bootstrap 4 had released two years later. It was pretty different from its ancestor. So we couldn’t apply the same strategy. Not everyone wanted to upgrade their Bootstrap styles to version 4. Therefore, we decided to support both Bootstrap versions together. Three versions.
Meanwhile
Since 2018, most maintainers and committers have been away. Only @DiemenDesign and @easylogic have been struggling with fixing bugs and answering issues over and over again. @hackerwins is now busy with a new opensource project (Yorkie), and I (@lqez) quitted and retired from my job – losing confidence and motivation to maintain the project as diligent as years ago.
Meanwhile,
- JavaScript world is covered by new libraries – React, Vue, and so on, not jQuery.
- Component-based web design system is the new standard.
- Bootstrap 5 was released, but they are losing users.
Yes, Summernote lost many chances stepping forward.
Now
I’m preparing v0.8.19
, which includes minor bug fixes and updates for broken and outdated build/test chains.
- https://github.com/summernote/summernote/pull/4151
- https://github.com/summernote/summernote/pull/4155
And it’s a good time to say goodbye to Bootstrap 3. At least we should not use version 3 as default. I thought to set Lite
style as default and replace the default summernote.js
and summernote.css
with it. But I would like to hear other opinions.
Future
From the very beginning till 2017, I’d considered strength points of Summernote to be;
- Built-in styles (Bootstrap)
- Ease-of-use for jQuery users (friendly syntax)
But to continue the journey of development, below things should be addressed first;
- Independence from Bootstraps (no removal, but
Lite
as default)- Taking
Lite
as the default style, adding more styles – like Bootstrap 5, Tailwind, Tachyon, etc.
- Taking
- Embedding jQuery (or remove it)
- To use Summernote in nowadays frontend JavaScript libraries, we need to provide jQuery as a global object. (e.g.
webpack.ProvidePlugin
) I think this is not intuitive. It doesn’t need jQuery as much as years ago. We can use modern JavaScript syntax itself and Babel with polyfills. But there is a problem – most plugins depend on jQuery’s$.extend
function.
- To use Summernote in nowadays frontend JavaScript libraries, we need to provide jQuery as a global object. (e.g.
- Renovation of plugin system
awesome-summernote
holds plugins by categories, but we don’t know anything about the qualities and compatibilities of plugins, or even they works or not. We’re not that big as React, so Pelican plugin style could be an alternative way to manage plugins.
Issue Analytics
- State:
- Created 2 years ago
- Reactions:8
- Comments:18 (13 by maintainers)
Top GitHub Comments
Here are some of my thoughts of some things I think are important, or where I would like to see the development path taken:
each()
function that is one of the biggest hurdles.document.execCommand()
, primarily as it’s usage is now considered deprecated, and we already have (sort of) in place therange
functions that we should expand on. There are quite a few bugs that I have added in the Projects area, which I think could be resolved by removing theexecCommand()
dependency as I believe most of those issues are due to Browser incompatibility, and trying to resolve in code those issues per Browser.<dialog/>
element, we would need to see what the Browser supporting ecosystem is at. Chrome supports it, but others like Firefox don’t (not without enabling it in options). Not sure about other browsers, but it would mean using a polyfill, and relying user’s also adding that to their markup, though we could programatically check if it’s present and add it if it isn’t. But as usage varies between browsers, we may better sticking with what we already have.Here’s some things that are different in the Skunkworks repository, some are new features, some are fixes:
Esc
, or clicking on the background. And now uses a smaller element footprint, as not as many elements are needed for Dialog’s.rel
attribute option.aria-label
attribute, rather than thetitle
, making them easier to disable, and their position now has an option to control how they appear (top|right|bottom|left). I would like to see if we can have these auto-adjust so they adjust their position to not appear offscreen.There’s been other fixes added from issues from the main repo, which I’ve marked as
skunked
to indicate those have been added.Those are just some of my thoughts, off the top of my head, obviously they can be expanded on, or forgotten about.
Please leave a comment to help us! ❤️ We would like to know about the reason why you use Summernote and what was the pain point while using it.