Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
HortusFox – A self-hosted collaborative plant management system (github.com/danielbrendel)
58 points by PaulHoule on Jan 6, 2024 | hide | past | favorite | 22 comments


I love the idea of this kind of app. My wife would probably love a tool like that if it's also easy to use.

But then I saw the setup guide. Manual sql imports? Needing a previously set up MySQL? Webserver launches via the php command? I get the use of composer but the rest seems so easily avoidable and horribly overcomplicated.


I’d say the opposite.

Every time I see a system that wants me to run “docker compose” or something like that I find it is the wrong version of Docker than the one installed on my machine or for some reason it doesn’t work and then it is a maze of twisty little configuration files…. Snake oil tools like Docker, Ansible, Chef, Pupper, etc. might have some value if they absolved you from understanding the underlying tech but they are just another thing to learn and if anything goes wrong you’d better believe there is every version of Python and Java and every other runtime and library in use somewhere in some container.

Before upgrading my DSL I could never get Docker systems to work at home since somehow Docker can take a 10 MB app and download 10 GB of files to attempt to make it work…. And it times out. And a cacheing facility that would make it reliable on a less than gigabit connection is probably an “enterprise” feature that costs vastly more.


I seem to have a different perspective on this. My understanding of Docker and containerization, in general, is that their primary goal is to encapsulate all the necessary components to run a piece of software within a single, universally portable package.

I haven't encountered issues with "different versions of Docker." On the contrary, I've faced challenges with various versions of Python, PHP, packages, and system libraries when not using Docker. These are issues that simply don't arise within the Docker environment.

While it's true that some users neglect image hygiene, using the wrong base image or including unnecessary elements in the final image, I've noticed a decreasing trend in such practices.

Regarding configuration files, my understanding is that they remain the same files needed for a vanilla install, simply mapped inside a container.

In my opinion, Docker is not just "yet another thing to learn"; it's a single tool to learn and use universally, both now and in the future.

I'm not well-versed in PHP development. If I were to use a tool for PHP development, I would need PHP installed, but there are numerous versions available. Do I need Apache? Is it compatible with my three-year-old version? Will it work with a nightly build? What about Composer? Does it have dependencies?

And then there's the matter of the database. Now, I'd have to install and configure a complex piece of software with numerous dependencies. SQL is a familiar term to many, but not everyone is comfortable navigating the MySQL CLI, especially when it doesn't come by default on your machine.

But what about more than just experimenting? With Docker, a simple Compose file can be created to spin up a configured database, including all necessary dependencies. If required, it can also handle any migration or initialization needed.


This is par for the course for me: I want to run this software

https://github.com/danbooru/danbooru

and the compose file “just doesn’t work” because it is a few years old and not compatible with the docker compose version installed with Ubuntu. I took a crack at updating the config file but didn’t find a lot of documentation to help…. And remember I’ve frequently had “simple” Docker installations become a matter of “download files for hours, have the installation fail, repeat…” so engaging with that monster at all seems like a risky time sink.


This seems like 15 minutes of work to me, but I get it.

My hope is that, long run, we all collectively get better at building systems that help us with this stuff. There should be off-the-shelf recipes that combine all these ingredients for us.

There's already a very very strong self hosted community, mostly built around Kubernetes. They have a huge archive of Helm charts and other assemblages of easy to use off the shelf pre-assembled setups for stuff like this! There's also works like Yunohost, which offers a more bespoke set of automations and abstractions to make installing and running stuff easy.

Sure, as a consumer, I get it: everyone just wants a dumb embedded sqlite and something easy to run. But it feels reductionist to demand that every author conform to the lowest common denominator.

Tyranny of the lowliest user can not go in forever. And I for one am delighted to see how much better we have gotten at being able to helm-ify or whatever other packaging you please these concerns so someone can deliver an easy to use experience, composing the many parts. I think, I hope, I pray that is how we escape the lowest user trap.


> everyone just wants … something easy to run

This is a valid need that any project maintainer should aspire to address.

The ‘lowest common denominator’ is absolutely acceptable in an era of cheap storage and memory available to the average self hoster. Even a Pi4 or 5 will handle clunky containers.


Fuck this. Fuck this a lot. What a rubbish mind of moral absolutism, that is just never going to make everyone happy.

Everyone will have different definitions of easy. The person here clearly assembled very popular very well known within php tools that make everything simple, and took inordinate care to carefully document all the steps if you know anything about modern php.

It's just pandering bullshit from gross people to insist on making it simple. It's never going to be simple enough. Everyone will complain forever, be sad and unhappy that the machine doesn't just work, that there's not a service already running that does it, that they have to lift any fingers.

The bar for for simplicity is ever diminishing, will forever sink, and the outrage that it's not simple enough is infinite. We cannot prey forever upon those who do by those who won't.

We just can't demand this endless hell from everyone with a good idea. They can't all be your simple trite subject of decision for not having made it simple.

> The ‘lowest common denominator’ is absolutely acceptable in an era of cheap storage and memory available to the average self hoster. Even a Pi4 or 5 will handle clunky containers.

The lowest common denominator I was talking about isn't hardware, it's shitty low class negative internet dweebs who won't lift a finger to try to run something trying to make some auters interesting weird awesome software take a dive because it doesn't run whatever their preferred "simple" is. People are the low denominator, sucking up the oxygen in the room with their pissy "not easy enough" negativity. This system scales probably way way better and to way lower targets because it runs MySQL, because it can be tuned better, because it's more perfoant, because it's not "simple" enough for some. You can probably host way more people on an RPi with this. The hardware requirements are simple as heck, it's the how fucking low and how frelling stupid an author has to make it to run it that sets this bozo-bit bar.

This author clearly spent hella time carefully documenting & using best-of-breed tools automating setup. But the shitty riff raff keeps demanding it be simpler. These people will never contribute anyways, is my suspicion, but I agree with them still: as I said, it should be simpler! The bar should be lowered! But it shouldn't be on authors to help lower the bar (endlessly imo); we should intermediate and build better tools (like Yunohost & Helm) to take & package excellent cared for beautiful works like this & help deliver & make them operable to lower denominator people, for whom trying to run a MySQL database is just too much.

This clearly has my goat, and psuedo-applogie-ish on that. Those who crow for simplicity usually (in my view) have a version of reality in their mind that lays blame and waste to others & cherishes some nonsense internal pleasantville where we can just do away with a reality that the people actually doing the work have to live in, and which exists for very real reasons. There's high-level infantalized engineering where everything is imperfect for not perfectly matching expectations of how simple we want it to be.


I want to use someone’s novel software idea. I do not need to understand how it is built and how to maintain it.

Getting irate about what the customer wants (‘use software easily’), then blaming them for not wanting to understand the brilliant techniques that a hallowed developer has used is simply arrogant.


> But it feels reductionist to demand that every author conform to the lowest common denominator.

Sibling comment:

> This is a valid need that any project maintainer should aspire to address.

I think either of these things can be true, depending on the goals and intended audience of the project. It's totally valid for someone to make software like this primarily for themselves, and leave it up to others to tailor it to their own needs or contribute to make it more accessible.

I get the impression this project was made for the author's particular use case and isn't (yet) seeking a broad audience. The readme for this project doesn't really explain this, though, which makes me realize several of my own projects don't clearly set these expectations either.


I always Ctrl+F 'just' on projects like these for a laugh ("just set up x with widget y and z skill / you only need to do a b c d or e then f if g or h else i and j but only if k and also we haven't documented what happens if l and also haha you'll find bug m in the console that isn't mentioned anywhere here").

This one wasn't really an offender in that vein I suppose. But it is so convoluted as to alienate 99% of people and even >50% hackers I would guess.


I… I’ve been building a plant app too and it took me waaaay too long to confirm that this app is indeed for house plant and not factories. The readme is a good setup guide, but I think a clearer/more engaging feature list would go a long way. Also, as others mentioned, examples in the form of screenshots or videos would be very valuable.

Will come back to this in a bit if I remember, seems like a very capable complex system! I would love something that lets me track everything I want to about my plants with minimal overhead.


Having over 20 plants indoor and around another 50 outdoor I would love a self hosted app like this. If there were any screenshots or a demo of the app then I would be willing to put the efforts to dockerise it and add a helm chart around it, but hard to justify the efforts without knowing how things look at the end.



Thank you!

Perhaps this URL should be in the linked repository? I read through it and was waiting to understand what it _did_. I almost gave up, but now that I've seen this, it is exactly what I've been looking for to help manage my outdoor plant "guilds".

I also figure that I could use this to catalogue local wildlife as well to get a sense of what is where, and when. Put that together with particular plants and that's some really nice longitudinal data!



I'm curious about what you mean by outdoor plant guilds? Sounds fun!

For cataloguing both plants and wildlife, inaturalist.org may be closer to what you're looking for (depending on what you want to do with that information).


Sounds interesting, would love to see some screenshots in the readme.

A docker install option would make it more approachable for me as well.


Looks really cool, but I'm not exactly sure why it doesn't just use Sqlite.

On the other hand, I suppose it's an opportunity to practice MySQL if you expect to need it later for pro sysadmin work.


True, but I just want to water my plants. Don’t really want to revisit a MySQL cheat sheet again.


I have one of these as well called Sepal: https://github.com/sepal-app/sepal

It's still in development but worth having a look if you're interested in server rendered web apps built with Clojure, htmx, AlpineJS, TailwindCSS, etc.


why do all the promising open source plant projects use php? :(


I used to say the same thing, then a random (maybe not so random) YouTube suggestion taught me that PHP 8 is a _very_ different language than what I got burned with back in the day (PHP 4)




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

Search: