Hacker News new | past | comments | ask | show | jobs | submit login
JS Paint – A web-based MS Paint remake (jspaint.ml)
906 points by hjek on Jan 18, 2018 | hide | past | favorite | 248 comments



I haven't used Windows as a primary OS for years. I miss having MSPaint around for small edits, and have yet to find a suitable replacement. Other apps either have too few features (e.g. Preview) or too many (GIMP), or the interface doesn't feel right. It might just be because I'm used to it after using it for years when I was younger, but MSPaint's interface just makes sense, and it hits the sweet spot of features for quick, simple edits.

This feels very similar to the original, and after a quick playthrough seems feature-complete. Well done! I'm not sure how I feel about it being web-based but I guess in this day and age it just makes it more accessible.

I see there's a Chrome app, but the link is broken (https://chrome.google.com/webstore/detail/dgfedgcofbjmeohonb...)


> and have yet to find a suitable replacement

There are a few, Kolourpaint is pretty much an MSPaint clone for KDE [1] and Paintbrush is the macOS equivalent [2]. There is also Gnome Paint [3], but hasn't seen any update in years. I suppose the closest would be Pinta [4], although that is slightly above MS Paint on the complexity level (probably more comparable to Paint.NET than MS Paint).

> I'm not sure how I feel about it being web-based

Personally i find it amusing and impressive that this implements a Win95-like GUI (i love Win95's GUI :-P) but at the same time the actual editing feels very slow - painting something takes almost a second to update with the brush being very jumpy, reminding me using ZSoft's PhotoFinish on Windows 3.1 on my 4MB 386:-P.

It is also nice that it has implemented the select+shift+drag brush feature that is ignored by almost every other clone i've seen over the years.

[1] https://www.kde.org/applications/graphics/kolourpaint/

[2] https://paintbrush.sourceforge.io/screenshots/

[3] https://launchpad.net/gnome-paint

[4] https://pinta-project.com/pintaproject/pinta/


> actual editing feels very slow - painting something takes almost a second to update with the brush being very jumpy, reminding me using ZSoft's PhotoFinish on Windows 3.1 on my 4MB 386:-P.

Works as fast as native paint on my laptop. What browser are you using?


Same here: no noticeable lag in Firefox on Ubuntu.

I'm guessing Safari on macOS?


no problem with Safari+Macos here


Firefox on Linux


> the actual editing feels very slow - painting something takes almost a second to update with the brush being very jumpy, reminding me using ZSoft's PhotoFinish on Windows 3.1 on my 4MB 386:-P.

It's completely and utterly indistinguishable from a native app on my PC (Firefox 57.0.4 (64-bit) on Windows 10). First thing I noticed was how smooth and flawless it was, even when I expand the canvas and go crazy with every single tool to make a big mess, it didn't slow down once.


Other than using 10x more resources than the original version.


computers have 1000x more capacity and throughput than the original 486's.

So a 10x bump in resource you say?! -- Hmmm not too shabby for such a faithful clone!


On my Macbook Air, with Chrome and High Sierra it managed to crash Chrome impressively and force quit and hitting restart failed to do much. I actually had to hit the power button which is kind of unusual on a Macbook.


> Paintbrush is the macOS equivalent

Not really. It has many issues.

The left toolbar is not dockable. I find it annoying that I have to do window management withing a single application.

That and the fact that it asks for the canvas size everytime I launch it.


Aren't Mac applications supposed to have their toolbars as separate windows? Pixelmator (at least the pre-App Store version i have) does the same, as did some other apps i've tried at the past.


This is very much on a case-by-case basis. Unless by toolbar you mean the menubar at the top of screen which changes for each application.


KolourPaint is very close. GIMP is great, but simple operations (ie. screenshot-crop-higlight-annotate) get complicated (layers, floating layers, text layers, alpha)


Lazpaint seems another handy option. I used it for years.


I can imagine that updates aren't really necessary in a simple image editor ;)


I'm not experiencing any of that. Works immediately for me at this time


No performance issue on iOS iPhone 7.


On Windows I've been using Paint.NET for years now. It's absolutely brilliant. Lightweight editing with quite a bit of extra features like properly working undo. Free, lots of updates, good UX. I use it at least few times a week.

Recently I've been on OS X a lot, and I wasn't able to find a suitable replacement. Like, nothing even remotely close. Quite a shame. Same story for Linux.


I've also switched to Paint.NET.

One thing that convinced me to switch was when MS Paint switched to the ribbon interface.


There is a Paint.NET remake on Linux called Pinta. Not quite as stable (it struggles with large images), but it has the exact same interface.


I've tried that, it was maybe 3~5 years ago, and it was quite bad in comparison. Not sure if there was a significant progress since.


Sadly, I find it struggles with small and medium images as well. But with some tlc, it could become the paint.net we are all hoping for...


I used to use GIMP, but could never figure out how to use it. Downloaded Paint.NET, it worked _exactly_ as expected. I was able to get running and perform the edits I needed to perform in seconds.

I've never had such a positive introduction to a piece of Software, it works _so well_!


On Mac, I personally like Pixelmator for pixel level editing. It feels a bit like the old versions of Photoshop which always did the job for me. At thirty bucks, it's also pretty affordable.


On OS X I really liked using Acorn a few years back.


Best feature of this app I feel is live sharing

like: http://jspaint.ml/#session:abc sessions are shared in real time


Careful: http://jspaint.ml/#session:abc not really work safe when I clicked on it


Spiritual successor to /r/place?


Interestingly, it seems to lose 1/3 of the inputs I'm trying to send...


Yeah, it's super half baked. I can tell you that as the developer. I plan to focus on collaboration in the successor to this project, Mopaint: https://github.com/1j01/mopaint

(Rather than adding it after the fact.)


How do you do it?


I've been an almost Linux/BSD user for more than a decade now, and I've always used 32-bit MSPaint from XP without any issue through Wine. Salvage the .exe from a Windows XP install and the necessary MFC .dll, and you're ready to roll.


I think with Wine you can only save in BMP and PNG? Last time I used Wine to emulate MSPaint, these were the only two formats for saving the files.


I mostly use Pixelmator for that sort of thing on OS X. It's like $20, but I also bought it about five years ago, so it's a sunk cost!


Pixelmator is crazy cheap for its features and polishness.

Edit: seems to be $60 now for "Pro" version, whatever that means, but still cheap. My only wish is svg export¹.

[1] http://www.pixelmator.com/community/viewtopic.php?f=4&t=7663...


The regular pixelmator is also available for half the price.


> I see there's a Chrome app, but the link is broken (https://chrome.google.com/webstore/detail/dgfedgcofbjmeohonb...)

I think Chrome apps were deprecated a few weeks/months ago.


Chrome apps are still a thing, chrome packaged apps were deprecated (unless you're on Chrome OS), so the type of chrome app that remains is essentially just a bookmark distributed through an app store.

You're not missing out on anything by that link being broken.


IMO the best painting/lightweight editing tool is paint.net. Since I moved to mac I moved to Gimp and it’s ‘fine’.. but paint.net is really the only tool I’m missing fron windows


Spend a little bit of money on pixelmator, you’ll be glad you did. If you can afford a mac you’ll find that buying pixelmator to replace gimp is worth it.


There are a few really good low-ish cost options on Mac. You should take a look at Pixelmator, Acorn and Affinity Photo. I think all have free trials. Out of those, Affinity is the one I use most, but that's because I also really like Affinity Designer (an Illustrator type application).


Although it's probably illegal, I've been waiting for a port for years. I'm sad the one that finally did it chose js.


Maybe there's some sort of connection? Like maybe the port happened because there was some sort of universal platform where a dedicated developer would be sure to get a large readymade, appreciative audience as opposed to a small group of highly vocal micro-critics. And maybe that was more important to them than whether the language adhered to some paradigm that's really important if you look at things always from a single point of view? I dunno where these thoughts come from...


Shouldn't be hard to turn it into an "application" using Electron or something

runs


    > I'm sad the one that finally did it chose js.
Look how easy it is to shed tears for free stuff you don't personally have the energy to do yourself: You didn't have to lift a finger but to write an internet comment.

Just wondering what you think it adds to the discourse.


I'm in the same boat. I often use http://kolourpaint.org/ in linux, and https://paintbrush.sourceforge.io/ in OSX.


I was in the same spot. A while ago I took an evening to try and learn doing basic edits in Gimp, and since then I have no trouble with it anymore. Not as bad as Vim, but there's indeed a learning curve to it. Now that I've learned it, though, I would never want Paint again.



I used pixlr a lot for a lot of minor editing, but with a new system on which I avoid flash like the plague, it turned out to be (arguably) the only webapp without a flash-free alternative.

Now I simply use Adobe Photoshop even for minor edits (Yes, it's bloated, but can't bring myself to install Flash just for one webapp)


Have you tried mtpaint?

http://mtpaint.sourceforge.net/


mtPaint has pretty poor usability compared to MS Paint.

ReactOS has its own Paint, I wonder... it may be simple to compile it through winelib, or just run it directly via Wine. That'd be a pretty quick and legal way to get a functionally-identical clone.


I think the non-web app that comes closest to MS Paint in functionality is GrafX2. Only other paint program I've seen that has selection-as-a-brush. http://pulkomandy.tk/projects/GrafX2

The interface is a bit different than MS Paint but it has these absolutely wild features, like colour cycling, where the colours can change while you're painting, which can be fairly psychedelic. GrafX2 is more of a clone of DeluxePaint for Amiga.

I'm no fan of mtPaint either.


I disagree about usability. Probably most people just used MS Paint first. MS Paint has different tools and different brush-tip (widths) for pencil/brush/spray-can/eraser that all do essentially the same thing (okay, the eraser's right click mode is different, but hardly anyone knows about it), and then the line/curve/box tools all have _their_ own width. This is all unified into one global brush/pattern option in mtPaint that everything uses. The zoom levels are better too. I think the only thing that's not obvious in mtPaint is the eyedropper.

The one thing I like in MS Paint is the controls to resize the canvas near its edges. Most other programs make you go through a dialog or select and then trim to selection.


Mmmm this works fine in MacOS (I did it years ago with the MS Paint binary).

Screenshot: https://rymc.io/mspaintosx.png


The MS version at least can be wined without issue.

However, there are tons of lightweight image editors that run as fast as MS paint and offer more features; have you tried Pinta ? or gnome-paint ?


I've been using an old version of Macromedia Fireworks for years now, and while maybe not totally 'lightweight' (you gotta wait for it to boot up), I've always found it intuitive to use for quick edits, while also having lots of other features if I feel like doing something more elabourate.



Can anyone suggest a small, OSX graphical editor? I really just need one specific thing: "making a negative image".

I have it on IrfanView, but I could not find a simple equivalent on MacOSX.


If all you need to do is create a negative version of pre-existing image, you can use ImageMagick on the command line:

$ converge in.png -negate out.png


I have IrfanView on Mac (via Wine project) and it works flawlessly. However, if you don't want to install Wine on your OSX, there are other alternatives, some mentioned here already. Personally, I like xnview - its free and probably includes everything you'd want (and supports making a negative image)


I solved my needs with https://www.xnview.com/en/xnviewmp/ and http://projects.apricus.be/en/xnconvert/ (looks like "negative" is not available in xnview, or I was unable to find it at least).

Thanks!


When you double click one of the images displayed in xnviewmp the image opens in a window and then under the 'Image' menu item, there is a submenu named 'Map'. Selecting the Map submenu opens a list of functions that can be performed on the image, and one of them is 'Negative'.


I only spent like five minutes with it and then I tried donwloading xconvert.

(I am part of the "read the docs only too late if ever" crew).

Thanks a lot!


Were you (or anyone) able to change the brush size? (I'm pretty sure it used to be + on Windows, but it's been a while)


It's Ctrl+NumpadPlus/Minus on mspaint, or just NumpadPlus/Minus on jspaint; no way to do it beyond the preset sizes without a numpad, so far, I'm afraid


shutter comes to my mind, I'm using it to annotate images and screenshots, it comes with a paint like edit modus (http://shutter-project.org/wp-content/uploads/key_feature_06...)


after years of searching for a low cost editor I can use on either mac or Linux I found these two. Pixelmator has tons of tutorials

pixelmator for OS X ($60)

pixeluvo for Linux ($35 only) but worth 10X that.

my first go to is pixeluvo since I use linux as my daily machine.


Pinta is a good alt for Linux.


Too bad it is built on mono. I'd have to install ~200MB of dependencies for a 2.5MB application.


I don't get this complaint. Do you have a 400MB HDD or something? 220MB of HDD or SSD probably cost less than a roll of toilet paper.


You're assuming that I have an infinite amount of disk space to dedicate to arbitrarily large frameworks that are 'required' by simple applications. If every app you used required 200MB of baggage to run, you'd quickly run out of disk space. I'd rather use my disks to store more valuable things, and, on another note, most definitely do not want to encourage the proliferation of .NET/mono.


Plenty of people have sub 200GB hard drives.

Visit your favourite website and have a look.

Here's a bunch of new products under 249 GB: https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&I...

note that some of these only have 64 GB.

For these people every bit of storage is useful.


> (e.g. Preview

View > Show Markup Toolbar


Then it still is _very_ limited in what it can do, in my opinion. It's nice for very simple things, but it hasn't become a Paint replacement all of a sudden.


It doesn't take very long at all to get familiar with basic Gimp features. The investment in time is minimal and worth it. You could probably figure how to do everything you can do in MSPaint in Gimp in 20-30 minutes.


And then when you need it the next time 3 months later you need to invest the same 20-30 minutes to relearn how to use Gimp. It isn't only Gimp that have this problem, it is hard for power users to understand the problems casual users has with using software


Ya I agree I don't remember that YouTube tutorial I watched to figure out how to crop and paste


Yes, but it can take as much as a minute to open GIMP, which is a lot to ask when you can be working on the same task in MSPaint in a second or two.


Protip: get an SSD. It improves your life in many ways. Three examples I notice between my girlfriend's HDD-based laptop and my SSD-based one:

- A game, Factorio, takes literally 5 minutes for her to get to the main menu. For me it takes about 30 seconds.

- Using `time gimp` and hitting alt+F4 immediately, I get about 2.14 seconds. For my girlfriend this indeed takes a little bit, though not a minute.

- Booting up (from cold) is maybe 20 seconds for me. For her, this takes more than a minute on Ubuntu and more like 2-3 minutes on Windows (it boots in the same time as Ubuntu, but then programs need to load which make it slow for another 1-2 minutes).

Not everything benefits from it, like web browsing or email is not I/O-bound, but lots of things go a lot faster for the investment. Especially for laptops, it's also quieter, supposedly uses a little less power, and won't die as fast from dropping it. I'd highly recommend it.

I'm not putting off your computer as being the blame for GIMP being slow - indeed, it's kinda silly that it takes so long to start, especially the first time - but I just figured you had an HDD and think the vast majority of people will benefit from an SSD. Even my grandma got one a few weeks ago and is super happy with it.


I have SSDs, and GIMP for Windows starts up slower than Eclipse (!).

In my experience the Linux version starts up faster than the Windows one.


> the Linux version starts up faster than the Windows one.

Indeed. 4-5 secs to open GIMP on Linux here on HDD, and practically instant once cached. Maybe try and start with some command-line options. Useful ones in your case:

-d, —no-data

Do not load patterns, gradients, palettes, or brushes. Often useful in non-interactive situations where startup time is to be minimized.

-f, —no-fonts

Do not load any fonts. No text functionality will be available if this option is used.

-s, —no-splash

Do not show the splash screen.

https://www.gimp.org/man/gimp.html


Up to a minute with SSD? Okay that's odd. I totally see your point.


This is exactly 20-30 minute more than any sane person should waste on a image editor.


If you only use it once yeah. I'm super casual and just use it for cropping and resizing and whatnot, and have used it dozens of times. Worth 20-30 minutes.


I am a digital artist and I've been using Photoshop since 2000s. I still find it infinitely more comfortable to open mspaint and do quick resizing or image editing there.

When I forced to use gimp I simultaneously want to a) kill myself b) kill developers of gimp and their family members.


Well, it depends on what you're used to. Although I'm just a casual user, I've been using GIMP for years, and had similar feelings to yours when I had to use Photoshop once.


I can make my minor edits in MS Paint and be totally done then go get a coffee and when I get back to my desk Gimp may have finished loading.


Does paint dotnet work on Linux through Wine?


I'd be surprised. Very old versions did work on Mono, but by now it has accumulated quite a bit of code that uses not only Windows Forms, but also WPF, Direct2D and possibly a number of other newer Windows frameworks which I'm not sure Wine provides.


The UI and behavior is amazingly close to the real thing. But I cannot help but sigh when the brush tool lags more than Paint lagged on a 233 MHz Celeron.

I really think this is an awesome project, but I am old enough (30) to remember fast performing GUI apps and I don't know if I'll ever "get over" losing them.

edit: hopefully it is an inefficient implementation and not the inherent slowness of web apps.


One thing I noticed is that it doesn't draw zoomed-in images correctly - pixels are blurry. Didn't check if this is Canvas or WebGL, but something in the code begs being changed from LINEAR to NEAREST.

(EDIT: turns out to be a Firefox issue; Chrome shows the sweet pretty pixels correctly.)

> I really think this is an awesome project, but I am old enough (30) to remember fast performing GUI apps and I don't know if I'll ever "get over" losing them.

Same here (I'm 29). I'm getting tired of complaining, this literally feels like trying to turn back the tide of a river. We're doomed to use slow and shitty software until the present web fads go away and the ecosystem stabilizes.


> until the present web fads go away

I don't see that happening. Web apps gave us an environment where it's easy to create complex applications quickly. Now efforts are going towards making these apps smaller and faster, but I don't see developers going back to C++ to develop GUI apps like this one.


Java gave us an environment where it was easy to create complex applications quickly as well.

The web will fade away just like Java did.


I do like Java, but sometimes get a bit pissed off how things went, because we had "an environment where it was easy to create complex applications quickly as well" in the form of Smalltalk, VB, Delphi and C++ Builder.

With the exception of Smalltak, all had native code generation, then Java happened.


VB (i assume you mean classic VB, not VB.NET) wasn't really an environment to create complex applications though - at least not in VB itself. The best use for VB would be to use to mix together components made in other languages (often C and C++). If anything people who tried to use VB as the implementation language for complex stuff regretted it later.

I agree about Delphi and C++ Builder though, but Borland seemed hellbent on chasing enterprise unicorns - and pricing their products according to those dreams - so the software and the ecosystem suffered because of it.

I'm not sure about Smalltalk since i haven't used it much to know, although the first time i came in contact with was with a demo of IBM's VisualAge Smalltalk that was given on a magazine coverdisk and i ran away screaming (ie. deleted it immediately) when it took ages for the environment to load and do anything on the 4MB 386 i had and even then after following the simplistic tutorial it created an "executable" (that actually needed some other stuff to run) that was like 10MB (which for my 130MB HDD was a gigantic waste of space). Of course that was probably the entire image, but i didn't knew it at the time - and it wouldn't change much really, i needed the space for games and other stuff :-P.

I remember liking being able to drag arrows between elements in the GUI to hook events and properties together. I haven't seen that bit in the little i played with Pharo some time ago, i wonder if it was VA-specific. I tried to run the demo when i got a better PC, but for some reason it wouldn't work in Windows 95 and it has been years since i lost the disk. I wonder if it is available somewhere online but all searches point me to IBM's pages that have nothing.


Starting with version 5, VB allowed the creation of COM components natively, and could generate pure native code, not like the previous versions that just embedded the p-code inside a binary with a VM.

I have seen several enterprise level applications, with distributed objects (DCOM) and transactions, written purely in VB.

Including my first sight of an "Electron" app, exposing several COM libraries, written in VB, into a MSHTML container, using those objects from JScript in the page!

Regarding Borland, when Java came into picture, the company was still doing alright, and their Java development environment was designed similarly to the Delphi and C++ ones.

Their problems and change of focus came afterwards, when they lost a few people to Microsoft, including Anders, whose first project was to design Microsoft's Java implementation, J++.


VB5 indeed allows that (i have a VB5 box i got off ebay some time ago :-) and i've spent a lot of time with that and with CCE before that), but the language isn't really that friendly towards complex applications. But FWIW i think that VB lost its way around version 4 or 5 anyway :-P.

About Borland and Java, i actually have JBuilder 2 (again off ebay - i collect old development software :-P) and yes it does look nice and sort of friendly (although it is far from Delphi's level of ease of use). I think the entire thing is built on Java too. Sadly it doesn't seem to work in modern Windows - even the applications it creates throw exceptions.


Java had the advantage that it not only worked everywhere, it had just so incredibly much built in. The Java standard libraries alone provide more functionality than in many other languages all third party libraries for a feature can do combined. Building cross-platform apps in Java is actually easy, even easier than in Delphi or VB.

Nowadays, in Node, we don’t even have timezone handling properly built in, or UI frameworks. Or anything.


Sure, one of the reasons I liked it, was because of the chaos that still was writing portable C or C++ code back then.

But when focusing on the PC market, it felt a step backwards being interpreted, the JIT only came in 1.3 and AOT compilation has only been available in commercial JDKs (gjc was never that good).

Let alone the whole story with value types.

Thankfully, I have been able to avoid Node thus far.


The web is 10 times more entrenched than Java. I think you're underestimating it, badly.

Java was pushed just by Sun/Oracle. The web has at least 20 big parties that are promoting it: Google, Mozilla, Amazon, Facebook, Wikipedia, etc.


Java...hasn't faded away, though. It's slightly less popular than it once was, granted, but it's still insanely popular.


I meant it primarily as "present fads in the web ecosystem", not "web as a fad" (I ultimately gave up on the latter; that's one hell of a tide and it ain't getting turned around).

> Now efforts are going towards making these apps smaller and faster

Yes, I'm hoping those efforts will eventually bear some fruits.


> We're doomed to use slow and shitty software until the present web fads go away and the ecosystem stabilizes.

I have two possibly conflicting thoughts about this. (I'm a little bit older, and I feel like this has nothing to do with the web.)

One, everything computer related was much, much slower, and much, much shittier when MS Paint first came out. I feel like software and software standards and hardware and the web, all of it, has improved.

Two, I'm not convinced we'll ever escape shitty software, I think we always have and always will have slow and shitty software, outside the web and inside. We always want the machine to do more than we have a budget for, we always want to write features in less time than we have, we always want cooler features than others, etc., etc. Keeping software fast and good is time consuming, expensive, takes more self control than most have, and often just isn't the highest economic priority. In short, I think there are legitimate reasons we're always sitting at the threshold of pain rather than the threshold of pleasure.


Seems to me like "shitty software" is just a moving target. All software is shitty because we can envision something better. In 10 years we'll all be complaining that Windows 20/macOS 23/iOS 21/Android {{confectionName}} is shitty, though surely it will be something that our 2018 brains would find amazing.


I'll give you one definition of shitty that particularly annoys me: does the same or less than an equivalent made 10+ years ago, while running just as fast or slower than the old one. Advances in hardware seem to be mysteriously eaten somewhere.


The canvas tag has `image-rendering: pixelated;` set, but Firefox currently doesn't support the setting right now. [0]

Are you able to try it in Chromium? I set the property on the canvas to `-moz-crisp-edges` in Nightly and that fixed it.

[0] https://developer.mozilla.org/en-US/docs/Web/CSS/image-rende...


Oh. Didn't even occur to me that it could be a browser issue (after all, I would think that not antialiasing things in an API meant for per-pixel operations would be the default). Alas, you're right and guessed correctly - I tested it on Firefox. I just tried it on Chrome, and there the pixels show correctly.


Yeah, I've made pixelated-looking games for browsers before, and setting the extra CSS property is something I frequently forget to do!


Software will always fill up the capacity of the hardware. For me the brush tool is very smooth (running Chromium browser on a 5 year old gaming/dev rig).


The problem is that most software of today doesn't do much more than software of a decade+ ago. The capacity of hardware is filled with boilerplate, abstraction layers and an occasional UI animation sprinkled on top, instead of more powerful solutions to more difficult problems.


Except that what used to require a much larger and heavier machine can now be done with a phone, if not a watch.

Cars don't really do much more than they did a century ago. This doesn't mean there haven't been HUGE improvements to make them do their function better.


> Except that what used to require a much larger and heavier machine can now be done with a phone, if not a watch.

That's just a function of miniaturizing hardware. Think how much longer your phone's battery would last if not for the software bloat.

> Cars don't really do much more than they did a century ago. This doesn't mean there haven't been HUGE improvements to make them do their function better.

They serve the same fundamental purpose (moving people around), but they are faster, more economical, much more safe, and offer large amount of convenience features. In a way, it's the exact inverse of what's happening with software.


See for example the history of Photoshop and games! When making software you don't optimize more then needed. It just have to be fast enough. But where performance is a selling point, things have actually gotten faster, for example JavaScript engines. And compilers can probably compile a 20 years old program and make the binary more optimized then it was before.


The spline and polygon tools also antialias, unlike the old app.

Not knocking it though; it's an impressively close clone.


> I am old enough (30) to remember fast performing GUI apps and I don't know if I'll ever "get over" losing them.

I'm in my early 40s and feel like there are more fast performing GUI apps now than there ever were before. Windows 3 was not fast.

Incidentally, I'm on a beefy machine so JSPaint isn't lagging for me, but it does have a frame rate that makes the paint splatters far apart if you move fast. Is that what's happening to you, or is it actually lagging as in stalling longer than 30ms between splats?


> it does have a frame rate that makes the paint splatters far apart if you move fast

It's been a while so I might be misremembering, but didn't the original MS Paint also do that?


Yes, I think so. It even does this on the newest Paint version on my Windows 10 machine.


> But I cannot help but sigh when the brush tool lags more than Paint lagged on a 233 MHz Celeron.

Probably just a vsync "issue" with either the window manager (trade-off between screen tearing and latency) or the browser.

You can use this tool : https://www.vsynctester.com/testing/mouse.html to test your browser.

Interesting read up here : https://www.vsynctester.com/manual.html


Was very responsive and fast on my phone in Edge. Seems to depend more on the browser than on the actual hardware.


It's kinda silly to reminisce about the 90s when it comes to computing performance.

I remember the 90s. A windows upgrade took 2-7 days to complete, a large file could take 10-30 seconds to save, opening and quitting apps was on the order of 10+ seconds optimistically. Everything crashed all the time. This was the default behavior of a brand new $3,000+ machine.

No, thanks. :-P


What browser and hardware are you using? I couldn't get it to lag or even drop frames at all in Chrome on my laptop even after I opened a Coinhive miner in another tab.

It wasn't until I tried editing a 4K wallpaper that it started feeling sluggish, and even then the only lag I got was during the brief period between brushstrokes, where it's trying to save undo history and persist the in-progress image to localstorage.

I do suspect there's probably still a lot of room for optimizing this as well, both on the app's and browser's side of things.


Or perhaps it's just a fun demo, not intended to be an actual replacement in performance for native mspaint.


I know, it just sucks that the default platform for making apps now gives you access to ~10% of the machine's computing power.


Neat, there's a multi-user mode: http://jspaint.ml/#session:test


I just opened a multi-user mspaint session on my phone. The future is now.


It's currently being destroyed. It's AWESOME


Come for the 90's nostalgia. Stay for the websocket fight in a phonebooth.


That was chaos...


[flagged]


Please don't.


That is quite NSFW...


Cool! I built something similar a while back. A bit more structured (creating accounts and such), but with a bigger variety of drawing tools, and some social features like following, project collaboration, upvotes/downvotes, and chat. https://www.formgraph.com


This is fun.

Try drawing programmatically:

  tools[7].paint(ctx, x, y);
then run:

  $canvas.trigger('change.session-hook');
to flush your canvas changes to the server.


To do it "properly", wrap it in `undoable`, then you don't need use `trigger`, and you can undo it normally. :)

    undoable(function(){
        for(var i = 0; i < 1; i += 1/10000){
            var angle = i * 500;
            var dist = i * 2;
            var x = canvas.width * (1/2 + Math.cos(angle) * dist);
            var y = canvas.height * (1/2 + Math.sin(angle) * dist);
            tools[7].paint(ctx, x, y);
        }
    });


This is amazing, thanks


so much fun


The site works nicely in my browser (Chrome).

I feel like this mockumentary is not getting enough credit:

https://www.youtube.com/watch?v=K9L03GycSZw

- "We worked for eight months in a facility in California to figure out what were the best twelve colors to include in Paint"

- Can we make this line thinner? - No. - Ok.

I have not used Paint for any real work in the past, other than saving screenshots. Ever since MS started shipping the snipping tool, I hardly use this function.


This is awesome! Please consider adding a license so we can self host it [2] Github has a helpful website [1] on choosing a license, I personally like MIT but it's your choice and there are plenty of options :)

[1] https://choosealicense.com/ [2] https://github.com/1j01/jspaint/issues/18


Be careful if you're browsing fullscreen.

Here I am casually clicking HN posts when suddenly my brain thinks it's the 90s.


I wasted 15 minutes drawing random shapes too.


Oh My, so many memories, so many hours spent on this program. Such a fan of MSPaint, thank you for doing this, absolute hero!

Few nitpicks and more of showing off how much I care and love what you've done:

* polygon is antialiasing - it shouldn't * rubber cursor is wrong * circle and rounded rectangle tools are filling their insides when they shouldn't * Text works in zoom mode - it didn't used to (not sure if bug or feature) * Color picker is way too modern :D

But man, even stretch/skew are implemented, awesome job!



The attention to detail is amazing. Almost every feature is there and responds as it would on a real windows computer. There's even the help screen.


Shame that it uses the native colour picker...


I love how the filesystem stuff is handled! Very smooth, with Open/Save acting like a native application.


It's not acting like a native application, the open file dialog is the native open file dialog that'll display differently depending on the OS/platform you're on.


Right, but many websites have a "Browse for file..." or Import/Export popup which then launches the native file dialog, or the Save function opens the image in a new tab or something. They're making it as close as technically possible to MSPaint's behavior.


1. Instantaneous startup. 2. Simple, familiar GUI. 3. Automatically saves file locally, files can by loaded by url.

I wish more webapps were like this.


I love labors of love like this. It seems that beyond the goal of being useful, there's a strong nostalgic theme to the project which is apparent in the attention to the detail in recreating the old interface as exact as possible. Check out the Help Topics...


What is really neat is that I guess this is what's implemented in the Windows 98 remake too :)

http://98desktop.ml/

I wish computers looked like this again.


It's actually the same implementation used there. (See Help -> About Paint)


#Offtopic

TIL, MacPaint 2.0 was sold for US$125. And that MacPaint 1.3's source code was provided to Computer History Museum due to support of Steve Jobs.

Maybe it's time to email Bill Gates?

https://en.wikipedia.org/wiki/MacPaint#Release_and_version_h...


It's missing the zoom bug, which lets you zoom all the way to 10x by clicking just under the 8x button. Personally I was very fond of that.



You have no idea how much this means to me <3


I'm amazed. This webapp even supports opening files via dragging them from the desktop or Windows Explorer. This fact alone makes it more "native" than most (all?) UWP applications.


I wonder if “Jim’ll Paint It” has seen this?

He’s got to be the highest profile MS Paint user in the world by now.

https://jimll.co.uk/

Edit: For those who don’t know Jim, from the website:-

“Jim'll Paint It is an ongoing collaboration between Jim and the thousands of complete strangers who send him their weird and wonderful ideas. Using Microsoft Paint, Jim has painted hundreds of suggestions ranging from the sublime to the ridiculous - each free of charge.”


Funny but I would really appreciate a good Paint.Net remake (usable on Mac, Linux and OpenBSD) more.


Pinta comes close to that, and is free software, unlike Paint.NET. https://pinta-project.com/pintaproject/pinta/


By the way I believe I've found source code of some ancient version of the original Pain.Net and used it (barely working, buggy as hell of hells though still handier than GIMP for quick and simple picture edits) on Linux before I've found Pinta which is, AFAIK, the same code fixed to run correctly on Mono and extended to include some Paint.Net features that have been introduced later.


Pinta is nice though still not ultimately as great as the original :-) And it can be pain to install on some Linux distro versions (conflicting with both the Mono version in the repos (too old) and the latest Mono release (too new)) and it works quirky with XFCE. In fact I use it every day on Linux but I didn't know there is a Mac version too - already downloading it, thanks a lot!


I thought Paint.NET was free, just not OSS? I installed it on a machine a few weeks ago, no payment changed hands..


They probably meant "free software", per the FSF definition: https://www.gnu.org/philosophy/free-sw.en.html


It's free but still Windows-only. I use it on Windows machines but miss it heavily on Mac and Linux. Perhaps somebody would actually port it to Mono if it was truly free.


It has too many dependencies beyond .NET and Windows Forms by now. Text rendering is DirectWrite, for example, other parts use Direct2D, the UI partially uses WPF as well if I remember correctly.


I see... I used to think it's just WPF to be replaced with the old UI that was there until some version.


Breaks the back button in Firefox.


Props for them for getting all the features work smoothly on a phone as well.


There is a hidden 'Extras' menu which provides additional functionality, like shared whiteboard screens :)

http://jspaint.ml/#session:tim


The most valuable thing to me about MS Paint is the ability to print screen, CROP the largely extraneous material, and post, embed, or transmit the result.

Where is crop? I am not interested in the drawing with a bar of soap aspect. At all.


Paint didn’t have the ability to crop to a selection until the Windows 7 redesign of the app with its ribbon UI (not sure about the Vista version of Paint, which is halfway between the XP and the 7 versions); JS Paint has copied the XP and earlier design, not the newer. You can still crop, but only from the bottom or right, because you’re using the canvas resize handles instead.

Concerning your specific task: I’d say the Snipping Tool (built-in from at least Windows 7 onwards) is generally superior for that sort of thing anyway. Its biggest problem is slow start-up.


You could do cropping in Paint since at least the Win95 version. The method was the same I use with Paint to this very day: a combination of canvas resize handles and moving the image contents. Basically, after pasting the picture, I would use the selection that is automatically activated (if you lose it, CTRL+A to select all) to crop out top and left parts of the image, by positioning the top-left corner of what I care about at the top-left corner of the canvas. I would then use the bottom-right "resize canvas" handle to crop out the rest.

"That's how Dad did it, that's how America does it, and it's worked out pretty well so far."


I'd select the section I'd want to crop, copy it, create a new image, resize it to 1x1 or something else small, then paste. The canvas would automatically resize to fit the pasted selection. It sounds a bit more involved than your version, but for me it worked.


Yeah, I noticed this mechanism (probably even used it a few times), but I eventually gravitated towards something with less clicking.

I do that in Paint.NET a lot, though. I select the part of the image I'm interested in, and then in two keyboard presses (CTRL+C, ALT+CTRL+V, AFAIR) I copy it and "paste into new image".


Agreed on Snipping Tool - win + shift + s is a daily driver for me. I really want to find the person who made it a shortcut and thank them.


For what it's worth, Irfanview's generally a better solution for quick cropping:

http://www.irfanview.com


It's where it has always been - use the resize handlers at the edges of the canvas.


This does a lot: https://getsharex.com/ The workflow is based around print screen, crop, and then add any optional processing you want.


I made it crop the image if you make a selection while holding Ctrl. It's not how it's done in any version of mspaint, but I considered it useful enough.


Try monosnap: http://monosnap.com


Something like lightscreen or snipping tool might be what you’re looking for.


This is amazing! Thank you for sharing this


+1


Have seen a Dutch artist using MS Paint to create his/her work in Hermitage museum. Quite impressive. It's a shame I cannot remember the artist's name any more.


On Firefox there's noticeable lag, and non-straight lines look kind of weird (feels like it's trying to make non-straight lines out of bunch of straight lines).

On chrome there's no lag, but every time I draw something, all other elements I drew before change colour. At first to bright green, then they just fade to white as I draw more lines or whatever. As it is right now, it's definitely not a good 'replacement'.


I love this! Genius!

I personally use Figma (http://figma.com) - which is an incredible vector drawing tool!


Been using Figma for a while now for prototyping, drawing etc. It's really easy to learn and use and has great features. e.g. multiplayer mode.


MSPaint had some hidden treasures. The first thing I tried was the right-click-while-drawing-cancel feature. Alas. Love seeing the old graphics however.


That's an actual issue in the repository. It's supposed to have worked before, but apparently broke in a recent Chrome update, sparking a re-implementation that broke in all browsers.


Now make a desktop app out of this using electron!


There's an issue for that: https://github.com/1j01/jspaint/issues/2


Today the author added support for transparency, and thereby also shift+left-click brushes from current selection. My most favourite MS Paint feature. https://github.com/1j01/jspaint/issues/23#issuecomment-35851...


Thanks for update. I was wondering about that too.


Aww. I selected an area then tried to use the arrow keys to translate one pixel at a time. Didn't work :(

Then I tried to cut and paste. No go.

Still, very promising!


This is amazing! Superb remake. :)

I’m happy and sad. Happy because MS Paint is amazing and now having it in web form is great. Sad because I was just talking about doing this this week for hackathon. I ultimately did something else, and probably wouldn’t have turned out this great.


The oval tool doesn't respect the fill setting. It is always opaque! Otherwise, fun project! Now, make a js version of photoshop! (I've done several js painting programs, some with pretty unique brushes and weird "helpers".. they're pretty much all in my private repo doing nothing lol)


I still on occasion use MS Paint. I know there have been other tools introduced since MS Paint with more features and such...but much like a trusty *nix command line tool that's always there and always trusty...I hold a special fondness for this classic program. Kudos to the author for this project!


Upon opening the page it allocates 12 times the amount of memory I had in the computer I first used MS Paint on. God only knows how much processing power it's using.

Also, I get the distinct impression it's less responsive than that computer used to be.


Really brings you back to the good old days =) Even got the help topics exactly as in the original


Can someone explain to me how the live sessions feature was built? I was looking through the projects github, and saw something about firebase, but I'm not too sure how it works.


And built with jQuery. Yeah, I can feel the burn of those edgy react and angular devs...


I like JS Paint, because everyone is already familiar with the GUI and it should "just work" on any platform thanks to being a web app.

The problem with JS Paint for me is that it doesn't run in my somewhat old version of Safari; I had to open Chrome/Firefox just to test it. For something to really be universal, it needs to work on every platform, including non-jailbroken old iPhones and Macs with their default browser (yes, I'm making an analogy between Safari and Internet Explorer).


