LibreSprite / Dotto

A portable and modern pixelart editor, written from scratch.
MIT License
693 stars 19 forks source link

Dotto! - What? Who? Why? When? #1

Open felipemanga opened 2 years ago

felipemanga commented 2 years ago

What

LibreSprite Dotto! is a clean-room, modern, flexible rewrite of LibreSprite. Since it does not reuse code, it is more of a spiritual successor than a new version, hence the new repository.


Who

The core is currently being written by myself, though @Zughy and @maujin111 have been closely involved since before day 1. Due to the scripting system being tightly integrated, the JavaScript and Lua programmers of the community will soon be able to get involved as well.


Why

First, some context. LibreSprite was born half a decade ago, as a fork of Aseprite. Aseprite, in turn, was born shortly after the invention of the transistor. Despite numerous rewrites and refactors, the codebase showed serious signs of age. Notably, it was based on a buggy, custom, old version of Allegro for rendering and often did not follow standard C++11 coding practices.

After the fork, Aseprite went on getting refactored/maintained/improved, while LibreSprite mostly just sat there, gathering digital dust.

Recently, an effort was made to make the fork usable. An SDL2 backend was added as an alternative for Allegro and several bugs were patched. During this process, one thing became painfully obvious to the maintainers: adding new features without breaking things is going to be really, really hard.

As an example, we often get requests for new tools. Ideally, LibreSprite would be flexible enough to allow users to add their own tools by making simple scripts. Unfortunately, there is a lot of hardcoding in the existing set of tools. They're even hardcoded to skins as old skins have no way of displaying icons for tools that came later. Our community is fond of custom skins and breaking existing skins every time we want to add a new tool isn't what we want.

Looking at the current state of LibreSprite, we came to the conclusion that getting it to where we are comfortable adding new features would take just as long as simply starting again. This was not at all a decision taken lightly. Throwing away decades of work and doing it again is not going to be easy. So Dotto! was born initially as a prototype branch, where we tested the waters to see if it was really something we wanted to do. Now we know: it is.


When

It's opensource, so: it'll be ready when it's ready. As of this writing, Dotto is 3 weeks old. Compared to the decades of work that had already been put into LibreSprite by the original author, there is still a long road to go. On the other hand, progress is really fast. Keep an eye out for updates here and on Discord or Matrix, if you blink you'll miss 7 commits.

akien-mga commented 2 years ago

Good luck!

I see you chose MIT license - are you aware that it means that you are not allowed to port (or even use as reference) any code from LibreSprite? This must be a clean room reimplementation if you want to discard the GPL.

felipemanga commented 2 years ago

Yes. The only part salvaged so far was already under MIT (the script library). Edit: I say "salvaged" but that code was already rewritten after the fork. It doesn't look anything like the original script library.

orbitalmartian8 commented 2 years ago

I can't wait for the official release, if you need any help, hit me up, i can try fitting it in around school.

Hakunamawatta commented 2 years ago

Is there a reason why the MIT license was chosen over GPL?

felipemanga commented 2 years ago

The original LibreSprite had a mix of MIT and GPL and we didn't want that for Dotto. The maintainers discussed, had a vote, and settled on MIT.

personal-note commented 2 years ago

LibreSprite Dotto will support MacOS? (64-bit)

felipemanga commented 2 years ago

Yes, Intel MacOS support has already been setup.

maujin111 commented 2 years ago

LibreSprite Dotto will support MacOS? (64-bit)

Even 3DS, great job @felipemanga

kotx commented 2 years ago

Might want to pin this issue?

Bobby-Anggunawan commented 1 year ago

Is it available on play store? I see there's android version, but I can't find it on play store..

pegvin commented 1 year ago

Is it available on play store? I see there's android version, but I can't find it on play store..

no dotto is currently being developed, but the devs have made a "web" version available which you can try: https://libresprite.github.io/Dotto/

it probably contains bug, and not sure if it'll work on mobile devices

ElfEars commented 1 year ago

I know that it's planned to have a palette editor but is Dotto planned to support indexed images at some point?

dustdfg commented 1 year ago

It would be good to see screenshots (at least)

pegvin commented 1 year ago

@dustdfg i've attached a video of me using dotto, it's still not perfect for daily use as for now and the development has slowed a bit...

https://github.com/LibreSprite/Dotto/assets/75035219/b15d278c-6f88-4e2d-8bc7-1600c7188b2c

(sorry the video quality maybe not the best as it's 1600x900, even though i have a 1080p monitor i prefer lower-resolution for nice performance)

pegvin commented 1 year ago

I know that it's planned to have a palette editor but is Dotto planned to support indexed images at some point? ~ @ElfEars

well by indexed images support i assume you mean the images that store the color palette and every pixel is basically an index to the color in that palette...

if so then indeed png supports indexed colors and you can save to png, i'm pretty sure if dotto comes up with a custom format it may use color indexing.

and if you're referring to the "indexed" option in color-mode in aseprite, i can't really say if that will be added.