Was anyone else surprised to see Kbin being written in PHP?
I don't know if it's due to over-exposure to programming memes but I certainly believed that no one was starting new PHP projects in 2023 (or 2020, or 2018, or 2012...). I was under the impression we only still discussed it at all because WordPress is still around.
Would a PHP evangelist like to disabuse me of my notions and make an argument for using PHP for projects such as Kbin in this day and age?
I'm a web developer of 25+ years. These days python, php, react, vue stack. Formerly, C, C++, perl and assorted other oddities.
Forget what you once heard about PHP. Modern php is nothing like its early days. Modern php has some great constructs that give language expressiveness and fluidity, and that really lends itself to concise and beautiful code.
PHP also has some brilliant web frameworks (eg: Symfony) that make build web apps (be it REST APIs or frontend backends) just a pleasant experience all around. It's dead simple yet extremely powerful. This makes makes development and maintenance using PHP cheap. PHP's testing suite is also ridiculously powerful.
By comparison, I find python web frameworks (Django, flask etc), fiddly and finnicky to use. I also find Python a much less expressive language. By that I mean it will often take me several lines of code to do something that is otherwise a 1 liner in php. It just feels clunky and awkward.
Don't get me wrong. I once hated and laughed at PHP with the rest of them. But PHP has really evolved over the past 10 years, much more so than python has. I look forward to the day Python has a good hard look at itself.
In the meantime, if I need a backend for a website and I'm given the choice between PHP or Python, I'll choose PHP (symfony) every time.
I see a lot of people quick to hate on PHP while not really knowing anything about it's modern usage... but the thing I think of most is how people praise Lemmy for using Rust and diss Kbin for using PHP, but at the end of the day it's HOW those tools are used that determines the quality of something. Language changes, but fundamentals stay the same, and in the end all anyone should care about is whether or not something works.
Programming language wars have always seemed a tad shallow to me.
Second, modern PHP is quite different than 2005 PHP which is about when people started moving to other languages for web development (Ruby, Python, etc.). What you can and should write in PHP today would be almost identical to what it would look like in those languages (i.e. MVC frameworks, ORM for DB access, dependency management with lock files). Many language features were added too such as namespacing which allow for better/modern code organization.
PHP has always had (and never lost) it's dead simple capability to just package up a tar ball, ftp, unzip and just... run.
Would I use PHP today, not unless forced to or for a lot of money. But if it's a language a team knows, there isn't a benefit to switching to something else.
There's still lots of active PHP projects, including new ones. PHP is actually a nice language and much of its negative reputation comes from the years of stagnation during the late PHP 5.x era. Which is long over. I definitely find PHP to be much nicer than JS for backend development, although I no longer use it professionally.
Mature web framework and highly productive language vs less mature framework and emerging language. Personally, I think Rust is the more surprising pick than PHP for this application. A link aggregator is a forum with some frills. Not to mention half of the activitypub implementations that I know of have been in PHP.
I don't know too much about PHP (aside from it getting memed on constantly), but kbin is built using the Symfony framework, which is really performant and mature based on what I've heard from others. Also, apparently ~80% of all websites (that W3techs knows about) rely on PHP in some way
It's not because of word press. Wordpress is complete garbage that should have died ages ago. The reason it hasn't is because it still makes it easy for people to add a customizable site in a couple of minutes.
As for php, the php 5 days are long gone. Php has actually become a good a respectable language since the release of php 7, and things only continue to improve. Php is at version 8.1 and progress is not slowing down. There is even a dedicated full time dev team for php now. PHP is definitely not going anywhere any time soon and I'm more than comfortable with starting new projects using PHP. It happens all the time, especially with support from extremely good and well established frameworks like Laravel.
Honestly if you're starting a new project today, what would be a joke is to start it in node.
After struggling my way through a broken MediaWiki upgrade today, I was reminded once again of just how awful PHP is, both to develop in it and to use applications written in it. What I had to deal with today would not have happened if it were written in a compiled language, because it isn't possible in compiled languages.
Specifically, my MediaWiki settings file contained:
Apparently, this was once required in MediaWiki settings files. After upgrading, though, its presence causes an extremely misleading error message:
Fatal error: Uncaught FatalError: $wgBaseDirectory must not be modified in settings files! Use the MW_INSTALL_PATH environment variable to override the installation root directory. in /path/to/mediawiki/includes/Setup.php:237
My settings file does not contain $wgBaseDirectory. Moreover, adding $wgBaseDirectory = MW_INSTALL_PATH; to my settings file does nothing.
Only after a lot of web searching (and a fair amount of profanity) did I finally find out that the above require_once statement is the culprit.
See the problem here? Interpreted languages like PHP encourage the extremely irritating anti-pattern of using an executable code snippet as a configuration file, which inevitably results in this kind of nonsense. In a compiled language, on the other hand, the easiest way for an application to load settings is by reading them from a data-only format like JSON or TOML, parsers for such formats tend to produce better error messages than this, and the vast majority of such formats don't have an include directive at all.
Had MediaWiki been written in a compiled language instead of PHP, my morning would have been a whole lot less stressful. And this isn't the first time that this configuration-is-code anti-pattern has caused me grief.
It's such an outdated meme to shit on PHP. PHP 8.3 is absolutely nothing like PHP < 5. It's become a full-fledged, performant and secure language. I've been coding PHP since 2005, and I've seen it grow and become incredibly capable. Sure I do recognise that other languages are still more "popular" and respected, and as such I've been focusing more and more on Node/Typescript in recent years, but PHP isn't going anywhere. And its package ecosystem is so much more reliable and stable than say NPM.
Modern PHP is much better than most people expect. It has very little to do with the PHP4 we all grew up to dislike for its quirks and inconsistencies.
That said, I wish more software was done in PHP. And for me it makes a lot of sense regarding the Fediverse. A PHP platform I can put on my existing shared hosting and connect some (sub)domain to it and call it a day. Most smaller/meduim businesses probably have that hosting constellation already around, idling around most of the time.
The entry barrier is just so much slower than spinning up a VPS or renting cloud space somewhere just to test a small instance of something. Sure it scales not as good as your average cloudplatform but for most usecases that is not the biggest concern.
Different product but I love Matomo as a Google Analytics because I can just copy the files to a clients shared hosting, connect a subdomain to it and if it uses Sqlite (also better than it's fame!), I am done already and don't need to create a database even.
As far as I know PHP is still very active and a great choice for new projects. Lots of new projects get started every day in PHP, the language and tools are still in active development as well as frameworks like Symfony for example.
Sure there's lots of legacy crap including WordPress, but there's also no reason not to use it. Just because people wrote a lot of crappy stuff in PHP doesn't mean it can only be used to make crappy stuff. It's very much possible without a lot of trouble to create solid, good performing, easy to develop and maintain applications in PHP.
Funny that a lot of people responded by bashing on PHP, but I saw very little real arguments why PHP is so awful. What makes PHP that bad besides being the target of memes?
I mean "lame", "old" or "dead" aren't particularly convincing arguments.
It's written using Symphony framework and seems to be using the latest best practice. Nothing to worry about here. PHP has its warts, which are being addressed since PHP 7.x. Modern frameworks like Symphony go even further by encouraging best practices when developing PHP WebApps, unlike the dark old days of PHP WebApps full of SQL injections and XSS issues (still is though in the WordPress plugins ecosystem).
I'm mostly a Python guy and used to look down on PHP, but changed my tune since the release of PHP 7.x. If Python has JIT half as good as PHP these days, I would die happy.
Large parts of my particular departments .gov.uk stack are PHP. All modern (8.1+) using established frameworks and to be honest, it's a joy. It's quick to write, easy to understand and very easy to test. The write, run, debug cycle is also essentially instant; although I really enjoy using Go (another bit of the stack) being able to quickly iterate changes is something I absolutely miss when I'm using it.
Laravel + Livewire is some sort of dark voodoo magic. I can write only PHP and have a functioning SPA with push updates and all sorts.
Having spent my college years writing dozens of Node apps, when I got a job writing PHP I actually loved it. It was weird at first, the syntax looks old and gross, and it certainly doesn't have the sex-appeal. That being said, I didn't have to spend hours setting up an environment, I didn't have to think much about how to pull in packages, and concurrency via async/await made my life so much easier. The just-copy-everything mentality also meant I could basically never make a mistake ;)
I write C++ (for games) now and often wish things were as easy as when I wrote PHP.
PHP lost a lot of popularity yes. But developers still use the major PHP frameworks, those solve a lot of the issues many developers had with PHP. On the StackOverflow survey Laravel was still used by 7.5% of the responses and Symfony by 3.2%.
Currently I’m actually taking over a website that was written with Laravel and rebuilding everything in SvelteKit.
Not too surprised. I know PHP has a reputation these days of being old and crufty but at the same time there hasn't really been a killer replacement yet for the same use cases where PHP is/was used. React and Vue are all the rage for frontend work, but their paradigm is all about single page apps which is a bit limiting for something on the scale of Kbin. Other backend frameworks like Django tend to be fairly opinionated and lock you into developing in a certain way without providing a large enough benefit to make it worth it.
IDK maybe there are better frameworks that I just haven't heard of. But whenever I go to start personal projects, the options seem to be Express, Flask, or PHP, all of which have their own tradeoffs. Personally I lean more towards Express or Flask but it's not surprising to see people stick with PHP.
In my opinion, only the most elite (in all the wrong ways) people care how you build your app.
PHP has flaws, sure[1]. But unless you are working on the app itself (or again, you are horribly elitist) it does not matter.
What matters is that the app is good. If the app is good, it doesn't matter that its done in PHP, what matters is that it works.
EDIT: I guess it also matters if you're selfhosting the app.
[1] I think PHP is overhated. As a stateless language it lacks a lot of complex features (and thus, admittedly, might be questionable for a project as large and complex as kbin), it has some questionable design decisions, but it's really not as bad as people make it out to be.
Modern PHP is quite performant and nice to work with and it's still improving! Also frameworks like Laravel is very established.
When comparing the time when I use PHP and JavaScript, I love the simplicity and versatility of JavaScript but PHP's strongly typed (with runtime support) and object oriented language often make more sense imo.
I think the strong benefit of using JavaScript for backend comes down to being able to have unified full-stack codebases, one language fits all kind of thing.
I know it sounds childish but PHP is lame as hell same as java. Rust or go would have definitely been a cooler choice. I mean PHP gets the job done, but still....
@WatTyler No really. I have seen that PhP developers are moving to other languages, but at the same time I have been involved in new projects using it (I'm not a PhP developer).
Modern PHP is supposedly pretty alright but yes I was surprised and a bit disappointed, I would have liked to contribute but I'm not gonna touch PHP in my free time lol.
As a single developer taking on a passion project you go with what you know.
Also it must have been near impossible to have foreseen the insane explosion of popularity that has happened here the last few days.
Even then if you build something for passion you choose something that make you happy to use, however esoteric or impractical that may be to others, or how it would be perceived. Most probably it was never thought to be exposed in such a massive way, and certainly not as soon after the project was started (we're talking month(s) here).
Anyhow, for this project from the looks of it it is working fantastic.
Personally I've not used PHP for years but now I'm actually intrigued to take a new look at it.
Nowadays is only a matter of community and resources related to the language that one can find online. Php lost popularity and gained this image as a bad language, this brings a lot of devs to not use Php without a real factual reason. Is just not cool or they feel ashamed to tell that they work with Php.
If a dev works with typescript is more easy to find a lot of cool and pleasing resources, videos, articles. With php, for the reasons explained above, the stuff you can find it does not feel so cool as other mainstream languages. And here the game start over, for this reason less people use it and so on. This give to the entire php ecosystem a kind of "old" feeling and a lot of young devs just don't like it.
But rarely there are real reasons. With php 8 for sure there are not a lot of reasons to blame the language to be a bad language.
Until a couple of years ago I used to work with the last versions of php and I actually never felt the urges to redactor everything in some other language.
I am sure that php has limits, but in the same way as all other languages have their limits: they are just tools at the end.
Stop blaming php. Blame WordPress instead! :D
But I would ask he opposite question: can somebody make an argument to not use php?
From a dev point of view.
There's a sister project at my work that still uses PHP. It did surprise me, but it's very well written and easy to maintain. I reckon php will be around for a while yet.