├── .gitignore ├── assets └── boo-logo.png ├── README.md ├── 02-building-boo-code-editor-1.md └── 01-why-am-i-creating-a-new-code-editor.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /assets/boo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphamorim/boo-devlog/HEAD/assets/boo-logo.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > [!NOTE] 2 | > This is Boo devlog, my thoughts and development updates over time will be placed here. 3 | 4 | # Boo Editor 5 | 6 | > Code like video game. 7 | 8 | Boo code editor logo 9 | 10 | Summary: 11 | 12 | - [1. Why am I creating a new code editor?](/01-why-am-i-creating-a-new-code-editor.md) 13 | - [2. Building Boo code editor #1](/02-building-boo-code-editor-1.md) 14 | 15 | # FAQ 16 | 17 | ### Why is it not open source yet? 18 | 19 | The real answer is that I want to avoid much noise as much as possible while developing Boo. I also want to prioritize Rio terminal development since it's already used by hundreds of users as their main terminal driver. 20 | -------------------------------------------------------------------------------- /02-building-boo-code-editor-1.md: -------------------------------------------------------------------------------- 1 | # Building Boo code editor #1 2 | 3 | ![Boo sticker](https://raphamorim.io/assets/images/posts/boo-sticker.png) 4 | 5 | I decided to document Boo code editor development for good (or bad). 6 | 7 | Suppose you have any interest in it. Please stick with me in this article. 8 | 9 | ### Brief Story 10 | 11 | In 2024 I have started a proof of concept of Boo, which back in time was called Yoyo. The proof of concept didn’t have [tree sitter](https://tree-sitter.github.io/tree-sitter/), language server protocol, or anything fancy. It was built with JavaScript (and it was using a lot of memory). It was solely made to test navigation and edition between files. 12 | 13 | The prototype development was quick to finish. JavaScript and the Web are part of excellent tools to build prototypes. You do not need to care about rendering stuff, shaders, IMEs, native API, etcetera; it just works out of the box. The side effect though, is that in performance terms isn't the best. 14 | 15 | I wanted to prove to myself: ok, Boo editing system wasn't crazy and could work for anyone that has zero experience with programming. After a few iterations, the idea I took from my notebook drafts was working fairly well: no mouse dependency whatsoever, you don’t need it anymore. No necessity to feel like playing guitar while editing a file. 16 | 17 | [Click here to see me debugging Boo while frustrated with the performance so far whenever pressing enter lol](https://raphamorim.io/assets/videos/boo-quick-demo.webm). 18 | 19 | Btw that (^) was fixed already. 20 | 21 | ### A new navigation system 22 | 23 | Boo is created over a new navigation system called Zaap, which is an attempt to make editing easier for mouse-free users while keeping it intuitive for non-programmers. The navigation system is built to run everywhere else besides Boo (through C bindings, like tree sitter), so if you don't like Boo you can port it to your favorite editor. 24 | 25 | Zaap has been tested with a few non-programmers and worked fairly well, although every user had a learning curve of averaging 2 to 4 days to get used (this is something that I feel needs improvement). 26 | 27 | Would Boo support VIM, Emacs keybindings? Man, I have been asked a lot about it in the past months and would like to highlight it isn't in my plans. While I look to VIM and Emacs as my references for great editors, I am trying to create something that feels different and that could give me the freedom to be innovative and explore other ideas. If I commit to support x or y, then every single idea I have will need to be aligned with the commitment. 28 | 29 | ### Hybrid editor 30 | 31 | The editor works already as a graphical user interface (GUI) or terminal user interface (TUI). It is up to you to decide where you want to work. Boo has an integration system that I will talk more about in the future, that allows you to use both in a way that is helpful. 32 | 33 | ### AI where matters 34 | 35 | Boo already works with Github Copilot and allows you to integrate to your favorite AI tool (well, this second part still needs a bit of love ha!). However, the biggest goal is to make AI completely optional, disabled by default, without affecting users that doesn't care about it. 36 | 37 | The biggest problem regarding editors with AI nowadays is that can feel or give the perception of being bloated. I assume no one wants that, right? 38 | 39 | ### When it will be released? 40 | 41 | No idea! 42 | 43 | This year has been quite busy for me as a new parent and in a [new job](/joining-charm). The few time that I had was to work on [Rio terminal](https://github.com/raphamorim/rio), however I am in no rust, I want to build something fun and it sure will take time. 44 | 45 | I hope that you found this chat interesting. Given it's our second time talking, there were so many more things I could’ve covered, but I’ll save them for the future. 46 | 47 | - 48 | 49 | If you want to keep up to date, follow me on [Twitter](https://x.com/raphamorims), [Bsky](https://bsky.app/profile/mustache.bsky.social) or [Mastodon](https://mas.to/@mustache). 50 | -------------------------------------------------------------------------------- /01-why-am-i-creating-a-new-code-editor.md: -------------------------------------------------------------------------------- 1 | # Why am I creating a new code editor? 2 | 3 | First and foremost, I would like to thank for all the financial investment that I have already received on this project. Even though it is not yet ready for the public, I truly appreciate the trust and support that many of you have placed in me. 4 | 5 | Secondly, a lot of what you will read in this article is my personal view. You are free (and encouraged) to disagree; there is no universal truth or words written in stone. 6 | 7 | With all that being said, let's have a chat. 8 | 9 | Have you ever thought that a lot of code editors lately have become too much of everything and less of code editing? 10 | 11 | Most of the existent code editors are a great piece of software: fast, configurable, AI support, plugins, themes, contain built-in terminals, file tree views and etcetera. I cannot complain about what they cannot do, they basically can do everything you would ever need! 12 | 13 | They also tend to look the same: 14 | 15 | ![Average editor](https://github.com/raphamorim/raphamorim.github.com/raw/main/assets/images/posts/average-editor.png) 16 | 17 | Which got me thinking, why do I feel that’s lacking something whenever I use any of them? Well, it’s because they are “too much of everything and less of code editing”. 18 | 19 | The editor that I am working on is my personal attempt to get back to the foundation of what a code editor should do well: edit code. In order to achieve it in the current state of editors, it is required to seek innovation. 20 | 21 | ### What's innovation? 22 | 23 | That’s actually a very good question. You can google it, and you would still find different kind of answers. If you also search on tech forums, you would find that everyone have they own perception of innovation. 24 | 25 | For example, let’s jump into browsers universe: Many people would consider [Arc browser](https://arc.net/) as an innovative user experience, but some wouldn’t. Then you could find people that would consider a [Firefox](https://www.mozilla.org/en-US/firefox/) performance improvement based on a new architecture as an innovation example, but also would have people that would disagree. 26 | 27 | In the editors universe you can actually create a long (seriously, would be very long) discussion about what and which features are innovative on Elvis, VI, Emacs, LSE, DreamWeaver, Atom, Sublime Text, Notepad, Brackets, Kile and so many others. 28 | 29 | In my humble opinion, I would say innovation is quite personal, and it depends on a lot of which kind of background, personality and taste that you have. There is a lot of stuff that is built on popular or common taste, but would not necessarily be innovative. 30 | 31 | So if the perception of innovation is personal, I can tell some of my goals on text editor that I am working on. 32 | 33 | • Reinvent mouse free editors, a text editor should be capable to deliver as much without requiring a long learning curve, in fact, it should fit from a programmer to a non-programmer without having a few days to catch up. 34 | 35 | • Hybrid, it can be used on GUI or/and terminal, you will be able to use the editor in any context you want to. I would love to share and show more on this, but I do not want to spoil details. 36 | 37 | • Keyboard-based movement should not feel like you are playing an instrument, but actually be short and effective. 38 | 39 | • An editor that can actually adjust to your way of typing and self adjust to increase typing speed. I have been working lately with researchers on this, and it is still a lot to sort out. 40 | 41 | • Plug and play UI, you should be capable to not only configuring an editor to look yours, but actually making it yours. This feature is a bit complex to explain in a single bullet point, and I definitely got carried about over adding this (lol). 42 | 43 | There are more goals and features, but I think it is ok to not mention everything, I don’t want to write to store anything since a LOT of work and ideas are still in development. 44 | 45 | Lately, my work has been to interview and sit with different programmers and non-programmers personas and collect ideas and feedbacks. So, yeah, still have a lot going on. 46 | 47 | ### Tech Stack (so far) 48 | 49 | This text editor already exist and the prototype it is cross-platform. 50 | 51 | • Written in Rust 52 | • GPU based. 53 | • OpenGL/Vulkan on Linux, OpenGL/DX12/DX11 on Windows, Metal on macOS. 54 | 55 | I'm not going to talk about the "why" for any of this. I'm just laying out the tech stack as-is for people who are interested. Take it as you will. 56 | 57 | ### When it will be released? 58 | 59 | No idea! 60 | 61 | This year has been quite busy for me as a new parent, and the few time that I had was to work on [Rio terminal](https://github.com/raphamorim/rio) and create the editor prototype. As mentioned before, the current step has been iterated on personas and keep stabilizing the editor. 62 | 63 | I hope that you found this chat interesting. Given it's our first time talking, there were so many more things I could’ve covered, but I’ll save them for the future. 64 | --------------------------------------------------------------------------------