"There were a bunch of old devs opposed to adding this documented "processes", saying that "open source is about fun and processes kill the fun". But to me that was always shining through that argument was that there is always an implicit process and that process is usually ideal for the current people "in power"."
Jo Freeman has an essay called "The Tyranny of
Structurelessness" which focused on how this issue (lack of explicit process) played out in left-wing political movements in the 1970s, and she does a great job of explaining how the lack of explicit process allows those with implicit power to keep control of things.
"Contrary to what we would like to believe, there is no such thing as a “structureless” group. Any group of people of whatever nature that comes together for any length of time for any purpose will inevitably structure itself in some fashion. The structure may be flexible; it may vary over time; it may evenly or unevenly distribute tasks, power and resources over the members of the group. But it will be formed regardless of the abilities, personalities, or intentions of the people involved. The very fact that we are individuals, with different talents, predispositions, and backgrounds, makes this inevitable. Only if we refused to relate or interact on any basis whatsoever could we approximate structurelessness — and that is not the nature of a human group."
Sensio Labs (Symfony) announced a $7 million investment yesterday:
If you can afford/achieve anything better than "drag'n'drop" your "index.php" there, and open your browser to "test if it works", do it.
Except, of course, you have to maintain tons of legacy stuff already written in PHP.
Well, clearly the engineers working on Facebook's PHP (and several other large projects, from Yahoo! to Wordpress.com) aren't "begineers" neither looking for "cheap, hassle-free hosting".
I don't buy the "it's so crap, it's ONLY used because of cheap hosting" argument.
It's also a pragmatic language, with tons of libraries and features for web use.
Or take the JVM: the VM is a masterpiece of engineering/programming and has a lot of libraries availably, not only for web stuff, and supports many languages on top of it.
Or, if you have some experience in the .NET world and know your visual studio, you can literally drag'n'drop your website together out of layouts and components.
So far you can't share PHP code seamlessly between server & client (-> JS), your runtime doesn't run quite everywhere and allows you to use the language you like (-> JVM) or is preinstalled on every windows system today and has an excellent visual development tool (-> .NET).
Yes, every language and ecosystem has it's flaws, but mostly they have also some single strengths that outweight the disadvantages. When you must nail down what PHP's is: I say incredible cheap hosting, and tons of legacy stuff (ironically often dropped on shitty cheap hosting platforms).
You may find more stuff pro/con for all the samples i mentioned above, but i hope you understand the core problem.
But yeah, in 2013 there are really much better languages than PHP available; if you want a similar-feeling replacement Python or Ruby are much saner, if you're willing to step further afield there are wonderful modern languages that push the boat a bit further (I'm in love with Scala at the moment).
I realize posting a 40 minute video to support my point is a bit lazy and unfair but you seem aware of some of the key points fortunately.
First let me admit that we have a php legacy codebase, so porting that to another language, even if we had a strong desire too would probably be prohibitive.
I definitely feel super productive in PHP. I've been able to knock out a new app feature in 1 day, which to build the equivalent in Java would have been at least 5. It's very easy to write code fast, and then come back and refactor it later. Using PHP Storm as an IDE with a very good debugger and PHPUnit to build a suite of tests for everything we do means that gotchas are always eliminated before production, and with PHP I find things are either working or completely broken with not much in-between.
I guess having a strong unit test suite, or really it's more of an acceptance test suite, is something you can do in most languages, but the assurance it gives us enables us to share large code bases between teams, doing frequent merges of features. You can have large numbers of programmers with varying abilities and even programming styles hitting the code without too much headache.
The talk also mentions state. Not sharing state between requests except explicitly. You don't have to worry about complicated background threads, resource leaks, memory leaks. Even crashes are less of a big deal since you just lose one request to it, not the whole server like with Java et al.
PHP's array is a swiss army knife with lot's of useful functions for transforming data, which is a lot of what we do on the server. I can map, reduce and filter data. I can dynamically handle arrays or single objects in the same function, or handle arrays of different kinds of data without any fuss. In short going from what I want to happen to having it happen is very fast.
Background tasks are queued and run on other systems including some written as bash scripts or in Python, Go and node.js. These languages are a better fit for these jobs and so we ditch PHP for those.
What Facebook is doing with HHVM (run faster) and Hack (add type safety as needed) is pretty interested and we've adopted the first but not yet the latter.
Hopefully that's flavour of what I like about using PHP. I have not written more than a few lines of Ruby so I cannot comment on that. I have done some maintenance work on a Python server but not with a modern framework. I'm not sure Python with a modern web framework offers all of the advantages I've mentioned above but I am open to being enlightened on that.
They don't tend to actually "get" me, but I feel like they're always there in the back of my mind, taking up space that could be used for something more useful. It's not a huge difference, but it's there.
> I definitely feel super productive in PHP. I've been able to knock out a new app feature in 1 day, which to build the equivalent in Java would have been at least 5.
Well sure, we're talking about a very different style of language. But I think Ruby or Python get you the same thing. Certainly you have map/reduce/filter (and Python's for comprehensions go one step further), and dynamic typing.
> with PHP I find things are either working or completely broken with not much in-between.
Interesting; what bothers me the most when using PHP is that it feels easier to introduce security flaws than other languages. Not that it's hard to code safely, but sometimes the most obvious way to e.g. access a database is the unsafe way (which is partly just because there're a lot of old libraries and bad advice floating around). Charset handling is a similar area; I've seen lots of PHP code that appears to work fine but goes wrong when given non-ascii characters. It wouldn't surprise me if there were similar issues with timezones, though I haven't dealt with them enough in PHP to be sure.
Well in my case we work on mobile apps so the client doesn't do anything unexpected with respect to character sets and time zones. Probably that's harder when working with random web browsers. Security wise I agree with you it's easy to do wrongly, especially with the simple DB API's that can be used naively.
So, them re-implementing the runtime is no more an argument against PHP than using PyPy instead of CPython or JRuby instead of MRuby is.
Not to mention that have they been using say Ruby instead of PHP, they'd have the same, or even worse, problems regarding getting the most performance out of their runtime.
So this is totally orthogonal to the issue of PHP's merits -- only has to do with performance, so the same things could have been said for Python or Ruby that are in the same ballpark as PHP in this area.
Yes, especially during development. I am toying w/ a PHP implementation on top of luajit, written in PHP so it may be more hackable and bootstrapped.
The real problem is PHP fails to define a specification that implementations can follow (though they probably weren't prepared for the current situation). Sadly the runtime becomes the spec, and with such a large standard library, it's hard to predict what happens in dynamic languages when you send in something undocumented. In order to work w/ the myriad of PHP projects out there, unfortunately you have to mimic the undefined aspects.
We are headed towards a more fragmented PHP than we already have. I've had enough problems changing PHP versions (regressions and undefined standard function changes), now with HHVM, you will have one more fragmentation piece. I'm all for different implementations. The saving grace I've found is all the language phpt files (but doesn't help w/ parsing and many compile-time errors).
A PHP parser written in PHP that generates bytecode for LuaJIT or HHVM's JIT-runtime would be cool. I was thinking about this too. And it would be fun to hack around :)
FB's HHVM JIT and its bytecode format "hhir" is explained is the following recent blog post: http://www.hhvm.com/blog/2027/faster-and-cheaper-the-evoluti...
LuaJIT2 and DynASM: http://luajit.org/
[edit:] I found your repo: https://github.com/cretz/meh ...interesting, I am reading the code atm
HHVM exists. You can benchmark it against Python and Ruby today. What are the results?
In any case, Python has things like cx_freeze that can be used to make apps close to compiled performance. And Python is not a single monolithic implementation. IronPython running on .NET for instance. PyPy has a VM with JIT.
In any case, few people these days are worried about raw performance of apps. There are easier things to fix with page load times, getting rid of resource locking, and so on.
HHVM will extend PHP's useful lifetime but outside of Facebook, Drupal-based sites, and WordPress-based sites, I don't see it growing in any significant way.
Performance oriented pythonners go with pypy, numpy, cython, numba, etc. Each of them gives a very significant speed boost.
I have no idea how "good" "normal" PHP code is written compared to Ruby/Python.
There was a measurable performance increase, but it was disappointing overall. Perhaps my initial hopes were too high.
Our company is small and engineering/ops resources are very limited, leading to a lot of pragmatic decisions. After a few days of experimentation, I decided that HHVM was promising, but for us it's not yet worth the extra ops infrastructure.
We get much bigger improvements tuning other pieces of our stack.
I get why they don't but that's why PHP is just the most popular mediocre language.
There should be scheduled non backwards compatible releases for every language (say every 10 years) that's the only way they can improve and not just get replaced when better ones come along.
Universally, they were brittle and terribly insecure.
Sucks that some people are still stuck with 2.7 but it's definitely worth upgrading if you can.
And you're very rude please go away.
Backwards compatibility is a noble goal, but it should be done by add-ons, not core features.
Apple constantly throws out features to keep the core product leaner. Is this annoying and disruptive to the end users? Yes. It just means that new adopters, which is their constant goal, do not have to deal with this legacy.
X11 support was dropped, but you can still get it through third-party XQuartz. PowerPC code doesn't run out of the box, but there are emulators that work just fine.
PHP should show a little more confidence in itself.
Lets have some data.
for python users (http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te...)
for ruby users