chmllr / notehub

A pastebin for markdown pages.
MIT License
273 stars 33 forks source link

Long term hosting strategy #23

Closed ghost closed 8 years ago

ghost commented 9 years ago

I am interested in hearing about your long term hosting and/or monetization strategy.

I really love this service and would like to be able to rely on it to store markdown articles indefinitely. In my experience the biggest obstacle to this is hosting costs, sites start out great, but then if they don't have a viable business model they are shut down or go offline eventually.

You say you are hosting on heroku free tier. Are you storing the data there as well? If the site became popular would you find a way to finance the increased hosting costs and scale the service?

I love this service and would love to see it succeed.

Thanks!

chmllr commented 9 years ago

Hi, good question. Let me shed some light on my long-term strategy wrt. NoteHub.

NoteHub was born as a simple programming experiment and initially I had no plans or thoughts about what I want to it to become. After it was finished, I let it online and minimized the amount of headache it can cause. (I actually still pay for the domain only.) Due to good testing and very careful extending with new features I managed to make NoteHub a very simple, robust and reliable service.

Over time I realized, that this is exactly those things, which make NoteHub special in the today's internet. I also decided to commit myself to keep it that way. Sometimes, when I have time and feel creative, I extend NoteHub with minor features. The priority get those features, which increase the reliability for the end user. For example, last year, I implemented note compression and internal cache, to decrease the storage footprint and to increase the response time of accessing a note. I also introduced a rule, that all notes, which get less than 30 views in 30 days, will be automacially deleted, to get rid of the "hello-world" and "test" notes people leave, when they discover the service. This saves space on the free DB hosting. This rule works quite well, because any note which was published somewhere gets at least 30 bots in the first week. These improvements allow me to host NoteHub with very limited resources, so Heroku is still good enough. Also, I managed to render a note page as a 100% static page, which makes it displayable everywhere with zero JS.

All notes are currently hosted in a free RedisLab DB, and I pull a backup snapshots every few months. (I cannot do it on a regular basis, as it is not possible with my free plan). So I'm actually prepared for sudden Heroku / RedisLab fallout and would lose only a fraction of data in the worst case.

Now, a few words about the future plans. My next big todo, which I plan for the end of this year or maybe next year (depends on other personal prios) is to completelly rewrite NoteHub with Node.js, which would make it faster and more portable (if I decide to move to a new hosting). I'm not programming Clojure anymore, so I also want to synchronize the technology of NoteHub with my current preferences. Besides this, I have no plans to expand it to something more, than it is at the moment and I definitelly don't want to monetize anything.

I had some thoughts already, what would be the best way for NoteHub to evolve, if it will get so popular, that some day there will be a need for a payed hosting. Good news is, that the challenges caused by the growth can be only of "linear nature": the traffic will increase, I'll need more storage, but that's it. All of these issues can be effectively managed today without big financial resources. In this case, I will do anything possible to keep it ad free and to avoid wikipedia-like begging for donations. One idea I had was to provide payed service for "power" users. For very low cost (like $5 / year) a user would get features like (just a selection of some ideas):

As you see, after three years of NoteHub I still didn't lose my interest and I'm commited to keep NoteHub as an outstandingly reliable service. And altough I don't look for any huge growth, I'm prepared (at least, mentally) for the next step.

I hope I could answer all of your questions.

ghost commented 9 years ago

More than adaquate answer at this point. Of course there's always uncertainty about the fate of a project moving forward, but this is good to hear.

Fremium is tricky and usually requires more features. With fremium you have to commit to being a power user or a casual user. Paying customers must pay more to subsidize free tier and developers need to implement more features to justify the paid tier.

I like the nearlyfreespeech.net payment model because it's accurate, dirt cheap, and predictable, but implementing payment processing and tracking usage and account balances would also require work to implement.

You could beg for donations when people are going to publish a new note, but not while they are reading posts. I think this would be practical and not annoying. A nonintrusive donation link from the landing page might be enough to help fund your modest hosting needs, should that become necessary.

Worst case you could truncate the content to motivate people to pay for the service. That way the link is still working and there's a preview, so people aren't completely lost and disappointed. Also, potentially either readers or publisher could fund the hosting for the post, and you wouldn't have to have user accounts. This is better than a paywall, because anyone making a donation is helping to fund the hosting for everyone that wants to read that post. At the bottom of the article there could be a link to help fund the hosting, this link could show the exact details of traffic and funding for that post so users can tell whether their donation is needed to help fund the hosting for that post. Perhaps the link to fund the post would only appear when the hosting funds for that post got low. Just some ideas. It's probably too cheap to make any of this necessary.

Anyway, thanks for the response.

chmllr commented 9 years ago

I like all of your ideas.

They also remembered me, that in the past, I was also thinking more about "power" notes rather than "power" users. This could be merged with your idea about asking for donations at the publishing: the user could donate and enable the "power" mode with several features I described above.

This also could be combined with the NFS payment method: you pay once and then your deposit will decrease only if you publish power notes... I don't think the tracking is complicated at this point, but what I don't like is that i'd need to identify the user. And if I won't ask for the email, I could never provide password recovery. But then, the service gets non-anonymous and definitely not "hassle-free" anymore. But I'm sure we can work out this dilemma.

Also, what I expect, is that even if I have to move to a low-cost virtual server first (there are servers for like $3-4 / month (!)), the problem would disappear for several years to come, because I only have 25Mb DB space at the moment (I'm at about 36% usage) and this storage space would increase to at least 1-5 GB. The processor and RAM wouldn't probably increase much in comparison to Heroku, but even then, I'd rather experiment with further technical optimisations to decrease the load, which I actually consider as a very interesting challenge and would have a lot of fun to tackle it. (It cannot be hard to serve static content)

Due to these low-cost hosting, even with a simple Donate button on the landing page I probably would be able to cover the costs, and if not, these is not the amount of money I care about. I care much more about the time spent on the project, because this resource is limited much more.