infoforcefeed / OlegDB

Enough works to use this in production

Home Page:http://olegdb.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Frontend language poll

qpfiffer opened this issue · comments

I'm growing a little dissatisfied with the Erlang fronted, for reasons that I don't really want to explain. This is a general discussion/poll ticket for figuring out what to do about it. If you care, voice an opinion ad argue, here are the choices:

  • Keep Erlang frontend (rewrites are expensive, and OlegHQ doesn't have that much money)
  • C++
  • C (We already have a shitty HTTP server buried in the git history for this one)
  • Go
  • Haskell
  • Something else

My vote is for C/C++. The erlang frontend's port-driver code is mad wonk and needs to be removed. Also the bash script that is the actual executable annoys me.

Obviously this is a job for Node.

On Sep 14, 2014, at 9:29, "Quinlan P." notifications@github.com wrote:

My vote is for C/C++. The erlang frontend's port-driver code is mad wonk and needs to be removed. Also the bash script that is the actual executable annoys me.


Reply to this email directly or view it on GitHub.

The current status for the chosen languages is as follows:

  • Keeping Erlang means @qpfiffer is likely to remain the only contributor to it, as the only member that knows and wants to deal with Erlang and all its hippities.
  • Moving to Go would likely mean making Goleg/d official and up to date. @kyleterry could also work on it, if he decides to do so.
  • The haskell experimental frontend was never finished because I hate GHC FFI. If somebody else does the FFI part, I could work on it no problem (it currently uses code from Ketchup, which I currently mantain and has the Tumult® Seal of Non-shittiness™).

My opinion on them:

  • I don't want to deal with Erlang… at least not before I go completely insane (I'm near that, though)
  • C/C++ would be a tremendous learning experience for me to learn about forking/sockets in the POSIX world (as Oleg was a learning experience from me for everything else POSIX, as someone who comes from the Win32 world) but it's quite risky and could lead to really inefficient code if not handled correctly.
  • Go would be a piece of cake to port, and we'd still have micro-threads which are incredibly handy.
  • Removing Erlang as a dependency would be a really big goal for the "No dependencies / Always be compacting" objective, so I'm against replacing Erlang with Haskell as they both involve really bulky dependencies.

My vote is C/C++, unless time/performance constraints come in, in which case I'd vote for Go.

As I don't think we will have performance issues, I think we should go with Go since it's garbage collected.

Plus Go has a very nice built in http server.

Voting for Go as well.

So that looks like 2 for go and 2 for C/C++. Hmmm.

As I said earlier, I'd be ok with Go as well, but I'll wait to see if someone else votes C/C++..

@Hamcha I want to do C/C++, so it can go either way at this point. I could make an executive decision and just pick one, I guess.

We should also take into consideration who is going to work on it. Since @qpfiffer is doing 80% of the work we can be sure that if C/C++ gets decided it's going to get done. I'm gonna work on it if either C++/C, Go or Haskell (or some other tech I know) gets decided, I don't know about @colby and @kyleterry.