Imageboards

What is ARGUABLY the best langauge choice for writing an imageboard?

Other urls found in this thread:

github.com/electron/electron
kristaps.bsd.lv/kcgi/
notabug.org/textpunk/textpunk
github.com/bakape/meguca/
meguca.org/a/
chiru.no/cirno/
github.com/Floens/uchan/
twitter.com/SFWRedditGifs

Probably Golang actually but everyone here will just call it a botnet
Its not purely C, an IB written in C will also have to include an embedded database and server stack

An IB in Scala or Racket would be a fun project, but not sure if optimal. Go seems like the smartest compromise between performance and ease of use.


Writing an imageboard in C is not "good", it's masochism. Not to mention that, had we not been Holla Forums, the Meeting Hall of Perfect Proficient Programmers, it would be potentially insecure due to all the obscure bugs C can introduce; but hey, we are better programmers than guys with decades of experience working with C so this shouldn't be a concern.


Come the fuck on, don't be a fag. It's not like PHP or Java translate SQL queries or don't require a runtime written in something else than their own languages. You will need different languages at some point unless you want something useless or are terribly autistic.

There is literally nothing wrong with java.

What makes Go a good choice exactly?
Is the language mature enough? How does it compare to other currently used languages like php, python, ruby and perl?

Why dont we ditch internet browsers and have a dedicated application for the imageboard?

Admittedly I dont know much about programming for desktop since I only do Embedded C but it seems like removing a layer of program would be a good idea and potentially allow for things not possible due to the limitations of internet browsers.

Yeah, nah.

this is a good idea. I (textpunk) already made the server for something like this. been too lazy to make the client.


has a good point. You have a lot of responsibility to implement it safely and securely. I was thinking golang would help (rather than using C).

If anyone is interested in joining in they could join rizon #textpunk

An IB in Racket would be fun to write, but horrible to maintain. Unless someone has made a high performance/availability VM for it.

Scala could be a genuine good choice. Especially if you make sure you project plays nice with existing Java solutions for server management/maintenance.

Why not use C++ with this amazing github made framework?
github.com/electron/electron

It even comes with a CoC!

dude pls

The fuck has RAII have to do with remote code execution? At best it will prevent memory leaks and double free vulnerabilities.

Also

none of what you suggested is a good idea

and regarding "what is" meme, go back to /g/

Hopefully I'm getting a mechanical one this Tuesday :^)

Kek, are there really retards falling for this meme?

Wow, you made an imageboard in *language*
Do be sure to tell us what it offers over the other 10000 unused imageboard software, and how you plan to acquire users.

Scala seems great for this, but Scala is a crazy language that takes a lot of time just to learn what its syntax (not even taking libraries into account) can offer, and much more to use it correctly. If you want to use Scala, you are "alone", in the sense that you better not expect pull requests and patches from anyone else.

Also, I have heard from some people that JVM-based servers do some stupid shit with sockets that end up stressing memory and therefore the GC, so they are quite resource intensive. I am not sure how true this is because I have only ever hosted a small testing website with Java, but I wouldn't want to realize whether this is true or not when it is already too late. Maybe it could be somewhat solved with nginx-clojure, a Chinese (I think AliExpress uses it) nginx module that allows nginx to handle JVM bytecode programs as if they were page generation scripts, but it's not very well known, requires manual recompilation of nginx (good luck if you have to update quickly because of a vulnerability), and who knows if it has a backdoor. I am not even sure if it fixes the problems with other Java solutions.

If you ignore these problems then yes, Scala is GOAT. If I am not mistaken, Twitter uses it, although there are some rumours that they simply moved to Java because nobody there could quite grok Scala.

Anyway, Java 8 as a language is relatively fine. They more or less realized Scala was Java done right, and started implementing some of its star features. Now you can use lambdas, type unsafe operations (sounds bad, but it actually isn't if you use it with moderation), syntactic sugar to make functions look like first class objects and even use Interfaces as Traits to make multiple inheritance possible. Right now, Java is only bad if you were using some exception heavy library or if you have only seen a Hello World example and got scared by the System.out.in.right.left.up.down.println("Hello, new AbstractJavaBeanWorldFactory()!") shit. Good thing direct console printing isn't used in real world programming. Right, nogrammers? :^^^^^)

I don't plan to "acquire" users. Instead I will be selling licenses to people who want to use the software.

Confirmed for never having done any "real world programming"

ASM

I have the skills to make good imageboard software but this is the thing that's been stopping me from doing it for years.

nobody is going to join it so what's the fucking point? I'm not going to set up an imageboard so i can shitpost with my mom

I'd choose JS.

REEEEEEEEEEEEEEEEEEEEEE

Integrate with nntpchan.

Forth

nah I don't like nntpchan

I'd just say use Rust and tell its cancerous community to suck my dick. They can't stop me from using their language.

kristaps.bsd.lv/kcgi/

In all honesty I'd probably use Racket or Golang.

Then no one cares, you have no selling point over any other imageboard and you won't have any users either.

std::net is art.

so we're back to

Well, Operatorchan exists and seems to be doing fine at first glance. In addition, just think about hotwheels pre-exodus. He had no reason to create Holla Forums, but he was ready when the exodus happened.

Tell me when do you need to use direct calls to System.out except when you are trying to make a shitty TUI without TUI libraries. Headless programs use a more specialized logger class, and so do GUI programs.

Ur/web.

I thought the same but didn't bother to recommend since everyone here is too pathetic to program in anything other than PHP or ruby

yeah I guess it could be fun if I had a couple nice people working on it with me.

Is it a meme when everyone who have used them find them to be much better than membrane keyboards?
Sage for irrelevant conversation for this thread.

Because it has libraries built-in for web development, its a low-level language made for web dev bro

Then post the source and someone else will fill in the blanks

PHP+MySQL is literally all you need.

Considering how buggy and hard to maintain PHP based boards seem to be, there has to be a better way...

PHP is buggy and hard to maintain? I've never heard that one.

notabug.org/textpunk/textpunk

it was just a start


do not comment. you don't know anything about creating a chan.

you're site got hacked you fucking retard

Go seems perfectly suited for web back end shit like an image board, and it has continuous support from Google because they have similar use cases.

hi stephen

I don't call staff escalation "hacking" per se. I just simply forgot to change the staff permissions.

you're a fucking liar

your site got destroyed and CSS was replaced with dicks or something

nope, all of it was done from being a global admin. you can change the stylesheets from the global admin panel.

...

nope? it happened. stop

The only problem I have with embedded server/database libraries as used in compiled Chan software like the C based chan I tested is the security risks that might be involved vs using a dedicated web/db server

ok, kid. my logs only showed nginx requests, it wasn't really a server breach.
:^)

pls bost on bbs.freech.net/txt/, and check out that gopher protocol user is working on

t. minimalism/textpunk fanatic

why

this desu
lets go back to bbs, but secure

Assemble. Nothing else is quick enough. That's why Infinity failed.

A DSL for manipulating imageboard data built on Common Lisp for pure meming. Go if you want to use something already specialised for webdev/networking.

1. Make good imageboard software.
2. Use good FOSS license (GPL or MIT).
3. Shill it to existing imageboards and watch it spread.

Done.

I've been working on a simple textboard in C. I have no doubt that you are 100% correct.

Sounds like SQL :^)

I really wish they would rewrite Holla Forums in Nim. It's as expressive as Python (if Python was typed) and as fast as C.

here, been thinking a bit and I believe what we need more than anything is a better backend, I know about NNTPChan but I don't think that goes far enough. The dedicated application would still be nice though.

I was thinking something light that can be run on something like an RPi or Beaglebone would be great, there are probably lots of us with spare ones laying around and running them 24/7 doesn't exactly impose a huge cost on the owner. If we get enough of them then they could form a decent distributed network.

A small image (~100MB) with the size of the average SD card multiplied by hundreds or potentially thousands of units would give the needed capacity while still allowing for a good level of data redundancy. Throw on things like I2P and we would have a good network.

The use of a sandbox is actually a half decent one as with firejail you can make the software have a private IP which probably makes it that little bit harder for an intruder to have remote access.

I'm doing a java one in spark
Spark is fast, low latency, but damn is it not easy to code with. I'm still working on models and controllers. Haven't even started to integrate SQL logic.
PHP is just... no...
C would end horribly
Node.JS while better then PHP is still really shit
Golang would also be a really good option.

I'd write it in Erlang+ Mnesia

I wrote a simple one with lua using lapis. Lapis is a bit shit in some ways, but it's fast and easy.

...

Write it in anything, it is not demanding.

I think I'd go with Kotlin + Jetty + some RDBMS (probably Postgres).
And hire some rednecks for doing the frontend, of course.

Infinity Next, obviously!

erlang

github.com/bakape/meguca/
>High performance real-time imageboard in Go, TypeScript and RethinkDB meguca.org/a/
So far the fastest (I mean what you type appears immediately at the index itself! try it)
also chiru.no/cirno/ uses the same IB meguca

Holla Forums:

next:

meguca:

You have no idea what bootstrap is.
You're also a newfaggot that doesn't know "20% margin" on an imageboard is called the gutter, and it was a populat feature of 4chan-x extensions.
He removed the gutter.
Next is fast.

You forgot the fact that meguca is made for the express purpose of daily animu circlejerks and live chat. They shoehorned in live typing with websockets just because they could, and because it made their animu circljerks livelier.

Also next can easily handle less than 320 requests a second on an instance of comparable hardware to what Josh was promised, without document caching and without the fucked up captcha.

Isn't this a contradiction already?

How is Go lower-level than, say, the inarguably extremely high-level Python?


Let's never write software again, for fear that it may contain bugs.


MySQL has been superseded by MariaDB, and Postgres has always been on the table and arguably better than MySQL.
As for PHP, the only thing that's got going for it is speed. It makes it ridiculously easy to write incorrect code without being warned until a bug hits you in the face.


Python is not expressive. It is intentionally not expressive, so as to be easy to read to people with a tenuous grasp on the language.


So, Google meme language, Microsoft Javascript, and the three-hundredth incarnation of "I hate writing schemas :("db?
I mean, I don't doubt that it works and works well, but it looks like the technologies were chosen because of how shiny and new they are, rather than by how well they've been proven to work for the task at hand.

python + django

>>>github.com/Floens/uchan/

Not even with a ten foot pole, user.

all these tripfags

Are you joking? That would be slow as balls.

I swear to God you better not be the same guy talking about not writing stuff in c because you're advocating the same kind of idiocy. I trust a web browser with a billion eyes on it more than you.

I'm not so you can put your mind at rest.

But I don't understand your argument. You're implying that we shouldn't write any new software (or at least, any new internet-connected software) because it might contain bugs. Isn't that true for any software? Isn't that a risk we must take?

It's compiled and it has pointers.

Also regarding the database choice, ideally you'd handle that through a properly abstracted interface, so you can use different database backends.

Meguca dev here.

Go was chosen, because I needed a language with good multithreading, better performance than JS and already had another dev willing to help. He's working on some really fast thumbnailing libraries in native Go and C bindings to ffmpeg, etc.

Typescript was chosen, because strict > dynamic, if you are working on anything remotely large in JS. At the same time, I did not want to compromise on performance with a language too far off from JS.

RethinkDB was chosen after carefully evaluating several contenders for a few months. REQL is a really nice query language, performance and consistency guarantees are good and I can make fucking database-side update feeds.

Before the inevitable ad hominem card comes up: yes, most of the community is cancer. I hope the last of them move to Discord and /bun/.

Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered. Here's that spam you ordered.

python (:

Go: triple yes.
Typescript: fair enough.
RethinkDB: yes.

Good choices. I wouldn't bother with the indirection of something like Typescript. Get used to writing in Javascript directly in a formal way and you'll be better off. Imageboards aren't huge. But I understand the reason if that's what feels comfortable to you.

Yes, which is more than enough, especially with document caching, to serve Holla Forums load balanced between 6 servers which as far as I can tell was the original plan (and they probably have like eight more servers now thanks to the way posting/serving has to be seperate.)

This isn't even counting their cluster that they apparently are going to roll out to have 8archive be seperate, when the original plan was for Next to do "built in" archiving like 2channel.

The main advantage of TypeScript in my case is the compile-time checks. The more interactive a web app, the easier it is to spring up difficult to detect bugs.


That amount can probably be reduced to one server, if they would just ditch PHP, even more so Laravel. It is quite a common story with Go transitions for example.

pyth off

Holla Forums isn't running on Laravel, because the incompetent cripple thought letting the PHP interpreter loop 600 or so times to calculate a sine for each pixel in a captcha, instead of offloading the work to GD, and didn't take issue with the way his captcha was exposed dynamically.

And no, it really wouldn't be beneficial, everything is duct taped together with NFS because they don't want to spend money on a proper SAN.

We have the owner's gook son throwing away hardware on vichan in combincation with a NIH'd redis written in Haskell, distributed across four or so servers, to soak up the load of vichan's retarded caching strategy of templating and writing 6+ html files in response to a single action.

well, that and the json API endpoints, which are also static files.

Except where it is, because actually the banners are served from a laravel application that the cripple wrote to replace the broken vichan implementation, and the database schema is so fucked and beyond repair that they don't even want to attempt to reintroduce banners back into vichan.

They literally would rather bloat shit with an oauth interface or throw away eight servers or so than actually rewrite vichan, or just fix up the rewrite that they paid for.

And if all that weren't bad enough, "servers" on Holla Forums refer to consumer shit from 2007 that, for some fucking reason, was put into a rack mount. We were running on like six sandyvag i5s and now we're running on 6-8 haslel i7s.
that's how incompetent the owners are, and the company of the main owner, Jim Watkins, was responsible for the clusterfuck that is the 2channel credit card leak.
why the fuck you'd store credit card information is anyone's guess, but the world renowned filipino outsourcing firm known as NT Technology did it.

Wouldn't a cheap, but reliable enough VPS provider be more cost effective? Something like Digital Ocean or Ramnode.

Definitely not, just based on the bandwidth alone.
Jim has a cage in a REIT or whatever that he hosts his various businesses from.