Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help this project stay strong #374

Open
bobOnGitHub opened this issue Apr 12, 2020 · 6 comments
Open

Help this project stay strong #374

bobOnGitHub opened this issue Apr 12, 2020 · 6 comments

Comments

@bobOnGitHub
Copy link

@JoshuaWise,
Hi Joshua,

Just seen the Patreon/Paypal links and a few thoughts sprang to mind.

It'd be a shame to see the competition win out just because they got the SQLite name for their repo - SQLite3 for node is top of the search list results just now. There's an excellent book on seo I came across recently. (I read it for free on kindle unlimited but will buy it at some point)

Some observations:

Have you considered crowd funding options for specific functionality like worker_thread and SQLCipher ? With 33K downloads a week it could work.

Another "sell"/focus for better-sqlite could be with jupyter-lab/data science for Javascript developers - the work flow is essentially sequential so having synchronous data access is ideal. see here. Should also be very useful for users of TensorFlow.js

@Prinzhorn
Copy link
Contributor

I'm not Joshua, but I want to give my opinion.

It'd be a shame to see the competition win out

This is unfortunately the mindset that keeps burning people out on open-source software. There is no competition. This is not a product.

just because they got the SQLite name for their repo

You are assuming sqlite3 has more weekly downloads than better-sqlite3 because of the name. Even if this number would mean anything, it is still not comparable. One project started in 2009 and the other in 2016. Even if we ignore that, then one project has a commercial entity behind and the other doesn't. So if you really wanted to look at it in a competitive way, then Joshua is already winning. He has created a beautiful piece of software that works better than the competition for almost every use-case. And he is also free to move the project in whichever direction he pleases, without behind held back by a corporate entity and its arbitrary goals and policies

If someone is in charge of a software project and bases their decisions off of which module is the first search result then this person should not be in charge of a software project. Especially when it comes to such a fundamental piece of your architecture as the database.

@JoshuaWise I wanted to bring this up in the future but since this came up now: have you considered setting up GitHub Sponsors? I am currently held back by my health condition but once I'm able to launch my commercial product I was planning on supporting better-sqlite3. GitHub Sponsors would work best for me because I can write the costs off as business expenses. I'm not sure if that works with Patreon and definitely not with a PayPal transaction without a proper invoice. So I cannot promise anything right now, but maybe others would rather use GitHub Sponsors as well.

@bobOnGitHub
Copy link
Author

@Prinzhorn

"This is unfortunately the mindset that keeps burning people out on open-source software.

I suspect what burns people out is tirelessly working without reward and the expectation from evangelists that all software should be completely free - the notion that their time is essentially worthless.

"There is no competition,".

It certainly looks like competition: it is called "better"-sqlite after all and performance comparisons are front and center. Competition can be a good thing.

"this is not a product"

Everything is a "product": if it doesn't get and maintain enough traction it will die or deteriorate. Some of the best software products I've seen have gone to pot once the original author(s) bowed out. The exception is where it gets finished/reaches a point where it doesn't need work - rare in today's CI world.

search results

better-sqlite doesn't make it into the first few pages of search results for "sqlite node". Most people using node are just expecting to use async code. Once you've found something that does what you thought you were supposed to be doing and has 283K+ weekly downloads and you've trawled several pages looking for alternatives and not found any why would you keep looking ? The majority of JS developers aren't going to have a reason to add "synchronous" to their search terms or a use case where the performance sends them looking past node-sqlite3.

funding

Sponsorship (Github/Patreon) works for some people/organisations (as sponsors) but not for others.
PayPal works for some but not for others
Crowd funded milestones work for some / not others (it'd work for me right now)
Each has a group it appeals to so I'd use all three.

"" It'd be a shame to see the competition win out ""

Ok, so I should have put a smiley in there but the sentiment remains: I can use better-sqlite where I need sync or async (via a child process/messaging) but I can only use node-sqlite for async so I would much rather see better-sqlite with the bigger following and better chance of funding and survival that goes with that.

@Prinzhorn
Copy link
Contributor

@bobOnGitHub fair enough

@JoshuaWise
Copy link
Member

JoshuaWise commented Apr 14, 2020

I'd like to shed some light on a few talking points, from the author's perspective.

better-sqlite3 started out, as most open-source projects do, as a package for personal use. I needed to accomplish some tasks in Node, and I found that the existing SQLite3 drivers were sub-adequate, so I created my own. As I dove into the source code of existing drivers (node-sqlite3, and few others), and as I experimented and tested different approaches, I consistently found evidence that async was not the right way to go for this. Believe it or not, better-sqlite3 was originally async.

After my discovery, I decided to share my findings publicly by posting benchmarks and describing why async drivers underperform in this situation. better-sqlite3 wasn't created with the purpose of "competing" against node-sqlite3. As @Prinzhorn pointed out, node-sqlite3 does not even compete for funding/donations because it is controlled by a commercial entity.

However, I believe there is always an intrinsic competition between dogma/misinformation and reason/experimentation. A side effect of Node's own marketing is the perpetuation of the belief that async is "always" better for I/O operations. Any experienced programmer should be skeptical when reading the word "always". The reality is that async is advantageous under many common conditions, but those conditions are frantically evaded by SQLite3 (in a very intelligent way). However, without a deep understanding of SQLite3 and how it evades those conditions, the everyday programmer won't realize this (or even have the time to think about it). This is the main reason I felt the need to post my findings.

Over time, I've used Node less and less. In fact, I'm not using better-sqlite3 for anything in my life right now. However, since it has become so popular, I feel an obligation to continue maintaining it. We all know the sad feeling of seeing a module you love go out of maintenance. However, it's difficult to justify spending so much of my time on something that nets me nothing in return. That's why I put up the donation options. I haven't gotten much (less than 10 donations, usually between $20-$40). But each time someone donates, it reminds me that people still care about this work, and it motivates me to continue working on it when I have time, instead of leaving it to decay.

Have you considered crowd funding options for specific functionality like worker_thread and SQLCipher ? With 33K downloads a week it could work.

I haven't considered this. Thanks for the idea; I might use it.

Another "sell"/focus for better-sqlite could be with jupyter-lab/data science for Javascript developers

Unfortunately, I'm not in the business of trying to integrate with projects that I don't use or understand.

If someone is in charge of a software project and bases their decisions off of which module is the first search result then this person should not be in charge of a software project

Unfortunately, as @bobOnGitHub pointed out, this is what most JavaScript developers do. Hopefully leaders making important decisions won't, but the hobby programmer most certainly will, and they have equal weighting when it comes to SEO, which perpetuates the problem.

have you considered setting up GitHub Sponsors?

I haven't looked into it yet, but if it's the ideal way for some people (including you) to help support this project, then it's pretty much a no-brainer for me to setup that up. I'll get on that. Thanks for the suggestion.

@Prinzhorn
Copy link
Contributor

Prinzhorn commented Apr 15, 2020

So much for "Development of this module is sponsored by MapBox."

TryGhost/node-sqlite3#1292
https://kewde.github.io/sqlite


In fact, I'm not using better-sqlite3 for anything in my life right now. However, since it has become so popular, I feel an obligation to continue maintaining it.

I know this feeling. I cannot speak for you but feeling pressured into working on something is a shitty feeling. And if that's not enough toxic people show up and demand things (I'm not thinking of anything particular in this repo, but I've seen it happen enough). I'm glad you keep supporting the project and I like the way you handle everything. I think at this point better-sqlite3 just works and there are no major issues. So there's no reason to stress about that. I fully understand that there is simply no motivation for you to work on big new features that are not essential. Maybe when these feature requests come up you can make it more clear that the project is essentially in maintenance mode and people cannot expect these feature to magically appear out of thin air. I do have interest in better-sqlite3 and in the future I hope to be in a position where I (or my business) can support it. Until then I'll keep triaging issues every now and then.

@JoshuaWise
Copy link
Member

For those interested and invested, you can now become a sponsor of better-sqlite3 through GitHub! Rejoice! (click here)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants