303 points by f055 54 days ago | 21 comments
mrandish 53 days ago
> "It followed a set of five rules to benefit the end user: no installers, no archives, no registry keys, no additional runtimes and a single executable file."

Reading this sentence made me feel warm and happy. I get why the registry exists and things work the way they do today around the Windows software ecosystem but... damn, I really miss the days when most desktop software was more like this. These days I try to use portable installs whenever they're available, I just wish it was more common. The time, inconvenience and uncertainty I'll be able to fully restore all my preferences makes me actively avoid reinstalling Windows.

thrdbndndn 53 days ago
There are lots of useful actions an installer does that (some, if not most) end users actually want, including but not limited to adding shortcuts to start menu so you can find it or search for it, associating file formats, registering to Windows' program list, etc.

I was a big fan of "portable" software, but nowadays if a software offers both ways, I actually prefer using installer. Otherwise I have to manually add them to Start Menu to be able to search for it, to begin with.

I do hate registry keys, simply for the fact they are often lost after reinstalling the OS. Please just keep all the settings in %appdata%!

klodolph 53 days ago
I’m really fond of the way macOS does this, which is to stick this information in the executable.

Back in the day, this worked via a flag in the metadata for each file. When you got a new executable, the flag was unset. The OS would see a file with an unset flag, ask “Is this an executable? What files can it open?” and then add this information to a database called the desktop database.

This is why file associations work on a Mac without an installer, and without writing any code (you just have to write the code for “open file in response to OS request”).

cosmic_cheese 53 days ago
Furthermore, the OS can pick up the extensions, services, etc the app carries within its app bundle and offer them to the user to enable this way. No need to copy files to obscure directories (be it manually or with an installer), and when you trash the app bundle they’re all gone.

This is why merely having a copy of an app is enough to make QuickLook able to preview the filetypes the app is capable of opening. The system picks up the QuickLook extension in the app bundle and enables it.

It’s not perfect since small .plist config files get left behind, but it’s a whole lot more clean by default compared to the Windows approach.

DidYaWipe 53 days ago
This is just not true, and hasn't been for decades. Many, if not most applications create subdirectories and store stuff in the Library/Application Support directories. Trashing the app bundle leaves all that stuff behind.
cosmic_cheese 53 days ago
It comes down to each individual developer, and generally speaking indie devs are much better behaved than cross platform giants like Adobe. It’s another reason why Mac users often have a preference for native AppKit apps, which are what indie Mac devs tend to build.

Either way, the end result is still better than under Windows because at least macOS doesn’t go out of its way to keep the Application Support folders (user and global) hidden with magic URLs and such. Tick the checkbox to not hide the Library folder in your home folder’s Finder inspector window and the only thing making access harder is gone.

hobs 52 days ago
>Either way, the end result is still better than under Windows because at least macOS doesn’t go out of its way to keep the Application Support folders (user and global) hidden with magic URLs and such. Tick the checkbox to not hide the Library folder in your home folder’s Finder inspector window and the only thing making access harder is gone.

The way to access your folders in windows is literally exactly the same -> show hidden folders - the "urls" (%APPDATA%) are just shortcuts because of the historical moving around of stuff. Most devs leave all sorts of trash in OSX application support, check it out, its jam packed. Some apps are now running from there.

cosmic_cheese 52 days ago
It’s not the same because macOS has a setting for Library folder visibility specifically. Keeping that folder easily accessible doesn’t require turning on visibility for all hidden folders/files and then having to wade through a ton of normally invisible junk. ~/Library/Application Support/ is just a plain old path too, no need for magic platform specific keywords.

And yeah, Application Support is full, but as noted the worst offenders are consistently cross platform apps that don’t care to adhere to convention. The Application Support folders for Mac-first apps are usually pretty lightweight/clean, with exception to apps like Logic which use it as a place to keep downloaded assets.

DidYaWipe 52 days ago
Actually, it does. A few OS versions ago, Apple started hiding the user Library directory. And then obnoxiously RE-hiding it with each OS update if you had cleared its "hidden" attribute.

I think they finally stopped the re-hiding behavior.

None of that compares to the mess that is Windows's user directories. I mean... WTF is all of this stuff? There are two or three copies or shadows of the user-directory structure, and everything is "forbidden..." Windows is just painful and infuriating to use at this point.

alt227 53 days ago
> which is to stick this information in the executable

This is neat, shame they went completely the other way with file metadata. It forces a hidden .ds_store file in every single folder a mac touches just to store info like access time. Every other system stores this in the file itself.

neotek 53 days ago
First thing I used to install on macOS was Binaryage's superb asepsis utility, which intercepts the creation of .ds_store files and redirects them all to a local container folder, until SIP killed its development.

It always seemed suspicious to me that Apple, a company that is famously obsessed with UI/UX, would settle on such a ridiculous process for storing file metadata.

NobodyNada 53 days ago
Windows does the same thing with 'Thumbs.db' files. They're just hidden from you on Windows systems, just as .DS_Store files are hidden on Unix-like systems; but you'll see them if you use a thumb drive with both types of machines.
alt227 53 days ago
So why are the smb shares on my linux file servers full of millions .ds_store files but zero thumbs.db files? I have to run automated scripts to remove them regularly, and try to run the commands on the macs to stop them writing ds_store files to network shares [0]. But still it seems to magically reenable itself every now and then. This is a problem I have never had with windows machines and 'thumbs.db' files.

[0] https://web.archive.org/web/20190714230437/https://support.a...

p_ing 53 days ago
If I recall, Windows does not generate thumbs.db files, thus file icons-as-pictures, on any non-local device.
jamesfinlayson 53 days ago
I didn't think newer versions of Windows generated Thumbs.db either (well I think they do, but in some centralised location I thought rather than in every single individual directory).
noisem4ker 52 days ago
"Newer versions" ≥ Vista (2007)

They switched to storing thumbnails locally.

NobodyNada 52 days ago
Ah, guess my knowledge was a bit out of date then :) I haven't been a regular Windows user for quite some time. I thought I'd seen Thumbs.db files generated on flash drives by at least 7 though.
jamesfinlayson 52 days ago
Ah okay - I thought maybe it was Windows 7 (I never used Vista) and 7 doesn't feel like four versions ago.
DidYaWipe 53 days ago
Because Apple thinks nothing of spewing these turds all over every machine and directory you visit from a Mac, which is not just a dick move but also technically incompetent.

The next Mac visitor who comes along will overwrite the turd with his own, so that's a blunder.

Then there's the fact that they could have stored all the turds on the local machine, keyed by URI or path or network address. This would solve both the dickishness and the overwriting problem. And if a remote machine's path or address changed, whoop dee doo... you lost your Finder layout for that directory. Pretty low stakes.

manwe150 53 days ago
Not to be too annoying, but that file is how it supports the feature on non-posix-compliant file systems (usually FAT). On filesystems that support file-streams (or the original HFS), that metadata is stored on the file itself
p_ing 53 days ago
You're thinking of resource forks. .DS_Store is stored as ".DS_Store" even on APFS.
alt227 53 days ago
Considering how pushy Apple normally are when it comes to forcing their customers to use new things so they can obselete old ones, I am very surprised where Apple have drawn the line in supporting older systems.
Lammy 53 days ago
Relevant: “The Mac, Metadata, and you” (2001) https://arstechnica.com/gadgets/2001/08/metadata/
paulddraper 53 days ago
I mean…that’s just the same thing right?
klodolph 53 days ago
Same thing as what? Same thing as having an installer modify HKEY_LOCAL_MACHINE\Software\Classes, and having the associations break if you move the program to a thumb drive?
pjmlp 53 days ago
If only everyone actually kept up with Windows development best practices, including Microsoft teams themselves[0].

Configuration via XML files, AppData, registry free COM activation, MSI installers, only to quote a few examples, are decades old by now, at very least since Windows XP.

[0] - To be fair, nowadays many young employees seem to only ever used Windows after joining Microsoft, so what else can we expect, if apparently they don't get the right mentoring.

kibibu 53 days ago
I cannot stand AppData, specifically the way it's often used to store files that should be in Documents.
jeroenhd 53 days ago
That should be covered by the part about "best practices".

That said, I keep finding more AppData files in my Documents folders than the other way around. Linux software (especially legacy software that doesn't respect the XDG spec) is the worst for that, somehow spreading files and directories across my user profile directory and my documents directory.

Dennip 53 days ago
Probably just preference but I hate when apps put things in the documents folder, thats where I want to put the things I've created specifically, not automated config files etc. There should be a 'Preferences' folder or something to separate the chod in AppData from the useful stuff.
jamesfinlayson 53 days ago
I'd never heard of AppData until a few years ago when I went hunting for where some game config file was getting written to.

Seemed like a bunch of disparate things with the most common probably being a dumping ground for programming language library caches (Maven and NuGet and maybe another couple).

kibibu 53 days ago
I lost my kid's minecraft world because it stored everything under AppData/Local or some nonsense.
mattl 53 days ago
How did you lose it? That sounds super frustrating
kibibu 53 days ago
By backing up everything in important-looking folders (including My Documents, My Games, the Minecraft installation folder), and overlooking AppData as it is 99% download caches, tempfiles, and other garbage.
hobs 52 days ago
:) and local state, configuration, and anything an app needs when you do stuff. It's really the local user state in most cases, very important to back up!
wink 52 days ago
On my Win10 desktop it got to 30GB though and the stuff worth backup is actually about 1GB of it.

Let's just call it what it is: a complete mess. Some apps install their binaries in there, some just config files, some all your data.

If there are guidelines (and they are not conflicting) about 1/3 of apps are ignoring them.

Also good luck trying to back it up with robocopy or anything, maybe windows' own backup tool can read it while running on that account, I usually get errors, which I think are mostly fine to ignore.

hobs 52 days ago
There's no good guideline - if you want a local cache that transports across user migration, that's the show. Windows doesn't really have a "separate your local disk cache from your backups" method, but you can certainly do the Cleanup Task to remove some things that buy into that modal that's 25 years old :)
fngjdflmdflg 52 days ago
I made a similar mistake when upgrading my SSD. There was some token that was stored in there that I needed, and IIRC I had lost the password needed to generate a new token. I only realized that I was even missing it a few weeks later when I needed to use the tool again. luckily I still had the old SSD so nothing happened. This happened even though I'm familiar with locallappdata and have even used it in some apps I created. It's just not the first thing you would think about when doing a backup unless you've already been bit by it before. Apps generally don't tell you if they store something important there, and the tool I was using never tell me where the token was stored. Doesn't help that file explorer hides the folder from you by default.
Suppafly 52 days ago
>I cannot stand AppData, specifically the way it's often used to store files that should be in Documents.

Which programs do that? Or do you think things like preferences for programs should live among your documents?

Gracana 52 days ago
A lot of games store save files in appdata. That’s the only thing I (not op) can think of, and one I regularly find annoying (if only slightly).
Suppafly 52 days ago
Yeah I suppose that's the only example I can think of, I noticed a comment later mentioning that that is where minecraft saves things, although I'm not sure I'd want those in with my documents either. They probably should live some place that the user has access to, so I guess that leaves app data or documents, neither feels like a great choice.
pjmlp 53 days ago
It is not meant for that, rather blame the developers.
CLiED 53 days ago
Is there a book or site documenting these best practices somewhere? I'm getting into windows dev and am curious about them.
Suppafly 52 days ago
>There are lots of useful actions an installer does that (some, if not most) end users actually want, including but not limited to adding shortcuts to start menu so you can find it or search for it, associating file formats, registering to Windows' program list, etc.

This, I don't really mind unzipping some random small utility, but for things like games and larger applications where you'll actually be saving data and preferences, a real installer that knows how and where to put things following the correct methods for the operating system is much preferred. Then I can run the uninstaller to clean it up when I'm done with it.

vlovich123 53 days ago
What about a standalone executable that just offered the ability to install itself without having a dedicated separate installer?
restalis 53 days ago
It would be annoying. If the use-case is as a portable application, but the application would want to let the user know (in a sufficiently loud manner) that it can install itself, then either the user would be forced to pay attention at that aspect every time it opens the application, or that "portable" application will have to somehow pollute the environment with (at least) a note for itself of the fact that user was offered but chose not to install anything. That note is usually just a first change in the system and, for a non trivial application, is way too easily followed by many other kind of saved changes, which in itself looks like a creeping install. Then, if the user would actually choose to install, the app will have to do what, make shortcuts to its current location, which may be a thumb-drive, or another less ideal placement for a program (because how many of us take time to think about file management anyway)? Or, if the application makes a copy of itself to a conventional place (for an application) in the system, then now the useless standalone executable either gets forgotten about or becomes a burden for the user (who has to decide what to do with it).

The most appropriate behavior for a portable application is for it to stay clean by default and only offer the user to explicitly enable persistency-dependent functionality. When the application starts, it checks if there's any previous trace of itself and depending on that it either keeps its portable-like clean behavior or switches to installed-like one.

vlovich123 53 days ago
Why would it have to let the user know via an obtrusive splash or anything? Could just be a very simple unobtrusive option on app launch or a menu item.

Same goes for post install - not too hard to arrange to auto delete the old copy.

