Hacker News new | past | comments | ask | show | jobs | submit login
Lessons learned from 15 years of SumatraPDF, an open source Windows app (2021) (kowalczyk.info)
585 points by pabs3 on March 8, 2023 | hide | past | favorite | 168 comments



SumatraPDF author here. Glad people like the software for the reasons I thought the would (small, fast).

If you haven't already: use Ctrl + K (Command Palette), a better way to operate the program than menus etc.

Also I'll plug my latest project: I "ported" notepad2 to web:

https://onlinetool.io/notepad2/

It's 85% done i.e. some functions are not implemented.

On Chrome / Edge it can even read / write files from your computer (needs File System API). Otherwise files are stored in the browser in IndexedDB.

Not sure if it makes sense but here it is.


As someone who now also works on an open-source personal project, I'm really fascinated by this kind of thing. Especially the "I don't care about dogmatic ways of doing things", this very much resonates with me.

As for SumatraPDF, I haven't used it myself because I don't use Windows as my main OS, but I definitely remember seeing that icon on other people's Windows machines. So it is reasonably popular in my part of the world. It also blows my mind that Windows still doesn't come with a proper built-in PDF viewer like macOS does.

Thank you for doing what you're doing! People like you make the world a better place.


> It also blows my mind that Windows still doesn't come with a proper built-in PDF viewer like macOS does.

Usually that viewer is the browser, so by default Edge is the default PDF viewer.


Part of the push to use the browsers pdf engine was a result of Adobe acrobat being an endless festival of security bugs. Loading it in the browser allows them to reuse the same sandboxing. Pretty good idea for most folk. I like sumatrapdf because it keeps track of the pdfs I have open and the page. Like having an ebook reader on windows that doesn't suck.


> Part of the push to use the browsers pdf engine was a result of Adobe acrobat being an endless festival of security bugs.

The browsers are also "an endless festival of security bugs." Especially since they started to execute remote code. I can't view pdfs in browser. I need to zoom, find, and copy parts of (electronical schematics) pdfs and the browser version just sucks.


Agreed. I still use acrobat for form filling and this one for the rest


Adobe was reported to be threating Microsoft with anti-trust complaints in the mid-2000s, as Office had started to include support for outputting PDFs without needing to buy a plugin from Adobe.

I imagine they've steered clear of stepping on Adobe's toes since then.

The PDF functionality in Edge avoids these problems, as it's a standard web browser feature these days.


I recall using SumatraPDF in its early days. I also worked at the IT department for a university and we started putting it in all PCs. It was fast, reliable and no licensing issues whatsoever.

I use zathura on Linux nowadays, and it like a not-too-distant cousin. It's perhaphs a bit less newbie-friendly, but it shares the same focus on "let's just render things fast and no BS", and also uses mupdf under the hood.


I like to have SumatraPDF on every Windows machine I use, because it's so fast and light. And I like that I can easily change the theme via the Advanced Settings text file. It's great! Thanks for your work on it!


automated crash reporting. Unfortunately it's a pain to build but this is single most important thing you can do to improve quality of your software... On the server, process those files and generate web pages for easy viewing of the crashes. I'm not a developer but I would think sharing what you can of your implementations of these would benefit others as well. i.e. good examples of exception handlers to catch crashes in the app, in crash handler download symbols from the server to get readable callstack, create a crash report that includes callstacks of all thread, program and os information and possibly any implementations of the processing of the files Possibly these are just blog posts intended for the junior developer or actual github repos. Thanks for all your work!


I love SumatraPDF, one of the best pieces of software that I use. It's stable, light, does what I expect it to do and didn't change interface or add a bloat of random functionality.

Thanks for all of you work.


Hey just wanted to say I use your app for all my reading, both school and recreational. Having a good desktop ebook interface has probably 5-10x how much I usually read over the last year--thanks for that!


I only wish I could highlight ebooks


I just want to stop by and say thanks. Many years ago, I was desperately looking for alternatives to AdobePDF, the unmentioned elephant in the room. I found your software, and never looked back. It was small, fast, and uncluttered. And it still is.


I wanted to add my sincere thanks, too. I rarely use Windows except for gaming but SumatraPDF was always a must-have for me. I am also grateful you're a fan of the command palette, as I get a lot of mileage out of that in the JetBrains products, too


I rarely use SumatraPDF because I often switch Mac-Windows. That said, I certainly appreciate small fast software, e.g uTorrent.

It's small because it's Windows only, and very likely avoid cross platform libs and rewrite everything on their own. For writing personal project, I agree cross platform my be over-rated. Just stick to your favorite platform. Make it works and optimized.


I guess you're talking the uTorrent of over a decade ago? Even on Windows I ditched it for deluge some time ago.


SumatraPDF is one of the few reasons why I still use Windows. Glad to hear the relentless focus on speed.


Thank you for SumatraPDF. I love that it's faster than any other PDF/ebook viewer I tried. I hate that EPUB content doesn't flow fluidly, which IMO defeats the purpose of the format, and that there is no way to customize its look in the advanced settings, because of which I couldn't use it to read ebooks.


Some of our exotic engineering PDFs have attachments. When we converted to Edge, it was quickly discovered that these were no longer accessible.

I tried PDF.js, and it worked, but we ended up picking the very worst and most insecure PDF viewer that exists. Guess who that is?


Used Sumatra for so so long, always used ninite to batch install basic apps on new machines and one of the pdf apps they have as an option on the free ninite page is sumatrapdf. Great app. Thanks for all the effort


What do you do for a living? Do your open source projects help with getting new gigs?


Retired thanks to TSLA.

> Do your open source projects help with getting new gigs?

I think it did a bit but not as much as I think it should.

You would think seeing a proof someone can deliver a complex app by themselves would be enough to skip the coding part of the interview, but then you would be wrong.


Any chance Sumatra PDF will support forms in PDFs any time soon?

Great software by the way, I was blown away by the speed of loading a pdf file. I never had such a fast PDF reader up until I started using Sumatra since last year.


Many Thanks for your software. I used SumatraPDF heavily for 10+ years while I was on Windows. Used to shudder at Adobe Reader.


As an avid notepad2 user, thank you!


Thank you for your work, really appreciate the app and have it on every device I run.


I love SumatraPDF but I want the colored toolbar icons back.


Please fix your printing issue


please add viewing of 2 pages side by side.


Menu(≡) / View / Facing


Ctrl-7 (Facing) or Ctrl-8 (Book view), depending on whether you want the first page to be by itself (book view). You should probably have a look through the menus to see what it can do before complaining.


I agree with his points about treating it like commercial software (in terms of having a website/screenshots/etc) but paradoxically the more professional an open source site looks, the more I assume there's going to be a catch. When you find a utility which has a site that looks like Richard Stallman's website you breathe easily because it's unlikely there's going to be any time-limited trial version, subscription models, ads-in-application, etc.


> but paradoxically the more professional an open source site looks, the more I assume there's going to be a catch

I hate to admit this, but I feel the same way when it comes to programmers themselves.

I've tried very, very hard to be mindful of this in an effort to correct it, but I still have this gut feeling when I encounter a fellow programmer with the general put-together-ness of someone in the C-suite.

What makes it worse is that I've had this gut feeling validated several times in the past. I once worked with a very cover-of-GQ programmer who, after ten+ years in the industry, would struggle with FizzBuzz-esque problems.


Likewise, I'd never trust a software engineer in a suit, unless it's for a project written in Java or COBOL.

Nor a sysadmin that isn't wearing black, running Linux and/or listening to metal. Unless they have a white beard, then you know they have been around for a while.

(Just partially serious here, don't read too much into it. But you know it's true.)


Much like some people like wearing a nice watch, pants, etc, I like wearing a nicely cut suit or jacket. Is that really any different to people wearing a comfortable pair of jeans? And paradoxically, I have carried server equipment wearing an italian suit, whilst others were bemoaning dust getting on their levis jeans...

So please, please don't judge a book by it's cover. Actions speak louder.


> I like wearing a nicely cut suit or jacket.

Suits don't set off my bullshit detector. Legitimate hackers have had to wear them since the dawn of computing.

The devil is in the details. Alarm bells start to ring for me when the sum of the details exceeds what my gut feels is reasonable.

Being worthy of the cover of GQ takes a ton of time, energy, and resources to maintain.

Managing to maintain the same perfect tan all year is an investment for sure, but not necessarily an investment that aligns with the hacker ethos.


Carrying server equipment wearing an italian suit is an action though !


I’m far from cover-of-GQ but I did wear a suit every day for a few years to a programming job. Maybe it’s the punk in me but when every person in the company, including the C suite, dressed in a t-shirt and jeans or sweats I felt the need to be a little counter culture. Honestly it was an insightful experiment in biases, seeing how different people treated me (such as your admission) based on my clothes alone. … and I have no trouble writing fizz buzz.


> I did wear a suit every day for a few years to a programming job

Was it a tailored suit by a designer brand? Alternatively, was it a fancy bespoke suit?

Suits usually don't set off my bullshit detector. Many legitimate hackers have had to wear them since the dawn of computing.

It's the details that catch my eye.

The money, priorities, and (most import of all!) time are in the details.


" Clothes make the man. Naked people have little or no influence in society." Mark Twain


On the contrary. As a user, if I cannot see that the software makers are either a big, well backed project OR at least they are able to sustain themselves by selling premium versions etc, I avoid using it. Most of the projects that cannot fund themselves eventually get abandoned, leaving you, as the user, hanging.

After getting burned by that a few times, I learned that the only way to deal with it was to ensure that those who run a project will be able to justify putting time into it when the actual realities and responsibilities of life like career, family, children etc start raining down.

Its all fun and games when you are in college or fresh out of college and maintaining an open source project. But the time and effort put into it suddenly becomes difficult to justify when you have more responsibilities at work, or even further, a family to which you have to justify spending that time on that project.

Now, the assumption of open source community is that, when that happens, someone else will take over the project and it will just keep going on.

Except it rarely happens except for very large projects. The net is filled with abandoned projects. And even when someone takes over the project, there is no guarantee that the original vision and quality will be kept.

So its much better to make sure that every open source project has a way to fund itself and its developers by making money in some way.


I share this sentiment. First I try to figure out their monetization strategy. Not finding it is a red flag unless it is obviously a small side project. Then I try to figure out where I am in their funnel. How hard are they likely to try to force me to get the paid version? Finally, I ask myself if I see myself eventually paying for the product if I need to. For example, is it a company I respect and is the product priced fairly?


I use two abandoned projects: text editor and ebook reader, they work better than alternatives.


PDF readers are probably the opposite for the target demographic, given it's for Windows. It's a great reader last time I used it.

But agreed, many forget certain programs/tools/etc don't need to be actively to be updated once they just "work". Unless it's been rewritten in Rust, or if it's slightly older Go ;-).


Although this may be true for you, as shown by SumatraPDF, this is probably a characteristic of only a small demographic.


In case someone didn't know what a website of commercial software looks like, here you go: https://www.office.com/


Yup, if I use a software that looks like a shareware site from the early 2000s, I use it knowing it's been reliable for a long long time.


This makes for a quite compelling case relating to the Casey Muratori video around clean code that made the tech community rounds recently. The developer of SumatraPDF has rolled his own implementations for a lot of things in order to reduce bloat and it shows! The app is lightning fast and does its job perfectly. Wish we had more native projects like that!


100% agreed! I’ve switched go Sumatra PDF roughly 5 years ago, after Adobe Reader became just absurdly slow. It’s crazy how a hobbyist can make product that’s vastly better than a multibillion dollar company.


Adobe’s goals for Acrobat Reader are almost diametrically opposed to yours.


You would think "reading PDFs without annoying the user" should be the first and golden goal. So much software in the modern era has horrible UX because the vendor's goals aren't aligned with the users' goals, where really the users' goals should be the only thing you care about as a company.

At my $DAYJOB you could fire 80% of the R&D staff and refocus efforts onto what our users actually want, and we would probably have a better product which less major incidents. This is for a company only in the ~$100m revenue. Of course, we're not $WEBSCALE so maybe things are different for the $1bn+ revenue companies.


> So much software in the modern era has horrible UX because the vendor's goals aren't aligned with the users' goals, where really the users' goals should be the only thing you care about as a company.

That is the failure of market optimization nobody wants to talk about.

It's an undeniable fact that competitive pressure and desire to make money incentivize people to solve other people's problems, leading to products that get cheaper and better-aligned to customers' needs over time. A fact that's often brought up in defense of free markets and entrepreneurship. What is however ignored or left unsaid is that, it's true up to a point.

The same feedback system that initially aligns producers and consumers doesn't have a stop condition for "the most value for customers". There is no local minimum there either. That's because the market process is not actually optimizing for providing value in the first place. It happily blows past the point of being optimal to the customer, and continues to optimize for profitability by making things worse and worse for the consumers, until the end result is just "worst possible thing that's still marginally fit for purpose".


That only happens when the market is a monopoly. Unfortunately, software, as it is now (i.e. almost completely uregulated), is super conducive to breeding monopolies.


I don't think it has anything to do with monopolies. Just look around you, in the physical world. It's increasingly hard to get quality anything - quality clothes, quality tools, quality foods. So many commodities - the opposite of monopoly - end up optimized to the point of being junk.

I suppose in a perfect theoretical world - the one inhabited by frictionless spherical vacuums in a cow - this wouldn't be the case; market competition would allow people valuing quality to pay for it, and get quality things. The real world, unfortunately, is full of friction, and full of limits.

An example phenomenon, that seems to commonly occur in all kinds of product categories, is the self-segregation of vendors into two groups: the cheap vendors, and the premium vendors. Every vendor serving the "middle" - selling high quality products for a reasonable price - has two obvious ways to improve their margins: move "down" a little bit, by cutting on quality to lower their costs and pocket the difference, or go "up" a little, by improving quality further and increasing the price even more, again pocketing the difference. Here's what happens when each vendors makes such step, either "up" or "down":

- Some customers prefer to take the step "down", some others are happy to go "up", but this isn't symmetrical - at any point, a subset of customers is hitting its spending limits, in the sense of marginal price increase not being worth the marginal quality improvement. Those customers will migrate "down".

- Customers preferentially migrating "down" means the slightly lower quality product gets cheaper (economies of scale), while the vendors of the slightly higher quality product need to raise prices even more, to compensate.

- Profits of each of the vendors improve - both of those going "up" and "down" - but then, competitors follow and the extra margin evaporates.

- As a result, companies end up being somewhat locked in their choice - trying to reverse it will only risk getting outcompeted.

Now, iterate that several times, and you can see how the market starts splitting into two clusters. Unfortunately, because the market size (number of likely customers) is limited, trying to keep serving the "middle" only means you watch your customer base evaporate. Eventually, the profits available in the middle are not enough to recoup fixed costs, at which point the whole quality class itself evaporates. Without it, new customers have no choice - it's either the shitty version or the overpriced version, because the good deal is no longer on the market.

Note that there are no monopolies in sight in this scenario - all it takes is to have a finite population and fixed costs, and over time, the market will segregate into a cluster of maximally shitty versions of a product, and a cluster of exclusive (or certified/supported industrial use versions) but expensive versions of it.


You'd hope so, but I'm guessing their actual top priority is making Acrobat look cool in passing to the execs that they want to choose it for their company signed-business-document needs.

These execs don't use Acrobat themselves.


Wouldn't it further their goals to make their software not abysmally slow? There can't be any competetive advantage in making something this slow, unless they did it with extremely cheap, unqualified programmers - then you could argue the cost savings were worth it.


They’re in a de facto monopoly position with Reader, they don’t have to worry about users leaving for a faster product.

Probably, all of their best programmers are working on revenue generators, not performance.


Let's be honest, Sumatra PDF succeeded because Acrobat Reader was so sad.


Notably, the roll-your-own parts do not include core PDF parsing and rendering, which are outsourced to (possibly a fork of?) mupdf.


Mupdf is the key. Sadly there's no user-friendly mupdf wrapper like Sumatra on Linux.


What about zathura mentioned upthread?


Doesn't have a ToC sidebar, which I consider pretty much the absolute minimum of GUI necessary. You can use a keyboard-driven menu by pressing tab, but in my experience it just takes you to the last page of the pdf. Maybe there's a bug or maybe it's user error. Regardless, this isn't what I'm looking for.


This makes sense. PDF is (was originally) a stripped down version of postscript, and postscript ran well on embedded processors by the late 80’s.


I use SumatraPDF almost every day and I love it. It is very rare these days to have an application that is all of the following:

- Small and fast

- Hand-crafted for a particular platform

- Not bloated with oddly specific UI menus and configuration settings

It has one job and it does it very well. Thank you for it.


> It is very rare these days to have an application that is all of the following...

Yep. On Windows there's:

    - IrfanView for image editing
    - foobar2000 for mp3s
They've been on my "must have" install list for ~20 years.

There's also Ditto for managing multiple clipboard entries. It's a good example of how a small open source tool with an optimized UI for 1 thing ends up being 100x better than the same feature MS tried to implement straight into Windows.


I use Imagine for image viewing. It has an amazing little feature: when you press the "Next Image" (or "Previous Image") button and the window resizes/moves to keep its size consistent with the new image's size, the mouse cursor is automatically moved to still be over that "Next"/"Previous" button.

It most likely takes about 5 lines of code to implement but what's important that the author actually thought about and took care about this scenario.


Fricking awesome.


7-zip has already been mentioned, but I want to mention Notepad++. It's not as featureful as a full-on IDE or most modern extensible text editors, but it's fast and has a simple classic UI. When I just want to edit a basic text file I tend to use N++, as long as I'm on Windows and I don't want to boot up VSCode, let alone a full IDE.


I use N++ everyday and do love it; though I recently found out that it completely freezes trying to open modest sized single-line json (couple MB), which made me sad.


Open it as plain text. It does the same thing trying to highlight large XML files.

There is also a plugin to reformat JSON.


Not open source, but mp3tag [1] and Notepad++ [2] (which is) would also be on my Windows list. For Mac I'd add MarkEdit [3], which is less than 3MB, carefully feature-scoped, and has a responsive developer behind it.

[1] https://www.mp3tag.de/en/

[2] https://notepad-plus-plus.org/

[3] https://github.com/MarkEdit-app/MarkEdit


I would add Everything by VoidTools. It completely changes one's workflow.


In your opinion what advantages does Ditto have over win+V? I've only used Ditto very briefly but didn't immediately notice anything too wildly different from the built-in implementation.


For a multi-clipboard manager I'm looking for:

    - Configure hot keys to bring up the clipboard selector (I use CTRL + Alt + V)
    - Quickly select a clipboard item via hot key, arrow keys or mouse
    - Search through the list of clipboard items immediately
    - Configure how many items get saved and when they expire
    - Ability to paste in plain-text as a separate hot key
Ditto hits all of those marks. Overall it feels like it was built by a person who actively uses it.


Paint.NET is another must have for me. I do have Photoshop installed but for some very simple things I don't have to load Photoshop.


For me the killer audio player was Winamp. I could hide the window and control everything via keyboard shortcuts.

It was the perfect program: completely invisible and yet completely functional.


Was because you left Windows? Development picked up again.


I was thinking about trying Winamp again at some point, but nowadays I use Spotify, and shuffling a ton of MP3s across systems doesn't seem as compelling as it did 10 or 15 years ago. I guess I don't really have a strong need for an mp3 player anymore.


i think this applies to every audio player software that has ever been developed


I mean, iTunes exists.


I add 7-Zip and SpeedCrunch to the list


And Paint.NET.


Sumatra is the best PDF Reader. It's sad that the developer isn't making much money from that excellent product.


Why is it sad? Every time I see a piece of software that provides a lot of value and it’s not focused on money-making (ublock for example) it gives me a warm feeling.


Because there is something ironic about people (in general, including those here) dreaming about well paying jobs, but then wanting high quality products that have been worked on by people without compensation, when that time could have been invested by the worker (developer in this case) working another paid job, spending time with loved ones, and the like.


I don't think that Google, Apple or Microsoft employees are not payed. And the quality of those products just isn't there.

I mean, my employer paid 500 euros for an Iphone which maybe costs 50 euros to be produced. From those 450 euros is an Apple engineer not able to test the smalest phone with bigger fonts and to implement proper hyphenation on menu items ?


That's the virtue of suckless software too: you can do it in spare time.


It's great that it's not money-focused. It's sad that it doesn't make money despite of that.


Please forward your warm feelings to his bank account. Perhaps he can live off it


I really forgot for a second where I was, thanks for the reminder.


It’s missing dark mode that other low-key projects have adopted. It’s an app that’s lovely to use, but it sure does give your eyeballs a suntan when it’s open.

Yes, there are custom settings you can set, but for simple software, I just want a simple switch.


I actually prefer a textfile to change the colors, especially for a pdf reader I don't like white text on the "#000000" black that a lot of apps use. Instead I use "BackgroundColor = #ECECEC" which is much better for the eyes imho.


Webapps and mobile apps really need two dark modes - the one you like, i.e. light grey text on dark grey background, and another one for AMOLED screens, that's actual light grey or white on pure black.

On AMOLED displays, that #000000 not only looks nice, it also saves battery, as it shuts the given pixel off. The difference is substantial - with modern UI trends that waste most of screen space, a "grey on pure black" color scheme can often keep more than 50% of the pixels off! Meanwhile, a typical "grey on grey" dark mode will keep 100% of them on.


No AMOLED screens on pure black do not consume significantly less power than a dark non pure black color.

The power consumption on pure black vs another dark color is extremely similar. This is because on AMOLED screens individual pixels control themselves and power for off vs dark is very similar.

Source: https://www.xda-developers.com/amoled-black-vs-gray-dark-mod...


Not all dark modes are really that dark, though. MacOS comes to mind but there are plenty of examples. I'd be interested to see a comparison of average luminance.

Also, gray uniformity is an unfortunate shortcoming on a lot of OLEDs.


I like it when systems have a separate "dark mode," with grays, and "OLED dark mode," with true blacks for high contrast/battery saving on OLED displays. There are a few Android apps that do it and I wish it were more common.

Straight hex codes of course work, but they're not a good option if the program has more than one color.


Me too. I use OLED dark mode regardless of display technology but if mumble mumble display technology mumble battery is enough to get designers to see reason, then I’ll take the win.


win32 doesn't have 'dark mode'. If you want that you have to set system colors.


You can invert colors with a command line option, usually that does the trick


I haven't touched a Windows system in a few years, but when I worked as a Windows admin / programmer, SumatraPDF was my PDF viewer of choice. It does what it's supposed to do, does it well, and it doesn't get in my way while doing so. No subscription or cloud bullshit. And like you said, it's really small and fast. To top it all off, it runs without an installer, you just drop the executable somewhere and you're good to go; so people can use it without having Administrator access or bothering / arguing with their IT department.


Simplicity vs Customizability is something I wish more software in general understood.

FOSS in particular tends to lean into the Customizability aspect far too much; I'm a big fan of it, but it took (for example) GIMP years to actually shift it's interface to being single-window by default and making it less easy to close the default side-panels (which unless you knew how those were put together were also basically impossible to get back, so the thing most people did was either stop using GIMP or wipe their installation, hoping that a reinstall would restore the windows).

A lot of that comes down to the rather... weird relationship FOSS has with depreciation; most projects will gladly break people's workflows because "it's just better to do it that way" and at the same time, you have some obscure workflow nobody but the dev who wrote it still relies on, so you can't update a default that should have been changed 3 years ago because then they start complaining (and usually gets to keep the defaults fucked because of project seniority, which in my experience tends to matter far more than anything else in FOSS projects).

There's a balance to keeping things simple with the advanced tools needing to be deliberately sought out. SumatraPDF in my experience manages to walk that balance very well. It's the kind of software where just using it feels intuitive; I've been able to let elderly people install it and use it without needing to spend hours educating them on how it works. It just shows documents and the basic icons make immediate sense.

(On the other extreme end, proprietary software can come across as almost completely nannying nowadays to the point where I stop using it because I feel like I'm getting lectured like I'm a 5 year old. Again, there should be a balance.)


> I learned about how Plan 9 C code had non-traditional scheme of #include files where they don't put #ifdef wrappers in each .h file to allow multiple inclusion and .h files don't include other .h files. As a result .c files have to include every .h file they need and in the right order. It's a bit of a pain and no other modern C++ codebase I know of maintains such discipline.

I've always thought this is exactly how headers should be treated. Effectively they should be interfaces importing functionality locally, and each header should make it explicit what is imported from name alone.


The problem with this scheme is that adding a dependency to a header now breaks source compatibility (even if nothing new needs to be linked in and a piece of a library just needs to pull in a different piece of itself or even of libc). It’s pretty and clean, but you need an environment that’s friendly to crosscutting changes to handle source-compat breakage. (Such as, yes, a dependency-tree leaf like an end-user application, or a monolithic tree like a traditional Unix.)


You can accomplish most of this by using forward declarations and the pimpl idiom as Scott Meyers recommends. Performance can be greatly improved with precompiled headers. Headers without pragmas or ifdef's sounds like masochism.


SumatraPDF, JPEGView [0], ShareX [1] are some great Windows open source softwares

0, https://github.com/sylikc/jpegview

1, https://getsharex.com/

ShareX is the nr1 software I wish was available under Linux. It does so much and perfectly. But I guess the whole X11/Wayland + different UI toolkits makes it complicated.


Don't forget Notepad++.

And honourable mention: voidtools Everything. It's freeware, not open-source, but it's the best search utility for Windows around. It beats the Windows Explorer / startmenu built-in search on every single axis, to a comical degree.


What features of ShareX do you use in practice? I came across it around the end of my Windows usage (a few years ago), and the only thing I really found useful was the Upload feature to get an Imgur (or similar) link.


Making screenshots, screen recording (small gifs or video files), sharing the files, color picking, basic image editing, video converting, OCR from scanned documents. So a lot


> memory leaks. It's surprisingly hard to find an easy to use memory leak detection tool.

I can vouch for heaptrack[1] nowadays, although it's pretty much Linux only. It's under the umbrella of KDE, but a heaptrack trace only requires a CLI app, and there is a nice Qt viewer to analyse the memory consumption.

It tracks the memory utilization at the level of malloc'd/free'd bytes. It's fine if your memory leak or other memory utilization problem is on this level. Recently I dealt with an issue, where increasing memory utilization was caused by fragmentation within the allocator. This didn't show up in heaptrack as an increasing memory utilization, but heaptrack still pointed out where most of the temporary allocations happened, leading to the culprit of the fragmentation.

[1] https://github.com/KDE/heaptrack


"Getting early users, learning what features they want the most beats toiling for months or years and implementing lots of features before you know anyone even cares."

Yes, yes, yes. I wasted far too much of my life building things that nobody actually cared about because some executives spent far too long in conference rooms huffing each other's farts and creating product plans that were bigger fantasies than anything Tolkein ever wrote.

And I'm not even mad about the bullshit, really. By all means create the fantasy-filled documents if that's what it takes to get funding/approval. The part that kills me is when people start believing their own bullshit. Dream big but work small. And then ship! Close those feedback loops.


Needs (2021).

Discussed at the time (133 comments): https://news.ycombinator.com/item?id=27968900


Thanks! Macroexpanded:

SumatraPDF 3.4 Released - https://news.ycombinator.com/item?id=31566401 - May 2022 (79 comments)

Lessons learned from 15 years of SumatraPDF, an open source Windows app - https://news.ycombinator.com/item?id=27968900 - July 2021 (133 comments)

Lessons learned from 15 years of SumatraPDF, an open source Windows app - https://news.ycombinator.com/item?id=27963298 - July 2021 (4 comments)

Sumatra PDF Is a PDF, ePub, MOBI, CHM, XPS, DjVu, CBZ, CBR Reader for Windows - https://news.ycombinator.com/item?id=27589337 - June 2021 (2 comments)


> This comes back to Jeff Bezos' wisdom: there will never be a time when users want bloated and slow apps so being small and fast is a permanent advantage.

Did he share that with rest of the company or kept the knowledge to himself ?


He said it specifically about fast shipping, the SumatraPDF author extended the analogy to software.

> In our retail business, we know that customers want low prices, and I know that's going to be true 10 years from now. They want fast delivery; they want vast selection.[1]

[1]https://www.goodreads.com/quotes/966699-i-very-frequently-ge...


I've been very happy using SumatraPDF on Windows, because it redraws the PDF after the file has been written over. (This is especially useful with LaTeX on Windows.)

When I have the PDF open with Adobe Acrobat, my LaTeX compiler can't write over the open PDF file.


This is exactly my use case for SumatraPDF as well; seamlessly refresh a PDF that's been regenerated from LaTeX.


This use case led me to Sumatra as well. Haven't used another pdf reader on Windows since.


After Foxit started to imitate the worst parts of Adobe Acrobat Reader, I re-discovered SumatraPDF. What a refreshing piece of software to use, the lack of bullshit is amazing.

Of course, it's blocked at work so I can't use it on my Windows machine.


While we are at it, a small shout-out to PDF X-Change Viewer/Editor. Best part for me is that it works on Linux (via Wine) and Windows.


Yes, PDF-XChange is the best pdf software.


I find it interesting that he repeats the mantra 'be like water', which seems to partially equate to 'give users what they want', while also discussing the mozilla/firefox history.

It hints at what I think is a natural cycle of software. Software evolves with its user base, its existence and modification over time proving its value. Then, there comes a time where the weight of its history (and feature set) becomes too much of a burden to its current user base. At that point, something happens to shed the weight.


I think the weight comes from expanding teams and developer turnover. Small teams can avoid both these issues.


I installed this on a whim a long time ago, thinking I was getting a mediocre pdf reader. Little did I know, I was getting a fantastic pdf reader that I would continue using for many, many years to come. I recommend it to anyone unsure what pdf reader to get. Here's to another many years!


I'll add a shout out to Paint.NET here. Couldn't live without it.


Not sure what's your use case, but for me photopea.com made paint.net redundant. Definitely worth checking out.


Thanks for the reminder - I just switched to OSX and had been looking unsuccessfully for a Paint.NET equivalent for the Mac. Photopea.com should do it.


Been using SumatraPDF for probably a decade now and it’s always been great. Thanks, Chris!

If there’s one feature I’d absolutely love, because it’d let me delete Acrobat Reader again, it’d be digital signatures. Clients demanding that documents be digitally signed (but self-issued certs were ok?!) was the only reason I grudgingly reinstated it on one of my machines.


SumatraPDF is the best PDF reader for Windows


I think it makes perfect sense for this to be windows-only, and it wouldn't make sense to make it cross-platform.

Make a PDF library cross platform? Perfect sense. Make a PDF reader cross platform? You'll end up with a mess.

The reader itself is mostly the UI an interacts with the OS's API for rendering and drawing. There's really no way to write one that works on different OSs unless you either have three separate codebases. Or you can hide three separate codebases under some abstraction that makes the application look alien on all supported platforms.


I use it, it's fast and it does its job well. It looks kind of plain compared to more modern looking applications, but that's probably contributing to its speed advantage.


Wow, someone that didn't use Electron for writing desktop apps? Focus on speed and simplicity?

Basically every app should be like this.


Funnily, more than a few Electron apps use SumatraPDF under the hood:

https://github.com/artiebits/pdf-to-printer/blob/master/src/...


Yeah, "should", when every app developer decides that they should use Win32 API.


I actually remember having to locate SumatraPDF for an attorney's Palm so he could open and view .pdf files from his email.

I don't know if anyone remembers this but Exchange ActiveSync debuted around 2003

Blackberry had their own standalone solution that was a whole slew of Windows services and service accounts integrated with your Exchange server.


Very interesting article. Has a lot of good, practical points. But I cannot help but wondering -- the author keeps saying "This is my project so I can do what I think is the best choice", but how many of these principles would break down if the original authors stop maintaining this, and other people take over/fork the project? The I can totally understand why the author created their own JSON/XML parser, but another person may consider it too complex/not practical/no longer worth the effort and instead replace it with a small library. What happens from there?


> This requires resolve. I constantly get requests to add more icons to the toolbar and I constantly have to say “no” because adding 2 more icons to the toolbar to satisfy 10% of users makes the app slightly worse for 100% of the users.

This, this is why I love the app. Adobe Acrobat has more pleasing GUI but it clutters with buttons and sidebars and functionalities that I'll never use most of the time but they consume most of the screen real estate. When reading, I'd like everything to get out of the way and let me focus on the content, SumatraPDF serves me well.


I’ve unfortunately fallen into Calibre. Only because many years ago I had issues with SunatraPDF. Calibre is….. just strangest software. I still fumble around with it and it gets super slow. Great read thank you


C++ leak trackers are surprisingly easy to implement. You create a custom allocator that has a per-type pointer to a pair of static ints (one for allocation count, one for total size).

When the allocator is statically instantiated, it adds itself to a global list.

Periodically (and at shutdown) log the top N heavy hitter allocations. In testing, assert there are no outstanding allocations in a static destructor.

The overhead of this is a couple of increments / decrements per allocation / free, so you can probably leave it on in production builds.


Do you have an open source library or reference code to share? It sounds like a good idea.


SumatraPDF is great, only wish it had 2 more things: Dark mode(or 'invert' mode, really) and a working Linux binary (I know about wine, still...).


This is exactly the thing I've been looking for!

I have a powershell script that downloads PDF's from a URL, and prints them to a specified printer, I'm using Foxit right now, however there have been substantive changes to foxit, and I'm worried about the free option going away.

I'll for sure check this out.


>It prevents circular dependencies between .h files and doesn't inflate C++ build times because of careless including the same files over and over again.

Ah, the C/C++ modularity story is such a monstrosity... but modules are coming, and the build times are drastically decreased.


I have open a few bigger PDF files with Sumatra. It is insanely fast, it starts insanely fast. Or maybe Sumatra is just normal, we got used to dealing with crappy, slow, bloated software "because RAM and CPU is cheap" and forgot that stuff can work so good.


Exactly like all the slow software built on React Native.


>> The only way for one person to even attempt cross-platform app is to use a UI abstraction layer like Qt, WxWidgets or Gtk. The problem is that Gtk is ugly, Qt is extremely bloated and WxWidgets barely works.

So, how you are going to write cross platform apps, then? :D


You can implement the frontend separately for each platform, which is used by example by usbimager, Transmission or SciTE.

This is very hard to do in practice for any big enough software, but then using Qt, Java or C# frameworks is probably worth it since their impact will start to be small compared to your application footprint.


Do like everybody else does and wrap it in a web-browser.


Does wine have the ability to package windows binaries? That would probably be lighter weight, assuming it performed a tree shaking pass.


It is the first time I heard that Qt was bloated. Is this true? If so, I would like to know what other UI toolkits do that is less bloated.


Put UI behind PAL like sumatra does with pdf engine.


Java is still viable for many usecases.


> But try to make a nuanced point about more tests vs. more code to your fellow developers and you'll be burned at stake and your smoldering carcass will be thrown to wild dogs. Village children will use your severed head to play soccer.


Sumatra is one of the first things I install on new Windows setups. Something refreshing about having PDFs open instantly. Screw adobe. Microsoft Edge meets my needs when it comes to PDF signing


What is the best PDF viewer app on Mac that is closest to Sumatra?


Later versions have annotation (review tools) support.


> It's about 127k lines of C++ (not counting libraries written by others)

I admire and respect you for that. Thank you really for building SumatraPDF.


I like it! "If you're not embarrassed by your app then you've waited too long to release it"


In terms of making it a web app, easiest way would probably be pcjs, a stripped down tiny linux, and Wine xD


Just installed it. It's crazy fast.


Sumatra does not support PDF forms


Didn't know that the SumatraPDF author had a blog, loved the read


Another thank you shout out for @kjksf. Long live SumatraPDF!


glad i read this, even if two years too late. there are some points that people excited by the cutting-edge would not like, but it totally makes sense.


Works great for me even in Linux via Wine.


Love love love it, using it all the time.


yes, I want to use this everywhere.


I haven’t it since Chrome was big.

Does it have allow searching by folder yet? It’s the killer feature that I need in Acrobat




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

Search: