If anyone is looking for help either developing extensions or work on
internals/PHP core then the PHP chat room ('Room 11' aka R11) on
StackOverflow quite often has some internals contributors lurking
around, waiting for interesting conversations to take part in:
There are guidelines for do's and don'ts here
https://room-11.github.io/ but the main thing I would strongly
recommend is that asking questions is a way more effective of gaining
knowledge than "declaring solutions to a problem", particularly when
not everyone agrees what the problem is.
Unfortunately being able to write in StackOverflow chat does require
20 fake internet points (aka reputation). If anyone is desperate to
join with a specific question and doesn't currently have enough
reputation, feel free to contact me on Twitter (@MrDanack) and
something can be arranged/manipulated.
Thoughts on English + communication problems
I realise I am lucky to be a native speaker of the language that
happened to be the one most widely used for international
communication, and so I've never had to endure having to ask technical
questions in a language other than my own. Having said that ...
Most people seem to underestimate their English skills
Non-native English speaker: I am awfully sorry at the terrible state
of my English abilities, as for the English language is not my mother
tongue. I hope you forgive me for every foolish mistake I make.
Native English speaker: lol, it okei.
Most of the time, I am only reminded that someone is not a native
English speaker, when they explicitly say it.
There is no standard English
There is 'quite' a bit of diversity in how English speakers talk. Even
amongst native English speakers, there may be a small amount of effort
needed by the recipient to understand what is being said.
In Britain, it's always on the recipient to put the effort into
understanding, or apologise for not understanding with something like
"sorry, I don't quite get what you mean."
Anyone who thinks less of someone else for not being fluent in
English, probably isn't someone you would want to interact with
There are more fundamental problems
There's a couple of patterns I see, that seem to get in the way of
having productive conversations.
Some people write
like this all the time
not writing fully formed thoughts
just typing as they think
putting words in the chat room
long sentences into comprehensible thoughts
Other people seem fundamentally unable to actually ask a question.
i.e. they will describe a problem they have (sometimes with some code
attached) and they expect someone to be able to read their mind, to
see what precise question they want help with. Even when someone says
"what is your exact question?", they don't seem to understand that a
question needs to be asked, before it can be answered.
There are other patterns, but this email is long enough already.
But if anyone wants advice on how to communicate better, particularly
if you're feeling frustrated about not feeling able to get your point
across, feel free to ask me on twitter or Room11 (I check those more
frequently than email).
Other resources for internals development.
At https://heap.space/ there is an instance of OpenGrok setup for PHP.
OpenGrok is a search tool for code, and this site allows searching and
navigating through various versions of PHP.
The PHP Internals Book (http://www.phpinternalsbook.com/) is the most
comprehensive resource for learning how PHP works internally, and how
the functionality can be updated. I'd recommend reading all of it, but
here are a few choice articles which are pretty vital to read.
- Learning the PHP lifecycle:
- Zvals: https://www.phpinternalsbook.com/php7/zvals.html
- Zend Memory Manager:
Zend have a guide to 'Writing PHP Extensions' here:
https://www.zend.com/resources/writing-php-extensions which apparently
might be more up-to-date on some parts of PHP's internals.
Thomas Weinert has a comprehensive set of examples
(https://github.com/ThomasWeinert/php-extension-sample) of how to
implement features in PHP internals, where each branch implements a
single feature. The way to use this set of examples is to find the
branch that contains what you want to implement, check it out, and
then look at the commits in that branch to see what was done.
- the gentlemen in the second video were from less than 50 miles away
from me. I am reasonably certain I understand spoken Dutch more than I
understand them. I do not speak Dutch.