NodeMC Developer Log Number Something
A more developery post
NodeMC has changed a lot from what I envisioned in the beginning. When I first began development, nearly three months ago now (and about 52 git commits), I had envisioned a single product, everything packaged into one executable and probably wouldn't be used by anyone but me and one or two of my friends. However, I quickly found myself leaning towards something very... different.
It started when I started looking for ways to package NodeMC. My plan was to develop a full dashboard then open the source up and provide a few binaries. I had a silly idea it would be a quick project. I started in December, my first git commit dated the 17th (although I think I started on the 16th). I thought about it as a complete thing, dashboard and whatnot all packed into one executable. The first thing that moved my direction to the one I'm going in now was the fact that I could not figure out how to package other files into my executable made with EncloseJS. I made the decision to instead allow people to make their own dashboards and apps around the application.
When looking for investors, it came down to the Minecraft hosts I'd used before and knew they used the old Multicraft dashboard. I have nothing against Multicraft -- I think it's a pretty good dashboard, and the recent UI refresh makes it look much better. However I knew for a fact several hosts didn't upgrade, so I asked them first. I wanted to sell NodeMC to a host and develop it for them exclusively. My first target was ImChimp, whose owner Alex has given me support in the past (and helped run the infamous server-that-shall-not-be-named). Unfortunately, he wasn't interested, and who can blame him, because at the time I had a very rudimentary demo.
I did a bit more work and eventually was able to show off a much more refined version to James from GGServers. He was interested, and invested some money into the project to pay for a VPS to use for testing and hosting the nodemc.space website, and a domain that was on sale (and would lead to my decision for major release names). I can confidently say that without his investment NodeMC would have probably been left as abandonware on GitHub.
Also thanks to James, I was given a list of things that are essential for Minecraft server dashboards, especially if you want to have multi-server hosts using it. This included custom jar files, file manipulation, logins with authentication, and more. Taking this list, I worked hard to implement the features I needed. Below is the playlist for all my dev logs.
Since the beginning of this month, I've been making a huge effort to make MultiNodeMC work, building it out with logins, setup pages, server management, and everything else a server host admin needs. A very interested aspect that I've never given much thought is login and authentication, storing passwords, and keeping it all secure. A huge shoutout to Oliver for giving pointers on how to cut down on security vulnerabilities. He encouraged me to implement the API key feature for NodeMC to prevent unauthorized access of files.
Recently, and what made me rethink my methods of distributing the binaries, was my EncloseJS license key recently ran out. I have been looking at nexe as an alternative, which while it works (and seems to be slightly better at binary compression) isn't great because when I deployed it onto the VPS, it produced an error saying that glibc wasn't the correct version. This made me pause and wonder what on Earth I'm getting into. To clarify, with EncloseJS, you literally just need to send out the binary (and any files not packed into it), not worrying too much about dependencies because there are pretty much... none. That said, I believe nexe may be the way forward for me, and I'll be working on compiling it for all the distributions that I need to.
A question I've been asked quite a bit is will you open-source this? The answer is... no, not yet. I'll be opening up CORE (the basic application) around the time version 1.4.0 of NodeMC is released. I have no plans on open-sourcing MultiNodeMC at this time, however if I ever abandon the project I promise to release the full sourcecode to the public.