pjc50 52 days ago
The really tedious answer is that there's special (very badly documented) magic to installers on Windows. I suppose you could shove an MSI inside the executable, then write it out and shellexec to install the MSI.
jamesfinlayson 53 days ago
I remember a game that did this in like 2006 (it was a small GUI program called drug baron or something like that - you bought and sold drugs and weapons with your sales and purchases affecting the market - like a text-based game without having to use the command line).

It didn't work so well (probably not programmed that well I guess).

moron4hire 53 days ago
I suspect there were a few games like this, but I think the most popular one was called Drug Wars, in case anyone cares to go looking.

Yes, it was very poorly programmed. It always surprised me how popular it was. I think it was kind of a middle- to high-school meme game. I think the main popularity was that A) it was edgy, and B) kids could run it in school computers.

jamesfinlayson 52 days ago
Yeah Drug Wars was probably it.
Kwpolska 53 days ago
If I want to use a program once, I’ll just use a portable version. And I’ll be angry if it decides to add itself to the context menu of all Explorer files.

But I agree, for things I use more often, installers are the way to go, and I am not a fan of projects that just give you a zip and ask you to figure out where to put it.

delusional 53 days ago
After using Microsoft Intune I will never again complain about installers. At least installers mostly work, and when they don't you can run them again.
yndoendo 53 days ago
That is one of the reasons I like GO language. Single executable, which makes tooling easier for others to use. My alternative method is using single executable packaged with NSIS that extracts everything to a temp directory before running.

Sorry, Window Registry is a cornucopia of inconsistency and poor design. Gnome's Registry is well designed, comparatively. Key descriptions, value options with limitations and which is the default is a quality User Interface design. Just look at the Windows group policy to registry mappings, they are all over the place for the same logic layout with double negatives for keys.

djfobbz 53 days ago
Yeah, that's why Go is a solid win - single binary, no installer headaches, just build and run. Rust's powerful but comes with build complexity and dependency juggling. Go keeps it clean, fast, and dead simple to deploy.
airstrike 53 days ago
Obligatory comment saying you can do the same in Rust
eptcyka 53 days ago
I can’t target msvc or aarch-64-apple-* and compile a binary on Linux, without resorting to significant amounts of rectal dentistry.
jeroenhd 53 days ago
I've built .exes for Windows just fine on Linux. I don't know about Apple stuff, though, I don't think there's any built-in Linux tooling to submit an executable for Apple's signature scheme.
iknowstuff 53 days ago
Can’t you just replace the “cargo” command with “cross”

    cross build —-target=…
https://github.com/cross-rs/cross
demurgos 53 days ago
Cross-building for Apple is possible, but it's far from smooth with many steps that you have to figure out by yourself unfortunately.
cooljacob204 52 days ago
I use this which seems to work well for my projects. Particularly their docker image.

https://github.com/rust-cross/cargo-zigbuild

delusional 53 days ago
You can in fact also do it in C
IshKebab 53 days ago
It's not quite as seamless as in Go to be fair. But it does mean you can write Rust instead of Go.
p_ing 53 days ago
And .NET
Dwedit 53 days ago
The original purpose of the registry was to tell COM where to look for a DLL file given a GUID. Then COM could create instances of objects.

You still see that in there with HKEY_CLASSES_ROOT.

You can technically create objects without the registry, if you load up the DLL, then call the exported functions to create a Factory object, then use the factory object to create instances. It's what COM itself does.

dkga 53 days ago
That simplicity and lightness of design also resonated with me.

By the way, really cool read-off. The only thing I missed though was a deeper discussion of some of the challenges that the author alludes to in the beginning. But that’s just me being pedantic, the post is really nice and actually seems to be quite an impressive work.

dgfitz 53 days ago
I’m not sure what the best path forward is for making single-binary apps without static-compiling in of the libraries. Licensing usually makes that untenable.
ryandrake 53 days ago
The license is one of many the tradeoffs you make when you choose whether or not to include third party libraries. You don't have to use them.
dgfitz 53 days ago
I sure don’t. You nailed it.
maccard 53 days ago
Pay for it, or open source your work (assuming you’re talking about QT).
TingPing 53 days ago
The classic option is just a self extracting exe. I don’t really understand the fear of archives personally.
gkbrk 53 days ago
Which license forbids static linking?
01HNNWZ0MV43FF 53 days ago
They might be referring to *GPL libraries not allowing proprietary / permissive exes to static-link them. e.g. I think Qt requires its DLLs to be separate on disk as part of the LGPL, unless you buy the commercial license.
rubymamis 53 days ago
Please don’t spread misinformation, there’s a HUGE difference between GPL and LGPL, and you CAN statically link with LGPL you just must provide the object files to the user so they can re-link them with any version of Qt they want.
marcodiego 53 days ago
> no installers, no archives, no registry keys, no additional runtimes and a single executable file.

This is exactly the experience nowadays with AppImages.

Narishma 53 days ago
AppImages still leave traces in your home directory. If you're luck it's just a dot file or folder that can easily be deleted but I've seen some that pollute a lot more.
53 days ago
tonyhart7 53 days ago
only works with hobby project with barebones feature
chpatrick 53 days ago
Photoshop has a million features though, a couple of image filters doesn't really count as recreating.
JackFr 53 days ago
Nailing the UI though is both very difficult and very important.

In 2006, GIMP had a ton of features, but compared to Photoshop’s UI it was positively awful.

Arainach 53 days ago
You could replace that year with any year since the start of the GIMP project and it would still be true. It's the epitome of an open source project run by people who care about technical features, not real world users.
jeroenhd 53 days ago
GIMP definitely suffers from programmer UI design, but Photoshop isn't much better. Menus nested in menus nested in dialogue boxes, keyboard shortcuts that conflict with every other shortcut on any system still in use today, and of course the assumption that everyone already knows what every button does. It's not quite Blender levels of unintuitive, but there's a reason people take courses just to use the damn program. If it weren't for the branding popularity and the fact Photoshop was one of the first programs of its kind, I don't think it'd ever gain popularity with that terrible kludge of a UI, and that's without the ridiculous price.

Ever since GIMP docked toolbars and windows by default (which also took a few versions in Photoshop) I don't think the interface is that bad anymore, at least not compared to Photoshop.

raincole 53 days ago
Photoshop's UI is terrible as well (not defending GIMP). At least for digital painting.

- How to set 'C' key as to open color palette? Surprisingly, you can't do it in Photoshop.

- Photoshop is the only painting app that needs a completely new interface for liquifying, instead of just implementing it as a brush.

- Photoshop's 3D, vector path and animation feature are all abysmal. I guess it's to push you to buy other Adobe software.

mock-possum 53 days ago
Last time I checked ( a few months back) there was a little package of configurations + plugins / skins that were geared towards tweaking GIMP to be more accessible to people who were familiar with Photoshop -

And it wasn’t perfect, but give credit where credit is due, it was better than it’s ever been, it definitely got me close enough to complete a little photo collage project.

pdntspa 53 days ago
Photoshop had a pretty steep learning curve. "Users" had to spend some time getting to know the workflow.

GIMP also has a steep learning curve. But these same "users" turn their noses at spending some time getting to know the workflow.

As someone who is proficient in both, it is not hard to hit similar levels of productivity with GIMP as it is in Photoshop.

I hate this attitude that people have with open source being "user hostile". Stop acting like spoiled children. Why must the software always come to you? Why cant you come to the software?

Lord-Jobo 53 days ago
I think the biggest hurdle is that the shortcuts, ui, and workflows all feel different for the sake of being different. Why reinvent the wheel on it?

I also hate this idea that we aren't allowed to give feedback on open source software. I get it, it's an incredibly thankless thing to do, but feedback of "having to relearn all of this stuff is unpleasant" isn't a problematic thing

BizarroLand 52 days ago
It's not that they CAN'T duplicate photoshop, it's that adobe would sue them out of existence if they did.
m-schuetz 53 days ago
Gimp is an entirely different league of user hostile. There are intuitive GUIs, unintuitive GUIs, and then there is GIMP.
pdntspa 52 days ago
Everyone says this, but nobody backs it up.
m-schuetz 52 days ago
The thing about something like usability is that if, as you say, "everyone" says it's bad, then it is bad.
pdntspa 52 days ago
Or they're propagating a meme.
HeyLaughingBoy 52 days ago
Because tools should be built for their users, not the other way around.
kakuri 52 days ago
GIMP is astonishingly bad. I got by for many years with Paint Shop Pro, even through its steady decline after Corel acquired it, but eventually they destroyed it. In desperation I turned to GIMP but it is so bad that I now use Photopea. I would pay for a modern functional equivalent of Paint Shop Pro, but I don't know that it exists.
ffaser5gxlsll 53 days ago
This is completely subjective.

As a student I used a ton of warez software in the 90ies. As such, I didn't have any real prejudice back then, and photoshop was the worst of the bunch from my perspective. I held that view for a long time, akin to how I consider autocad from autodesk one of the worst cads you could use despite being outrageously popular.

I have no longer an opinion on it as I didn't use it for such a long time. I'm cycling between krita and GIMP, and GIMP's UI is just fine to me, in the same way I suppose a ton of designers-with-big-opinions are more familiar with photoshop due to all the training they did on it (and probably, _mostly_ on it).

Nzen 52 days ago
Sure, our expectations about UI patterns are path dependent. However, if a program isn't consistent internally [0] (rather than against the body of software we are familiar with), then the complaint is less subjective.

[0] https://www.youtube.com/shorts/tFYkGyaXCw0 1 minute example of the procedure for editing a brush style

BizarroLand 52 days ago
I get that whoever made and posted that terrible youtube short is annoyed, but if they had done a basic search online, specifically "how to edit a brush in gimp", the first result would have taken them to this page:

https://docs.gimp.org/en/gimp-brush-dialog.html

Which says:

It is a general rule that you cannot alter the resources that GIMP pre-installs for you: brushes, patterns, gradients, etc; only ones that you create yourself.

It's okay to be annoyed when something doesn't work the way you want it to, but RTFM before you make a rant about it. It's the bare minimum.

brnt 53 days ago
People say this, but I didnt have such issues using Gimp compared to PS. They are different, that's it.

The main thing I missed were stackable layers, but it was not a huge issue for me.

phendrenad2 53 days ago
People say it because it's true for them. User experience is after all highly subjective. I think that the open-source world largely ignores this fact and pretends that if any one person says "good enough for me" then it's done.
brnt 52 days ago
The reserve is true too: if anyone says it's NOT good enough for them, then it's done.

Actually check it out yourself, and give yourself some time to get used to it. If you care about not using PS of course.

phendrenad2 50 days ago
> The reserve is true too: if anyone says it's NOT good enough for them, then it's done.

"done" is defined by the creator of the software. If you're the creator of GIMP and it's suitable to your purposes, you can call it "done". But ostensibly, you made it free so that others could benefit from your efforts, and possibly even open-sourced it so that it would be accepted as safe to use. If that's the case, then something isn't "done" unless you're happy with the number of users who find it acceptable.

I suspect that the creators of GIMP fall farther on the side of "suitable for our purposes" than on the side of "suitable for a large number of people's purposes" (however this may be unintentional and/or laziness or bad strategy on their part).

> Actually check it out yourself, and give yourself some time to get used to it.

Assuming I haven't is an extremely bizarre but inexplicably commonly-made mistake. Can you explain what leads to this mistake?

> If you care about not using PS of course.

You might not realize it, but this is a (perhaps unconscious) "no true Scottsman" fallacy. I take it you're not a creator of GIMP, so you don't have any authority to say what GIMP is intended for. So the idea that it's for people who "care about not using Photoshop" isn't a valid assertion. That's your opinion, but you should try to back it up with something. I see nothing on the website or the Wikipedia page that backs up the claim that it's for people who "care about not using Photoshop". It seems like it's for a much, much wider variety of people than that. Why gatekeep like that?

53 days ago
rcxdude 52 days ago
It also did lack some important features. It still doesn't have proper support for different colorspaces, for example, and it's really not very on board with non-destructive editing in general.
77pt77 53 days ago
What's your opinion on Krita?
raincole 53 days ago
(not the GP)

Krita is very functional as a digial painting program. But I think the dev team took the "painting" part of digital painting too literal. They clearly spent a lot of time developing niche brush features (the only painting app has more detailed brush settings I know is Corel Painter), which is nice, but some other areas are neglected.

In comparison to Photosho, it's quite painful to add any text in Krita. The layer styles and filters are much less performant. But if you only do painting, Krita is totally fine.

badsectoracula 53 days ago
As someone who has used a bunch of different image editing tools to make stuff (mainly for games, though i'm not an artist - i just need to make art :-P), Krita is fine. It has a bunch of weirdnesses (e.g. 2983942 commands to paste an image and all of them are kinda weird or missing in some way) and doesn't have as much features as GIMP but overall it is fine. Then again i found GIMP fine for a long time.

Though my favorite UX (and features) of all time is Paint Shop Pro 7 which i find superior to Krita (i have it installed alongside Krita, GIMP and Kolourpaint -used for minor edits since it starts instantly- on my Linux setup via Wine). I used it since Win3.x days in the 90s until PSP8 was released and they screwed up the UI. I moved to GIMP some time later when i started using Linux and used that for years. Some years ago i found a boxed copy of PSP7 anniversary edition, reinstalled it and despite not using it for more than a decade i found it much easier than GIMP and i'm using that since, until i wanted to make a plugin to assist me with texture painting for 3D models. Making plugins for PSP7 was very cumbersome so i thought to try Krita instead (Krita has an MDI mode which i like when working with images) and ended up sticking with it since making the plugin was relatively easy[0].

I'll download Krita's source code and try to build it and add the features i miss from PSP7 at some point, KDE people do not seem very allergic to having options so i might be able to recreate the stuff and behavior i miss from PSP7 in Krita.

In order of preference:

1. PSP7

2. Krita

3. Pixelmator (only under macOS of course and i only used an old version before App Store with the only alternative being GIMP running under XQuartz - i think GIMP got a native version later but i never used it)

4. GIMP (i found older versions easier to use, but every time they introduce a new major UI change i find it more awkward than before and now they're switching away from Gtk2 to Gtk3 -which i dislike the feel of- i decided to stick with Krita)

5?. Photoshop, maybe (i only used it a little in the past, always found it more cumbersome than GIMP or PSP, but it'll do if nothing else is available)

[0] http://runtimeterror.com/tools/kritaview3d/

numerosix 53 days ago
Same as you... I don't use psp anymore because i'm on the lovely penguin for decades but psp was the finest paint i ever use, since, too, win3...
ForTheKidz 53 days ago
Still very, very impressive for undergraduate work.
airstrike 53 days ago
I don't think we're meant to take "recreating" literally
account42 52 days ago
Op chose to go with the clickbait title so it's fair that they get criticized for it.
airstrike 52 days ago
that's not clickbait at all
bufferoverflow 53 days ago
Exactly. I think Photopea is the closest replication attempt, but even it misses many features.
imoreno 53 days ago
If you say "I made basic image editor" it doesn't sound as impressive, of course. Not surprising given how it opens with:

>As I’m getting older I look back on all the things I’ve done as a creative developer, and I see so many cool projects!

Such modesty...

dingdingdang 53 days ago
Let's get a direct link to this beauty in place:

https://github.com/f055/fedit-image-editor

90s_dev 53 days ago
> But I didn’t promote it. A few months later, I landed a C++ job. So in the end all that effort paid off.

It's interesting how instinctively we know our hard work deserves to be paid off, but it's a shame how often open source developers put hard work into code that never really gets paid off, especially when it's widely used in production. I guess this explains why so often they look for reputation credits, or why NPM added the "maybe you should donate to the authors of these libs" feature, or why GitHub built in Patreon. There's got to be a better model than what we have now, that doesn't take advantage of naive but hard working young thinkers.

brulard 53 days ago
There was a project called "pixel32" and later "Pixel Studio Pro" in the early 2000s. It looked really nice and was sold as early access. But became vaporware, people that paid became really pissed and the guy creating it turned from hero to villain quickly.

https://discuss.haiku-os.org/t/pixel-studio-pro-in-past-call...

StefanBatory 53 days ago
Author of this article said he finished at Warsaw University of Technology - it was always considered to be one of the better ones here.

That being said, what also strikes me is how different the thesis were back in times. I did mine recently in another university of technology in some bigger city (without wanting to dox myself that much) and 90% of our engineering theses were of very subpar quality; mine included.

netsharc 53 days ago
Is it any different nowadays? AFAIK the goal isn't to advance the field, but to prove to the people giving you the Bachelor/Master's degree that you're able to create a "paper". Some theses stand out, but most of them are probably quite boring.
StefanBatory 53 days ago
It seems to me like their tasks were way heavier. For us, most of us did basic CRUDs with some implemention twist, and our papers were your standard: do a short theoretical introduction to the domain, make a few UML diagrams, explain how it works + some code examples, then testing.
vijucat 53 days ago
This is why I love Windows. There is a TON of small, open source software that serves a niche. Used to browse sourceforge.net and freshmeat (is that what it was called?) to find them!
nailer 53 days ago
A friend from Phonegap got acquired by Adobe a decade ago and ported Photoshop to JavaScript for entertainment purposes immediately afterwards.
nailer 53 days ago
Not complaining about downvotes but it seems a very odd thing for Hacker News to dislike. I would have imagined an internal story about a SW eng’s hack project would be interesting. Oh well.
brulard 53 days ago
I didn't downvote, but I fully understand if anyone would. Your comment shows some serious lack of understanding of the complexity of software like photoshop and the complexity of porting software. We may believe that's what your friend told you, but we have troubles believing he really did that. Maybe exaggerated (a lot)?
zarzavat 53 days ago
I assume by ported they mean compiled the C++ code to asm.js, now that as an Adobe employee they had access to the source code. Though this would still be a significant effort to get working.
nailer 52 days ago
> Your comment shows some serious lack of understanding of the complexity of software like photoshop and the complexity of porting software.

No.

He had access to the source code as an Adobe employee, he's a well known low level JS engineer (hence making Phonegap) and there are LLVM to asm.js webassembly compilers.

52 days ago
pacifika 53 days ago
The things people make and not tell the world about. Glad it’s on GitHub, this is so impressive.
NotAnOtter 52 days ago
Photoshop is a stretch.. that's more like MS paint in terms of feature parity.
DeathArrow 53 days ago
In my experience, when developing software the hard part is implementing the actual logic, not the UI.

In this case, replicating Photoshops UI seemed to be the hardest. Maybe using something like MFC, Qt, C++ Builder instead of straight Win API would have been easier.

I remember a long time ago when I was in high-school and tried to implement a paint program under DOS, that had windows using Borland C++ and BGI graphics library. How hard should it be to implement windows, buttons and dialogs, I thought? After all, with the power of OOP and C++, every problem is easy to solve, I thought.

iforgotpassword 53 days ago
I think most people will agree that ui is the hardest part for normal desktop software. Not getting any kind of ui going, but good ui. Consistency, how to group things, what goes where.

If your app needs two inputs and a button then this won't be so much of an issue, but I've wrestled with qt in the past for more complex layouts that I hate it with a passion.

waqas123987 53 days ago
"How can network monitoring improve the reliability and cost-efficiency of telecom services
aa_is_op 53 days ago
Did it crash every 30 minutes?

If not, how much are you selling it for?

DidYaWipe 53 days ago
"Straight from my previous project named Fiew I added a massive image library viewer. It really could quickly and easily scroll through massive amounts of pictures."

Which is now infuriatingly lacking in the entire domain of image editors. Thumbnail browsers used to be an expected feature of image editors, even shareware ones. Now? Fat chance. Good luck even finding a stand-alone one.

Recently one called FlowVision surfaced for Mac, and it's pretty much the lightweight browser that many of us have been looking for for years. It has some rough spots, but the developer is responsive to issues. https://github.com/netdcy/FlowVision

theodric 53 days ago
Slick. Runs pretty well under Wine!
echelon 53 days ago
It looks like you could have sold licenses to this or gone the startup route. Might have been slower and less glamorous than the gig you wound up getting, though.

The UX looks simple and reasonable. Frankly better than Gimp.

Really cool work!

pessimizer 53 days ago
> Frankly better than Gimp.

Only for people who think that things are good to the extent they "resemble Photoshop as much as possible." [direct quote] The Photoshop UI isn't ideal, it's fairly terrible (not as bad as Illustrator, but they're both just old), but people don't want to waste the huge effort it took to commit all of that to muscle memory.

Cloning Photoshop for a thesis is wild, though. From a comic book reader to most of Photoshop in one leap.

IshKebab 53 days ago
> It looks like you could have sold licenses to this

Doubt it. There are too many good free options on this level, e.g. Krita.

jeroenhd 53 days ago
Today? Sure. Photopea blows any hobby project out of the water.

In the summer of 2006? This could've been a commercial product for sure.

echelon 53 days ago
Krita blows though. It looks and feels like a horse of an app. I'd pay for better UX.
enigma101 52 days ago
no you didn't
ArkimPhiri 52 days ago
oh you did?
bschmidt44 53 days ago
[flagged]
brulard 53 days ago
Photopea is really nice. I was pleasantly surprise how many features they implemented to a free product. And even UI is not half bad. Kudos!
busymom0 53 days ago
I have used Photopea for so many of my projects. I make apps and I use it for every app icon and App Store screenshots I have built. Also used it to make memes. Not having to install it on my Mac and just easily accessing it from browser is immensely helpful.
urbandw311er 53 days ago
Yep. Have it as a desktop icon and use it like a native app.
timnetworks 53 days ago
The native keyboard shortcuts
wink 52 days ago
IIRC it can't to ctrl-t (transform) because it opens a new tab.

Gets me every time I use it. It's still a lovely piece of software.

etc-hosts 53 days ago
[flagged]
Findeton 53 days ago
[flagged]
promoterr 53 days ago
umm, what's wrong with: https://affinity.serif.com/en-us/ ? Adobe is out-of-everything for decades..
mjlee 53 days ago
It was released 7 years after this project, and downloading someone else's image editor is not a typical route to submitting a final thesis for a degree.