The 2.0 branch of Quill has officially been opened and development commenced. One design principle Quill embraces is to first make it possible, then make it easy. This allows the technical challenges to be proved out and provides clarity around use cases so that the right audience is designed for. Quill 1.0 pushed the boundaries on the former, and now 2.0 will focus on the latter.
Let’s take a look at how we got here and where Quill is going!
Quill today has reached a state of ubiquity that has exceeded anything I could have hoped for. Companies ranging from exciting new startups like Slack and Asana, to industry giants like LinkedIn, Salesforce and Intuit, have all adopted Quill in major user facing products. Through their products, tens of millions of users have typed into a textbox powered by Quill.
The presence Quill has in media companies such as Vox Media, NY Magazine, and Gannett (owner of the Saint Cloud Times — where I grew up) is particularly illuminating. Content creation is core to these businesses and their needs for Quill’s customization have been the most demanding and informative for Quill’s roadmap.
Anyone can use a front end open source project like Quill without the maintainers’ knowledge, making exact usage numbers difficult to obtain. But the available data all support the same anecdotal stories of strong and growing adoption.
- NPM Downloads: 1.6M total, up from 528k in 2016 (+203%)
- Github Stars: 14.7k total, up from 11.6k in 2016 (+27%)
- Quilljs.com Pageviews: 2.98M total, up from 1.77M in 2016 (+68%)
- CDN Traffic: 950k unique IPs per week (no prior years tracked)
Being free to use, open source sustainability remains a challenging topic for many projects and the ecosystem at large. Maintainers, like all people, have limited time, particularly for unpaid activities. Understandably, some consider Quill’s sustainability, especially as it climbs in popularity and is part of more and more core products.
Quill is in a uniquely fortunate situation in this regard. It was born and developed at a proprietary company, one that I founded, that was eventually acquired by a large public company. This has granted me economic freedom and allows Quill’s development to be free of sustainability motives, unencumbered by this unsolved question in the ecosystem. Quill is here to stay and will remain focused on being the rich text editor for the web.
Many companies have reached out to offering contract work to integrate or extend Quill for their particular use cases. I am always happy to give free guidance to real users of Quill in production, but many want or need far more involvement for their companies. I have my own company Slab, a new knowledge platform for teams, that pushes Quill functionality to its limits. So I prefer to leverage my time for Quill on its core for the benefit of the wider audience.
This present a great opportunity for other developers familiar with Quill to extend it to real world use cases however. If you are interested in potentially being forwarded such contracting opportunities, please fill out this short form and I will follow up if there is a fit. I am also happy to support contractors in their projects, as expertise in Quill is a leveraged benefit for the community.
Historically, major software releases have focused on technical developments and new features. Quill’s 2.0 release, however, will also prioritize supporting activities.
More Parchment Guides
The most powerful feature of Quill is its customizability through Parchment, but much of this ability has been inaccessible to casual users. With early adopters proving out several uses cases and providing more confidence in Parchment’s API, we can move from making sure our aim is possible towards making them easy for the wider audience.
Another feature of Quill disproportionately in the hands of Quill power users is its JSON representation: Deltas. Its purpose is to be a simple yet expressive representation, enabling easy conversion to and from other formats. Advanced Quill users have already used it to output semantic HTML for email threads and React Components for content previews. Guides are planned, along with support in the form of additions to quill-delta or a separate project.
Tables are coming. For drop in use cases, Quill is already one of the most complete editors available in terms of formats supported, but tables are notably missing. The web in recent years has also popularized new content types such as checklists and at mentions, that are so useful they will also be added to Quill’s list for 2.0.
Improving Themes and UI Elements
Quill has been designed with a modular architecture, with everything that does not need to be in core implemented as a module. A side effect however has been a de-emphasis on individual modules, since the user can always supply their own. This all or nothing approach to modules has been less than ideal, particularly with UI elements like the toolbar and tooltips, where users are most opinionated and desire more customization.
Themes has also been underdeveloped, without clarity around its interface and API. There is not a plan to add more official themes (beyond Snow and Bubble) in core but adapting these or creating your own will be easier in 2.0.
Quill’s modular architecture also allows the community to build and share new modules not in core, or just differently opinionated ones. More visibility will be necessary for such an ecosystem to thrive and as a first step, an awesome-quill list been created. If you have an awesome project related to Quill, please submit a Pull Request! If not, build one and open source it 😉!
Adopting New Web Features
As new standards emerge and are implemented, libraries such as Quill stand to benefit from the greater simplicity and power they provide. One example is using `event.key` to more easily add keyboard shortcuts, particularly on non-standard keyboards. Of course, new standards and features need to be balanced with browser compatibility considerations. Polyfills can sometimes fill the gap but they contribute to build sizes and end up as a tax on modern browser users. A compatibility build similar to ones in jQuery or Lodash will be evaluated to try to get the best of both worlds.