This is amazing , really brings me back to those sweet old days. Just curious, is this built with any JS framework ? the code looks like its vanilla JS !! which is fantastic .. and is it open source / Github project ?


It is not that useful as MS Paint. Several people use it for pixel-precise artwork, just like Deluxe Paint was used on DOS and the Amiga. However, this editor draws single OR double pixels on lines that are freehand.


> this editor draws single OR double pixels on lines that are freehand.

So does MS paint.



Seriously cool. Love the old school UI. It immediately put a smile on my face. It works great on mobile. I did find a bug though. If I switch to red, I can't switch back to black. Android, chrome.


Shapes are always filled with an outline, no matter which option I choose. Apart from that it looks really good, and I don‘t have performance problems that some people report.


Does it work for everyone in Firefox? For me it doesn't draw anything, nor does it open any of the menus (just clicks work). In Chrome everything works perfectly for me.


Works fine for me, Firefox 57.0.4 on Linux.


Thanks for confirming. I need to investigate what's wrong with my FF then.


Great work! it brings back so many memories =) I was trying it in Chrome on iOS and it seems that it considers each color square as a text entry, kinda annoying


I have the exact same feeling, this feels so nostalgic


Here's another session for my mates

http://jspaint.ml/#session:asnee


I never got people's love of MS Paint. There is so little it could do, and it didn't always want.to play nice with modern image formats.


Nostalgia. Many of us spend hours making drawings as a kid, since it was basically the only thing to do next to mine sweeper. Just like we all miss clippy, useless as he was.


I was the only kid in high school allowed to use a laptop in class, because my motor system doesn't really "do" writing but it does typing well enough. I'd spend entire lectures drawing gigantic mazes in MS Paint instead of making notes. To be fair, I would have been drawing mazes if I had to use pen and paper anyway.


But even then, MS Paint was pretty much a copy of 1984's MacPaint, which pioneered that type of program.


Nostalgia doesn't cite sources. I've never used MacPaint. I've used MS Paint, though, pretty extensively, all through the 2000s.


this version plays well with modern image formats :)


The author forgot that one could further increase or decrease the size of the eraser and brush tools by pressing Ctrl++ and Ctrl+-.

Other than that, really nice!


Oh...those lovely childhood memories using MS Paint on Windows 3.1 (although this looks like the Win 98 vesion)..thanks this is awesome!!


Imagine an Electron app of this! Then JS paint could be run right from the desktop.


That's interesting, I guess the author have that same feeling with me when I tried to create the same thing with Windows 7 on my personal website https://dinhquangtrung.net, just that my Windows 7 is not ready feature complete because I was too lazy, haha.


Amazing. It looks identical. Unfortunately, can’t save images from safari on iPhone.


Gives back so many feels of bored painting projects I've done before


Patina is a good MS Paint-like, on the Mac App Store for two dollars or so.


Amazing. It looks identical. However, can’t save images on iPhone.


Please turn off anti aliasing and it will be perfect!


I've been waiting for this my entire life.


Really works well with touch screen, kudos


YES - thank you!


Would be nice if it could output SVG!


I'm not sure

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <image xmlns:xlink="https://www.w3.org/1999/xlink" xlink:href="data:..." width='800' height='600'/>
    </svg>
is a particularly interesting SVG image that has any benefits over the equivalent PNG.


I mean that the image should be saved in vector format! Not bitmap.


Paint is a bitmap image editor. What would you like the result to be? A <rect> for every pixel placed by the pencil tool?


The pencil tool could create a svg path.


Love the keyboard shortcut support!


Where is crop? To me, the most valuable tool in MS Paint. What? Did you think I used it for “drawing with a bar of soap?”


I don't think Paint (at least the version this is replicating) had a crop feature.

I always used to do:

- Ctrl-A (Select All)

- Ctrl-X (Cut)

- Ctrl-E, 1, Tab, 1, Enter (Resize image to 1x1 pixel)

- Ctrl-V (Paste)


You can select a section, copy it, create a new image, and paste it.


jspaint has a special shortcut, you can hold Ctrl while making a selection


Has the help menu and all hahaha



Killer App


INSANE


I don't understand why it needs to hijack the back button.


It changes the URL to store the image in a specific session, so if you close the tab by accident you can reopen it from history (or ctrl+shift+t in some browsers)

I've opened an issue for it now here: https://github.com/1j01/jspaint/issues/49




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: