Reddit AMA on Photopea, a free alternative to Photoshop used by 1.5M people
reddit.com
reddit.com
I don't love it because of the attitude of the developer (which is great too), I love that it reminds me how fast it is to solo develop something and how much more complicated it gets when a team grows.
(We are a small team of 15 devs in my company and it's already super complicated to be that efficient)
vim tools/Text.js
self.addEventListener('click', function (e) {
if (e.detail === 3) {
self.selectAll();
}
});
:wq
git add tools/Text.js
git commit -m "Add triple click select all"
git push origin master
Done.A few others that come to mind are KeePass/Dwarf Fortress (no formal VCS), and GRRM (uses WordStar 4.0 in DOS)
But there seems to have been no movement on this request for a functional macro feature: https://github.com/Microsoft/vscode/issues/4490
Although you didn't pinpoint a single process that was inferior, knowing when to break processes is part of the experience.
Any particular reason you choose Notepad++ over a full-featured IDE for a project of this scope?
Compare that to building binaries for all supported platforms, testing, publishing, dripping down into Debian & Ubuntu, someone on Ubuntu-Based-Distro-#1377 reporting a dependency problem, someone old Debian complaining that their compiler is choking on a gl library under armv7l, etc.
At some point, like people do with dated web browsers, developers need to tell users they need to update as the developer won't be supporting such outdated software anymore.
If I’d had 1 more senior developer and a designer/front-end dev, I’m fairly certain it could be done by now.
But there’s so many people involved in the process that everything slows to a crawl.
I’m sure our clients love hearing that the product is developed by 30 people over 1.5 years though.
Fancy juggling AWS config and costs? Writing user manuals, help desk scripts?
On a scratch-itch OSS project you can ignore those. But when you plan to sell it, things scale quickly. Coding is just one arrow in quivver.
But the point was mainly that the actual product is essentially a glorified crud application.
There is some value in having a larger team, but the time wasted is absolutely massive.
A couple of ambitious college students could make a basic web crawler and search engine using 2018 technology and not even that many cloud resources and get like 80% of Google's quality. But that doesn't mean they're only another long weekend from being the next Google: closing the gap really does require millions of manhours and billions of dollars of compute.
(And their web crawler would be causing chaos and destruction across the web, but let he who has not accidentally deleted someone's will by crawling all the "delete this article" links cast the first stone.)
In my area, we've literally built something more or less like that a few times in the same time with one or two developers each time. In fact, I found out after the demo that much of the core logic came from a repo a guy on my team wrote in his spare time to plug a hole on a minor side project he was doing.
Its not necessarily just "small teams move faster". It can be, but also it depends on the passion and energy of the individuals.
Its a great Entity-Component-System library, but better than the library itself is how active and approachable the author is.
There may be some communication between product and design to figure out how it should look and feel.
Then it'll go into a sprint most probably, but not the current sprint, because that would change the scope and affect estimates and possible delivery timelines. You'd only change the sprint scope if the team is running out of work to do or there's a major customer request or other panic.
There will be some measure of QA, ideally. Some people fly by the seat of their pants, and rely on fixing things in production if it breaks in production. This is using your customers as QA. Can work if you roll out gradually and are very responsive to any reports of regressions.
All in all, this is unlikely to happen in less than a couple of weeks. The processes are designed for predictable, consistent delivery and to minimize surprise. Shortening the chain will mean less integrated decision making and will increase the amount of surprise and inconsistency in the product and its delivery.
If someone secretly implements an awesome feature, others might be envious as it does not seem deserved if their idea did not receive the same level of scrutiny by the usual processes as other decisions did.
Theoretically, it probably won't cause much chaos at all if programmers are allowed to add small GUI tweaks and the product likely benefits from it.
The degree to which this would work probably depends a lot on the extent to which the programmers have reached Kegan level 5, so practically it probably won't work all that well.
The envy isn't about the awesome feature: it's about the fact that this developer gets even more attention and positive notice from leadership by means that aren't available to other workers due to social status (rather than merit).
This is not so much a problem when you add a new feature like this triple-click which doesn't change existing usage and workflows. But even here you want to add that to your documentation, inform your support staff about it etc.
For changes that affect the look & feel of the product, your users will curse you if you roll out multiple of those per week, even if everything is totally stable and free of bugs.
In a larger team the flow of info is DevOps/Developer spot error in CI/CD, find out which commit/Developer broke the build. Email/slack/ walk over to let them know and sit down for a friendly troubleshooting session.
Resolve the problem. Follow necessary processes to commit change. CI/CD hosted agent is busy building other projects because not enough budget for multiple hosted agents and all CI/CD is handled in the cloud. Time to go home!
Obviously that was a bit facetious but you get the picture.
Additionally, beyond trivial projects, some changes may require changes to architecture, even small ones. A new feature may require a new index, a schema get updated, a new worker be setup to run in prod, etc.
And usually there are multiple PRs waiting to be added, which have to be deconflicted, and the lead dev still wants to code so everything takes longer than you'd think.
Those 100 engineers have to first agree on a CI/CD pipeline.
Larger teams suffer from the fact that everyone has number of requests and prioritising one over other gets even more complicated. Even a simple request like this might have to go through a pipeline.
It certainly helps to be a solo dev but that's not all.
If you want to target Photoshop userbase, you absolutely must implement 16-bit editing and the ability to open RAW camera files. This project can't do either, while GIMP does.
It's still impressive what he did.
Imitating this basic UI with nearly 100% accuracy is a stroke of genius. Not even Affinity Photo, which is clearly taking lots of ideas from the Photoshop UI as well, comes close to this level of familiarity. Photopea truly feels as if it was Photoshop from 10 years ago, which is exactly the Photoshop that lots of people not working in the graphics industry, where an Adobe subscription is mandatory, love.
though if your OS has decent windown management and tear dow menus (both not an option on osx-cloned gnome3) than you'd be a fool to use it
You're implying that there's only one type of Photoshop user. That's not true. Lots of Photoshop users never touch 16-bit or Raw files.
I have never heard someone saying "Hey, that photo has been paint dot netted."
I'm a Mac user and have a Sketch licence, and use it often for personal things, but if you're looking to build a piece of software that supports workflows with multiple people working on / implementing designs independently in a professional setting, expecting every company using your software to enforce a fully Mac-only office* is only going to get you so far.
[0] https://www.sketchapp.com/support/requirements/other-platfor...
* I also work in a pretty-much-Mac-only office, so I do acknowledge that this strategy is not entirely fruitless, it's just not going to replace Fireworks.
Comparing this one to Paint is disingenuous.
I think Photoshop also operates on a reduced image for previewing the outputs of filters and other tools. Compared to Photoshop, Photopea is a bit laggy with large images on my 8 year old machine, just like GIMP.
I used to post here about Photopea in the past without much success. Now, I see a others posting it, and it makes me happy :) Thanks for all your support!
I was curious that given its an JS/Client side app, do you have any plans of porting it to Electron[0] to make it a cross platform app?
The reason I'm asking is coz editing my photos online makes me a bit nervous. For you the benefit may be that you don't have to test for different browsers and handle the compatibility nightmare.
Just wanted to say thanks for an excellent product!
(It's real funny how you discover something for the first time, then start seeing it everywhere like it should have been obvious before!)
Now, I know a lot about the bits and pieces of web development, but not how to design and organize such an app.
https://old.reddit.com/r/IAmA/comments/9urjmg/i_made_a_free_... https://old.reddit.com/r/IAmA/comments/9urjmg/i_made_a_free_...
They had a funding crisis last year [2], but currently seem to be doing well with two paid developers. They could really use your (one-time) donation however [3].
Krita has to to be compared to Photoshop because both are working on rasterized images. While Krita emphasizes drawing tools in its UI while Photoshop exposes manipulation tools more prominently, both programs aim to cover both sets of features. And Krita's core is actually much, much more advanced than what you would expect from a drawing program. I would actually love to see a UI for Krita that focuses more on manipulation, just to placate the "it's just for drawing" crowd.
Apparently the latest release of CorelDRAW came out in April this year. I'm a little surprised - I thought they'd disappeared. But apparently you can both buy a license, and rent it by the month.
Open source under licenses like AGPLv3 will prevent other companies/developers using it for generating the revenue without full source code disclosure (and you'll be able to sell exceptions).
Unfortunately, nowadays the threat of acquiring and killing the product is more realistic than ever.
I hope that actually does happen for Ivan. Wouldn't that be a great outcome for him? He spent a considerable amount of time on it.
https://addons.mozilla.org/en-US/firefox/addon/old-reddit-re...
This is really impressive. I will be using this in the future - great work.
Are you at all worried about Photoshop coming after you for this? I know nothing about what patents they have etc., but it _is_ very similar to PS in design and functionality.
Thankfully that didn't stop Serif with Affinity Photo. The user interfaces and tools are so similar many tutorials don't even need modification.
There are a lot of parts of Photoshop which could be radically improved if Adobe weren’t constrained by needing to preserve existing customer workflows from circa 1995 and build off decades of legacy code / organizational inertia. Most of the low-level decisions in Photoshop are based on academic research from the 1970s, reimplemented in the early 1990s to match mid-range computer workstations and typical images of that time.
Many new image editors have basically zero thought put into design or core image processing infrastructure, and are just exact copies of Adobe’s ideas, without considering that computers and imaging have changed dramatically in the past 2 decades.
(To be fair, coming up with new ideas and then polishing them to the point they are ready for customers is really hard: it takes vision, cross-disciplinary expertise, new research work, multiple attempts at implementation when some ideas don’t work out, integration effort fitting ideas together, etc. Clones are a lot easier.)
2 - every operation, every brush stroke, should be nondestructive, stored on automatic layers, and always adjustable.
3 - the rendering pipeline should be built from the ground up to support the nondestructive workflow on modern hardware. This means aggressive caching of layers with GPU compositing throughout.
4 - a full commitment to open data formats. Since a nondestructive workflow requires storing all of the instructions for every edit, these should be save-able in an open, human-readable format such as JSON. This would open the doors to scripting the editor with external tools, with the nondestructive editing instructions coalescing into a standard API.
Non-destructive workflows also have a huge maintenance problem: you can never again touch code that is involved in the creation of the final result after it has been released because it might break the user's files. It is not just the loading and storing part, but the whole backend can never be evolved in a reasonable way without breaking backward compatibility. After a while you sit on a pile of code for legacy operators and data models that you need to support and stops you from doing meaningful development.
I love non-destructive editing in many cases, but I also have some experiences with implementing that concept and this has shown me how constraining it is and how much effort it takes.
No, brush strokes would be stored as paths that simply record the input information needed to reproduce what the artist did with her mouse or stylus.
I hear you about the issue of breaking changes though. I think it takes real discipline to develop a format that's adaptable and with the capability to let you migrate files without visible changes. It would take one hell of a test suite though.
The only way to not change the output is to match the the already released operators exactly. This is almost impossible unless you freeze the code for each operation after it has been released originally.
As for Google Tilt Brush, well that's just a failure to use proper caching.
And yes, any descriptions of nondestructive edits is by its nature a script that needs to be replayed by an interpreter to get the final state of the document. No matter the level at which you introduce the interpreter, you cannot upgrade it without risk to backwards compatibility to existing documents.
And if you you want the script language to be low level enough so that the implementations of your operators need to be dumped into the document, then you need to (a) write about half of your program in said scripting language and (b) end up duplicating that in every dicument that is created.
Oh, so Tilt Brush is 3D? So it's not at all comparable to a 2D image editor. I don't see how proper caching of a fully nondestructive editor should use any more space than a Photoshop document with a ton of layers. In fact, I think it could use a lot less, since Photoshop wastes tons of space when you duplicate source images in order to build up filtered layers with masks and so on. A nondestructive editor could save the space by not duplicating those source images so much.
And if you you want the script language to be low level enough so that the implementations of your operators need to be dumped into the document, then you need to (a) write about half of your program in said scripting language and (b) end up duplicating that in every dicument that is created.
Yes, this is what I had intended. But I don't think it's as bad as you say. You don't need to dump the bytecode (or equivalent) of your entire editor into every document, you only need to include the bytecode needed to reconstruct each of the edits made by the artist.
The editor itself could even include the source code of all its operators and let the artist modify it as she goes. It would be like the Emacs of image editors!
I am not going to create a full model to estimate memory usage and of the different designs. It is however clear that a nondestructive approach is more computationally heavy in principle because it will always rerun the same operations more often than a destructive one. And all these times do add up. An operation that takes 100ms after a click or keypress is perceived as practically instant. But 100 of these take 10 seconds. And there are operations in Photoshop that a lot longer than that.
Although I wish the documentation wasn't just PDF files you can't copy/paste from, not an ideal way to provide code snippets.
The main problem of the Affinity stuff is a lack of integration with professional niches and functionality that pros need for daily bread & butter work. E.g. not having an easy way to mock products (smart objects) renders it already unusable for most professional graphic designers. Instead of using the commonly used HSV color picker like in Adobe apps or Sketch, they go with HSL which isn't as intuitive. Many "small details" like that..
The devs seem to focus on overall functionality, specs and performance, not workflow specific functionality that makes tasks easier. The UI looks great, but is awkward to use.
They seem to be more concerned about being perceived as alternative to Adobe products than actually being an alternative.
It is a tool that is more than powerful enough for the photo-editing needs of almost everyone, and it costs a tiny fraction of Adobe's offering. At least there are a couple of companies offering some competition these days.
Also, recent versions of Affinity do support HSV mode too, afaik.
Free to use, not free software. I cannot imagine doing anything remotely Photoshop-related in a web browser...
> There was about 1.5 millions of visitors in October
Visitors do not equal users. If those were even 1% of that it would be impressive.
I do that all the time, we might have different definitions of what photoshop-related is, but I often use pixlr.com to cut faces out of photos and put them on other things. I will check out his product
This is a tiny fraction of what Photoshop does. Even back in the mid-2000s, when I was a graphics designer, I rarely used Photoshop for simple work like that. It would have been the equivalent of using a nail gun for a single nail to hang a photo frame. You could do it, but the $10 hammer in the shed will work just fine.
He says he opensourced about 30% of it.
Really? They already made Lightroom in browser making use of WASM.
* It's free
* It loads so much faster, and the interface is in my opinion just as responsive as photoshop.
* It doesn't require 200+ Meg of space on my hard drive
* I can use it wherever, on any computer that has an internet connection.
* And it has all the features I need in a photo editing tool.
The only drawback for me is that it was flash based and now I found a html5 version and I think I'm in love with Photopea now.
Really nice work, I'll check it out more thoroughly when I have the time.
The fact that the author now has 1.5M + users and just got a reddit hug of death is super impressive. Well done to Ivan.
If one has already decided that they are no using the industry-standard Photoshop, then what would be the advantage to using Affinity instead of Gimp, which has the price and community advantage?
Also commercial support.
As for commercial support, with the notable exceptions of Amazon and Rackspace, I cannot think of any commercial support that has been worth anything more than a good FAQ documentation would be. Can one really ask beginner questions on their commercial support, like one could do in a forum with a large user base?
https://forum.affinity.serif.com/
Personally, I just bought it because I wanted to support an Adobe alternative.
Also, this:
>In a March 2014 discussion,[9] Moschella states:
>I originally created Gimpshop, but I'm not the jerk who owns that domain and added adware & spyware to the source. Sorry about that. I hate that this guy is out there making my fun little project into an abomination.
>I don't have a project site for it. I became discouraged after this whole ordeal and I let it slip away into obscurity. Gimpshop was a fun little 'prank' that got bigger than I ever expected. Sad what it has become, though.
We run a design service (http://draftss.com) and we understand the significance of the amount paid for licenses every year. This isn't limited to learning just Photoshop; instead there are abundant number of softwares like Illustrator, CorelDraw, Indesign, Sketch, etc. that are necessary for designers to be familiar with. The cost makes it difficult for budding designers to spend time in learning multiple softwares efficiently.
I'm guessing a lot of oss photography libraries and tools may be ported to wasm eventually. SIMD and threading are going to be two big enablers for this. That's also something that may benefit this project. T
Curious if there could be a way to use it completely offline (on a non-connected laptop while on a trip or something), but that would be a rare occurrence for me.
Since it all happens client-side, this may be my new "I need a quick edit" editor
He only uses Paper.js for computing vector graphics booleans.
He claims he uses Paper.js only for computing vector graphics booleans.
1. https://github.com/electron/electron 2. https://en.wikipedia.org/wiki/Ext_JS
Adobe is a company, not a person. It can not feel.
http://www.faculty.ucr.edu/~eschwitz/SchwitzPapers/USAconsci...
I disagree with it. And even if I didn't, there are other reasons it wouldn't change my ethical outlook on the situation. But it is interesting nontheless.