Ask HN: What underrated open source project deserves more recognition?

169 points by nagstler ↗ HN
Are there any that you have come across that you think deserve more recognition?

146 comments

[ 46.6 ms ] story [ 1088 ms ] thread
(comment deleted)
Postgraphile. Postgres + graphql. It really solves all the negative aspects of graphql. Also, incredibly performant. Their v5 release is also a pretty interesting piece of tech.

https://postgraphile.org/

Interesting, This project looks very versatile, Can experiment with quick a backend API on Postgres.
It’s one of the few big projects that still feels “open source” as opposed to corporate run open source.

I think Netflix is a big user / sponsor of the project.

I didn't see a v5 tag in order to know, and I have no idea what "utils/graphile" does for the project, but one will want to ensure they are aware of its licensing scheme https://github.com/graphile/crystal/blob/db8894c74eb0ec3fe96...
Its an optional command line utility that you may use with PostGraphile which does things like printing out your configuration in a pretty format and using TypeScript to figure out what options are available to you based on the plugins you are using. It is 100% non-essential because all the options are documented in each of the plugins (and also you can use TypeScript auto-complete in your editor), and you can just console.dir() your configuration. You can read about it here: https://postgraphile.org/postgraphile/next/config#viewing-th...
Graphile worker is also awesome. Wish celery was as good -- I've been thinking of implementing a compatible worker in Python
I played with this a bit years ago when it was still called PostgraphQL. My biggest issue with it was that there didn't seem to be a recommended (or even suggested) version control method for things like functions. Using a standard migration tool to update functions seems like hell, so I gave up on using it.

Looking through the docs, I still see no mention of version control or even migrations at all. Is this something that has been solved?

It’d be like any other database schema change. We commit all schema migrations to git and have cicd run them.
Is there any alternative that works with Python?
Filestash [1] was born after the infamous FTP top answer on the Dropbox launch [2]. Trying to understand why we couldn't have nice things made on top of FTP, I came out with this interface:

  type IBackend interface {
    Ls(path string) ([]os.FileInfo, error)
    Cat(path string) (io.ReadCloser, error)
    Mkdir(path string) error
    Rm(path string) error
    Mv(from string, to string) error
    Save(path string, file io.Reader) error
    Touch(path string) error
  }
and once I had the UI working nice for FTP, I made it work for every possible file transfer protocol: S3, SFTP, NFS, SMB, WebDAV, Dropbox, Google Drive, .....

[1] https://github.com/mickael-kerjean/filestash

[2] https://news.ycombinator.com/item?id=8863

Small AutoIt utility scripts, such as WhyNotWin11 and other applets by similar users using AutoIt to make VB6-era -esq programs. These are always neither motivated by lofty architectural goals to “do things correctly” of many collaborative open source projects that forgot about laymen-ergonomics entirely, nor user-acquisition driven dark-pattern minefields of sluggish eye candy entirely focused on exploiting the aforementioned laymen-approachability, instead just being small-scope, pragmatic UX solutions to solve minuscule pain-/friction-points in interacting with Windows that are too fragmented to be part of some overarching software utility. They replace the typical SEO shovelware web app/adware that you get when searching on Google for “how do you do X on windows” that sends you to some factory-stamped installshield executable which does nothing more than passing command line arguments to some existing open-source CLI software that neglected laymen-usability.
"OpenRefine is a powerful free, open source tool for working with messy data: cleaning it; transforming it from one format into another; and extending it with web services and external data." https://openrefine.org/
Everyone hand-rolls their own dotfile management system, but YADM already does everything you need:

https://yadm.io/

I've never doubted that there are existing solutions for dot files that do everything I need, but I've yet to find one that doesn't take more work for me to swap to than continuing to just clone a git repo an symlink maybe half a dozen things the once or twice a year that I happen to set up a new machine.
You might want to have a look in stow. https://www.gnu.org/software/stow/

I just stumble across dotstow which adds a git layer on top of it https://github.com/clayrisser/dotstow

I've looked at it before. Looking at the system I'm writing this comment on, my dotfiles from my repo are ~/.config/alacritty/alacritty.toml, ~/.config/nushell/{config.nu,env.nu}, ~/.tmux.conf, and ~/.gitconfig. I'm not sure if I just use far fewer dotfiles than average, and I know this is a matter of personal taste, but it's just not obvious to me why I'd want to add a tool to symlink five things once. Moreover, most of the jobs I've had give me a Macbook to work on rather than Linux, so that also would require me to either manually install `stow` or move getting homebrew set up to _before _setting_ up my dotfiles, which seems a bit backwards to me given that my my shell config is where I store any configuration for stuff like that.

I'm starting to wonder if I just have a very vanilla dotfile workflow compared to what some other people use. This would surprise me a bit, given how I tend to go overboard in custom configuration for most things, but it definitely feels like my experience isn't enough for me to understand why specialized tooling for dotfiles is needed.

I have a work mac, work linux, and home mac. I want the same terminal-based development environment on all of them, but each requires just a little bit of customization.

For example, the .gitconfig for work is different from home (e.g. my username/email). Ditto for my .ssh/config and my shell aliases.

I also use Nix to manage all my tools, and the home-manager configuration is slightly different between mac & linux due to platform support.

I've gone through a few iterations of home-built solutions, including extending homeshick[1], before discovering YADM which implemented everything I had done but better.

[1] https://github.com/andsens/homeshick

> the once or twice a year that I happen to set up a new machine

This was me for a long time - but then I started using ephemeral (EC2) hosts for remote development, and while I wasn't setting up a new machine frequently, knowing that I could do it with <5min of effort (and 15min of building Nix packages) eliminated a lot of anxiety.

https://github.com/NightscoutFoundation/xDrip

xDrip+ is an unofficial and independent Android app which works as data hub and processor between many different devices.

It supports wireless connections to G4, G5, G6, G7, Medtrum A6, Libre via NFC and Bluetooth, 630G, 640G, 670G pumps, CareSens Air and Eversense CGM via companion apps. Bluetooth Glucose Meters such as the Contour Next One, AccuChek Guide, Verio Flex & Diamond Mini as well as devices like the Pendiq 2.0 Insulin Pen.

Heart-rate and step counter data is processed from Android Wear, Garmin, Fitbit and Pebble smart-watches and watch-faces for those that show glucose values and graphs.

On some Android Wear watches, it is possible for the G5 or G6 to talk directly to the watch so it can display values even when out of range of the phone.

The app contains sophisticated charting, customization and data entry features as well as a predictive simulation model.

ImHex

“A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.”

I actually used it not too long ago to inspect why a mp4 file wasn’t valid. The pattern language that they have is quite nice and having sections of the hex highlighted and being able to see what structures they represent and what data was on those structures was very useful!

https://github.com/WerWolv/ImHex

Can confirm. ImHex is an amazing tool for a cyber analyst because it also supports yara rulesets, so you can quickly iterate and try out whether the malware was or will be detected. And it even supports capstone to disassemble the binary, while you debug the code and edit the yara rule!

Combined with ghidra, these are pretty much the most valueable tools in my day job.

(with golang, vim, arch etc of course)

I like https://github.com/pyinfra-dev/pyinfra. "pyinfra automates infrastructure using Python"

Only played with it for a little but it seems well designed an simpler alternative to ansible, chef and other such things.

Thank you for posting this! Happy to answer any questions anyone has :)
Thank you for building it and sharing it!
I just found about this project from this comment, absolutely excited to try this out.

As someone who's never used any of the infrastructure tools, I'm thinking of pyinfra as a way to run shell commands + install dependencies on hosts (declaratively?) on a bunch of hosts via ssh.

Inventory is to sort of take a self-defined inventory on a bunch of hosts?

One final question on usage, would it be possible to sync or reference files from the machine running pyinfra on the remote hosts? Or would that have to be done indirectly via running shell commands to sync?

I’ve used several different IaC tools; Puppet, Ansible, Terraform and Polumi to name a few.

What would you say are key differentiators of PyInfra from these existing projects?

Both Terraform and Pulumi differ slightly I think provisioning cloud resources - pyinfra can be used alongside to setup instances/etc, I’ve used the pyinfra/Terraform combo with great success.

For ansible/chef, etc the main reasons/benefits boil down to:

- instant feedback esp on errors, get the stdout/stderr of whatever command pyinfra was executing, there’s no agent or abstraction to hide it

- configure in python rather than yaml+jinja2 mess

- integrate with the whole python package ecosystem

- speed and small overhead as inventories scale

+1 on this! It's scales amazingly well too!
(comment deleted)
QCAD[1]

I Used it to create home improvement drawings. bit of a learning curve but very flexible and powerful

1 - https://www.qcad.org/

What I love about qcad is how keyboard-driven it is. Are there other cad programs that I can operate mostly by typing instead of clicking?
https://github.com/BespokeSynth/BespokeSynth

BespokeSynth takes the concept of a modular synthesizer and expands it so that the application is less just a synth and more a complete modular DAW. I've used it to create MIDI/audio workflows that I couldn't get exactly the way I wanted in Ableton or FL Studio. It also has a module for doing livecoded audio processing in Python that I'm just starting to scratch the surface of.

Video from the creator covering I Feel Love in BespokeSynth: https://www.youtube.com/watch?v=kzYUgPMMpts

https://tdb.samba.org/

Trivial key/data database with great performance and robustness. Embedded in surprising places (e2fsck!) and my go-to unless I need Sqlite3.

https://github.com/decompme/decomp.me

I’ve posted this before but I love it so much I gotta do it again.

You plug in a piece of ASM from a video game ROM, and it gives you a first pass decompilation. On the left hand side you can edit this decompilation, and on the right there’s a side-by-side diff of the target ASM and what your source currently compiles to. It’s slightly gamified, looks great, is super easy to fork/share, and can be pretty addicting once you get into it. Super cool community.

I discovered these 3 amazing projects recently:

Cryptpad, essentially google docs/sheets/forms e2e encrypted. It does include collaboration. https://github.com/cryptpad/cryptpad

Immich, google photos self hostable, with share options https://github.com/immich-app/immich

Nginxproxymanager manages certificates and proxies to self hosted stuff through nginx https://github.com/NginxProxyManager/nginx-proxy-manager

Great self hosting stuff!

I've been using both Immich and Nginx Proxy Manager for a while now, it's the first time that I see Cryptpad, it looks like an awesome tool.

I recently tried the Collabora Online integration in Nextcloud, but was quite disappointed with it, the right-to-left button was greyed out for no apparent reason, and creating shapes and moving then around felt sluggish (clicking the rectangle tool directly added a rectangle in the middle of the slide, which I could then drag around and resize, but the transformation tools seemed buggy and didn't really work well).

I'll certainly try out Cryptpad

Phil Harvey’s exiftool [0]. Despite being a command-line tool, it is widely known and used by professional and advanced amateur photographers to extract or repair metadata in images. It does handle more than just still images.

It’s written in perl and the perl API for handling the metadata is documented, but I’ve never seen anyone use that directly.

[0] exiftool.org

I created an account here to say this: Exiftool doesn't only work with image files, either. I use it to extract metadata from audio files as part of a toolchain that creates playlists automatically from my music metadata.
Litestar haystack

They are masterpieces