Having done exactly that (tagging and collating app for images), I can report that it is likely to take somewhat longer than “an afternoon.”
The Programmer’s Credo:
We do what we do; not because it is easy, but because we thought it would be easy.
Having done exactly that (tagging and collating app for images), I can report that it is likely to take somewhat longer than “an afternoon.”
The Programmer’s Credo:
We do what we do; not because it is easy, but because we thought it would be easy.
Why program by hand in five days what you can spend five years of your life automating?
See https://www.infoq.com/presentations/Automation-DSL/I don’t do volunteer work for myself. I do, but also I don’t.
After just a few months, I had a base system that seemed to work pretty well. Then I wanted to be able to define meta-data tags and attach values easily to each of the files, then find all the files that had certain tags attached very quickly. This part took more time, but I had that working within the first year.
Since then, I have worked years on adding new features to the project (https://didgets.com/) as each new idea comes to me. It now does database, logging, indexing, and other tasks well. For every task I pull off the 'TODO' pile and get it working, I seem to add two new items to the list.
I never thought it would be easy, but it has been even harder than I originally thought. But I love to program and enjoy getting an idea to work in code so I stick with it.
I started a fairly major project, assuming that it would take four years to take off.
It took ten years, but it has taken off.
Also do you have a commercial Qt5 license? I think some components, like QtCharts, are "commercial or GPLv3", so you need to be careful with redistributing. IANAL but not having a license would mean the GPL now dictates you should release your entire program as GPLv3, which I assume is not what you want, as the source code is not available anywhere.
There are two separate pieces of the project. The 'Engine' code does all the real work of managing the data and executing the queries. The 'Browser App' is used as an Admin/Demo tool which uses the Qt windowing platform. The browser just calls the engine API and makes the data display nicely in the various windows and dialogs.
I will probably open-source the browser code. I am still trying to figure out if and when I will release the engine code using one of the open source licenses. It really depends on if it can get some traction so that it is worth the effort.
If you cut with the grain you can get a surprising amount done in a short amount of time.
Depending on the project, I have a bunch of personal 80% projects that I’m happy with where they are.
https://wikiscroll.blankenship.io
I could add native language support for other wikis (some people have forked the project and done just that), but it would be that 20% work. I could expand my coverage beyond the “top articles” but it exceeds what I can track in git so I’d either have to use Wikipedia’s API (slow and offloads cost to Wikipedia) or roll my own DB backend. That’s part of the last 20%. I could update the repo to keep it “fresh” but I’d exceed the git object limit on GitHub and have to have some amount of long-running cron based automation. I choose to leave it as is.
I could store previously discovered albums, but I’d need a DB. I could return more than one album at a time, but I’d have to deal with rate limits and cache responses to take load off Deezer. These are all part of that last 20%, so I leave it with one recommendation per page load.
For things I plan to monetize or share with others I tread out into that 20%. Like https://persona.ink
For my customer contracts I share the same options with them. I let them know when we are cutting against the grain and where costs are going to balloon. I give them options to reduce cost by adjusting their expectations. I’m happy to charge them for the work, but I’d like to give them the chance to save on my time if they can live with the compromises.
Until you are at 90% done and realize there are still 90% ahead (: