Today AFFiNE celebrates its 1 year anniversary of going open-source and so lets celebrate this together. The community is owed a huge thanks. From the very beginning, you have embraced our vision of an open and collaborative platform, and your incredible contributions have truly made a world of difference.
A quick history of AFFiNE
Looking back, AFFiNE really started from a very small motivation: if we can take "blocks" to form a better docs, why can't we extend it to whiteboard and tables as well?
I wouldn't have imagined so much support from the open source community can be gained -- 20k stars within a year, great devs with belief and strength, a full set of CRDTs based local-first and collaborative infra OctoBase and the first CRDTs native block editing framework BlockSuite.
Of course, I wouldn't have imagined that there are so much to learn, to dive in, and so much are yet to be invented in the field of web productivity developing, and it would take 5 times of completely rewrite to make AFFiNE complete.
The first iteration
Going live on GitHub and within 72 hours we'd already hit 1,000 stars. The whole team was overwhelmed with the strong interest and support we had received, it was a sign of great things to come. And it was long after that our project was on top of GitHub Trending.
There was lots of interest in what AFFiNE could offer and what it was capable of. Our original live demo was a great showcase of the features and functionality AFFiNE could offer, even if stability needed improving.
The original AFFiNE was built upon tldraw and slate. They are all best choices when it comes to rich-text or whiteboard respectively, but the mission was going to almost impossible when we wanted to cope the same blocks into them in the same time. At the end of first iteration, we realised a standard block schema on CRDTs is needed for AFFiNE to be easy to extend while remain collaborative.
The refactor (the first one)
The team has refactored lots of different parts of AFFiNE throughout development, but arguably the biggest and most important time was when the team went back to the beginning. AFFiNE had a lot of potentials, but to realise that it needed to be stable, AFFiNE was to be born again.
We started with the most basic rich-text blocks. What later become BlockSuite was originally only 2 blocks exchange internal states through Yjs. It wasn't much in terms of functionality, but it is a huge step for us, that through CRDTs, you can manage the internal data flow of a set of blocks on your page the same way as they communicates with the web server, as if the blocks are "collaborating" with other blocks just like human do.
It took another 4 month before we finally extended these 2 blocks into a block system that can assemble a modern editing framework. To be honest, it was quite risky to build such a huge new framework from scratch then, but it is your continuous support that made the process possible. And the result is not bad.
It was about building AFFiNE for you. It was going to be our AFFiNE and we had your support! The AFFiNE Community is where everyone can come to show their support, offer feedback and get involved in lots of different ways.
When the team were finished it was decided to have a big launch day to celebrate this accomplishment and recorded messages and videos from the whole team so we could share the Downhills launch together
AFFiNE, as a typescript driven project, was of course started as its most natural form -- a web app. Therefore, both AFFiNE pre-alpha and abbey wood was web pages in your browser, although it is indeed local first. However, it doesn't make a lot of sense to have a web site while saying that it is local-first. Well, technically it is true that AFFiNE doesn't require network to function, but it does need a internet connection to load the app firstly, unless you self-host it locally, which requires a lot knowledge about docker and terminal operations and hence isn't a handy choice for everyone.
We want everyone to have an equally reliable and standardised experience, but we were being held back by... the browser. With so many different operating systems, multiplied by the various browsers, the team was being held up ensuring full compatibility for everyone. It wasn't good enough - it was time to go native.
So while the team continues to work on making a better cross-browser compatible web-app we can all take full advantage of a native experience that offers the full power of AFFiNE - with all the features and functions available across platforms (Windows, Mac, and Linux).
And then came the Databases. They may look like tables, but the power they offer is truly amazing. AFFiNE's Databases are true databases - collections of data that can be searched, manipulated and transformed. So right now you can create a Database to store your data, and enforce data validation (from dates to tags to tasks).
We knew that Kanban and other views are what everyone wants all the time, but we decided to invest time into the data layer, query and execute engine behind the database first. Because, a real database that can collect and distill knowledge from your spectrum of data sources isn't just a frontend table block that support drag & drop. We want to provide you with a easy to use database with a real database engine behind it, so that not only blocks and pages within AFFiNE can be managed but more importantly, your projects and issues on GitHub, your meetings on google calender, your memos from the web cliper can all be load, manage and structured in a AFFiNE database block.
Moving forward, the powers of Databases will continue to increase as more features and functionality are implemented. How about keeping a single source of truth and accessing your data from multiple pages? Or how about transforming the data from your Database into something more visually? How about a Kanban? Speaking of which...
What's on the way?
For the team to get to where it is now it has been important to continuously listen to all the feedback and ideas! That's why the team is so excited to share where we are going, because there are so many things that you have been asking for!
One of the biggest things coming is the latest AFFiNE Cloud! The latest version offers much greatly improved stability for real-time collaboration and more advanced permission systems. Not only can you edit with others, but share with them too by publishing them online.
As the team goes through developing the full public release we are excited to share that there will be some exclusive offers for those who help support us early. We'll be revealing more details next week so stay tuned.
Unlimited customisability? Open-source already allows for a lot of customisation, but the team are making it even easier! An official plugin system is on the way, which will allow developers to contribute new ways to power up the AFFiNE experience.
One of the first plugins is going to be AFFiNE Copilot, an AI offering, which will boost your productivity and provide with an even greater all-in-one tool that allows you to write, draw and plan in a next-gen way.
Edgeless Mode: Presentation View
Having already undergone some large changes recently there is still much to come for Edgeless Mode. The wide range of functions available in the current version offer a lot more ways for you to unleash your creativity. And the latest UI changes make Edgelgess mode as appealing as ever. So have you thought about presenting in it?
Well we are excited to let you know we are working on Edgeless frames that will allow you to put together your very own presentations. After creating your frames, number them up, and then start your presentation. A truly all-in-one solution!
Greater Import/Export Support
We already offer import and export for HTML and MD, and export abilities to images and PDFs. But we also understand that many of you are users of other apps - say Notion for example. That's why we've been working on hard on better support for importing and exporting your content. If you'd love to see improved Notion importing - including database support - you might just be in luck. The Notion importing continues to improve and we are looking forward to expanding support based on your suggestions.
AFFiNE Community: Thank you
So all that's left to say is thank you. Thank you for every point off feedback, every features request, every message you've sent. All that work has led to where we are now. We are listening - AFFiNE Community: https://community.affine.pro