So, the biggest potential cost saving solution seems to be the porting of the codebase so we can run on open platforms.This also aligns with Voat's pre freedom principals, and makes us more enticing to funding from similarly aligned groups like the free software foundation, potentially. While the git repo for voat is considerably outdated, there's little harm in poking around and familiarizing ourselves with the codebase. Other than donating and reaching out to potential donors, it seems logical that the best thing the community can do for the site right now is put our skills to work. I'm not the best programmer, I'm not a project leader, and I'm not someone with a ton of web development experience. What I CAN do is grunt work. I'm sure there's a number of users on the site in similar shoes that can cobble together a new stack for voat, even if it ends up needing a bit of outside help towards the end But we need someone to manage us. There have been a couple of comments pushing for such a community effort, but no where that has been explicitly marked as dedicated towards it. For initial planning purposes, I'm setting up this thread to accomplish that. Anyone interested, please post a list of technologies you are familiar with, level of experience, how much time you estimate you can put towards this project, and anything else you think might be relevant. I've also pinged a number of people who I know to be developers active on voat, or who showed interest in this in other places.
We especially need project leads, both someone willing to manage this clusterfuck, and people willing to lead particular subgroups when it comes time to figuring out who will actually work on what.
We need an organizational and code management structure. I suggest Git for code and trello for goals, with a slack channel for communication
We need people to verify code submisisons, both to look for potentially malicious code, but also to submit code to a second round of unit tests, and quash as many bugs as possible BEFORE we get too far past a particular area of the site's infrastructure, as well as ensure that everything is running as efficiently as we can make it. No use redoing the stack if it takes WAY more power to host the damn thing.
We need people who have the hardware and the knowhow to TEST our stack, once its in an alpha state, because unit tests aren't enough on their own
and finally we need people who can tap away at their keyboards, and produce functional code.
Fuck, there's probably a few roles i'm missing, but point is, Putt is doing ALL of this right now. He isn't going to work on porting when he's trying to keep us running, but the longer we wait, the harder this will be. So lets get started.
We also need to develop coding practices and standards. I think all of us can agree reading someone else's code that's inconsistently formatted and lightly commented is hell. We want to make any code we write as auditable as possible, for each other's sake, and the sake of the site's future if this project gets anywhere.
@VoatSearch @roznak @AnmanIndustries @JunOS @Ywis @ohnoitsaninja @Professor_de_la_Paz @1moar @TeranNotTerran @ShowMeYourKitties @bikergang_accountant @Caesarkid1 @derram
view the rest of the comments →
trentlapinski ago
Former startup CEO who sold for an exit, was one of the first people to bring responsive web design to WordPress.
Currently a VP at a cloud computing and container management and automation startup.
I'm well versed in business development, project management, web development, system architecture, and devops. Although I am more of a tinkerer big picture kind of guy, and no longer code or consider myself a programmer.
My immediate thought process from what I know so far is: is either get the fuck off Azure, or contact Microsoft and see if they're willing to sponsor Voat for ad space.
Secondly, you should be able to virtualize Voat's current setup in a Linux container (Docker) without having to really touch much of the existing code (even though you're running .NET). https://github.com/dotnet/dotnet-docker-samples
Once you get the .NET code base running in a Docker container you aren't married to Azure. All you need now is a host that supports Docker, which is pretty much every major cloud provider. Once you're running in a Linux container you can pretty much host anywhere. I would also probably de-couple the SQL database and put it in its own container so you can scale the DB separately.
To save money on cloud hosting I highly recommend OVH, as they charge about 40-50% less than Google Cloud and AWS, and have cheaper bandwidth, memory, etc. Linode, and LiquidWeb are other options to take a look at. Or if anyone else knows of a cheaper data center with high availability in multiple geolocations?
This is maybe a week or two of work for 1 highly skilled devops engineer, maybe less, and will cut the hosting costs in half pretty much overnight.
Potential solutions to look at Rancher.com, mesosphere.com, https://kubernetes.io, or even https://traefik.io which you could install at the tech stack level and use as a basic devops management platform (although I'd seriously take a look at Rancher or Mesophere first).
Once that's done you can move Voat to any major cloud provider without having to rewrite the core code right now.
Phase 2: Core code rewrite.
Obviously it should be discussed, but an open source language with a larger developer community is recommended.
I would probably go with a NoSQL based solution as well for the DB, but also needs to be discussed.
What I can recommend from a web development standpoint is essentially start the rewrite by building out a core micro-service architecture and REST API. I would then rebuild the front-end using React, or another popular Javascript framework. Then you can continue to use a container based approach by hosting the core API in 1 container, DB in another, and front-end code in another then scale and load balance each appropriately based on need.
Take a look at http://www.telescopeapp.org - hell its open source we may even be able to borrow some code or ideas.
The major challenge with a rewrite of this style is migrating the existing DB into a new DB, but its doable.
As I said, I'm not the person to program this personally, but based on my experience this is the approach I would take. I would also open source the fuck out of all of this, and I also have a few monetization ideas.
Phase 3: You could allow people to launch their own Voat websites and sell them as a service at their own custom domains. Figure out what the hosting cost is, and double the margin and sell it as a SaaS. Then use the core API to integrate everyone into a single login / account management system. This would also allow you to scale individual communities separately, and put the burden of fund raising and payments on the community organizers. Obviously you will still have free subverses, but this approach would give the large ones the ability to launch their own domains, and cover their own costs, sell their own ads, etc. Meanwhile, Voat.co itself is merely an aggregator, and universal account management system, and SaaS provider.
RiverWind ago
Thanks for chiming in, /u/trentlapinski.
I liked where you characterised Voat as an Aggregator and Universal Account Management System. I also liked how you raised one possible means of distributing Voat by having individuals (Moderators, perhaps) host Subverses which they particularly supported. (Though I don't think that would be as strong a solution as using a blockchain.) I objected to most of what else you proposed, mainly on the grounds that it did not prioritize establishing and maintaining Liberty through the use of Free Software.
trentlapinski ago
Don't get me wrong, I think whatever we do should be open sourced. I completely support a free and open Internet.
I was merely suggesting a possible business solution that would create value for large communities, give them more freedom, while also allowing Voat to cover their hosting bills. That doesn't mean I think this should be the only solution for hosting a Voat community, it would merely be a solid service to be able to offer to the community to help offset costs, and create sustainable revenue. That doesn't mean the project can't be open source, and that others could go take the code and do what they want with it.
As for blockchain, not opposed to that as well but thats a whole other engineering challenge.