Hi! I have promised to write up this RFC about the service plan in my mind, codenamed "My php.net".
What would be "My php.net"? --------------------------- My php.net would be a user preference service. Utilizing this, every user of the php.net site and mirror sites (plus maybe other php.net subsites, eg. bugs.php.net) would be able to set his/her own preferences regarding a wide range of things. The starting point for this was the "mirror language", which can be set by mirror maintainers now, and affects the URL shortcuts on mirror sites. The idea is to go beyond that, provide the user with control, and broaden the range of things available for customization. Customizing the php.net site ---------------------------- The core offer of My php.net would be to set the preferred language [PL from now], and the preferred mirror site [PM]. [PL] would be considered in all kinds of operations, when a language selection can be made (documentation search, URL shortcuts, book page display, documentation downloads page language focus display, etc.) [PM] can be used to redirect the user to his/her preferred mirror site in some cases (read on). Requirements ------------ - Settings should work on all php.net mirror sites, probably even on unofficial ones. With the possible (or partial) exception of www.php.net (read on) - Caching should not be sacrificed significantly. That means, that most of the pages should look the same, regardless of the user settings. This means that things like previous search term display in the search box, or manual page display modifications would not be allowed. If we enable users to set anything that modifies the display of most of the pages, and that means different HTML code sent out, then we can throw out caching, as every user need to get his own page instance. That would bog down servers. - Preferences should work without any hassle (no complicated authentication for example) - Do not increase traffic on http://www.php.net, continue the trend of driving traffic out to mirror sites Implementation -------------- As the above requirements say, it should be easy to use, and work on all mirror sites. The easiest way to go is to use a cookie to store the information. Then there is no need to log in, and as all mirror sites (with one exception) are under php.net now, the cookie can be set to be available for all mirrors (like the cookie you get when you log on to master.php.net). The cookie should be very small, and set for a long period. There is plenty of space in a cookie if we code the settings in a short form. [PL] would be considered as part of the soon to be used new unified language chooser (phpweb/include/langchooser.inc now in testing phase). That code correctly show you how the different environments are taken into account, when the language to use is selected on any php.net page. The place for user settings is also marked. [PM] has it's own great value. First of all it would be a default mirror for downloads, so users will never need to select a mirror site again for downloads, if they have [PM] set. For another neat thing about this, read on ;) My.php.net ---------- Well, the settings need to be set somewhere, so I thought about adding a my.php file to phpweb, therefore the settings page will be accessible with php.net/my. I also thought about making this even shorter and cooler, and ask for my.php.net to point to this page. Then it seemed much better to make my.php.net an entry point for the automatic mirror selection, and redirect any URL accessed there to that same page on the [PM]. This address would also be used for the special CHM, eliminting the need to set the preferred mirror there. As I have thuoght about this, error_docref was addeed, and php.net was choosen as the default for that feature. As most of the guys won't modify that URL in php.ini, this has driven more traffic to php.net, though probably less traffic to php-general :) Therefore I thought about making php.net the mirror redirection server. This means that if you would like to access a page on php.net but you have a different [PM] set, then you are redirected to that site instead. That would drive much traffic off php.net again :) The other point worth considering here is that if we add [PL] as a setting, then php.net gets more traffic, as users don't need to go out to a mirror site for easy shortcuts to see manual pages in their native langauge. Therefore we need to disable [PL] on php.net, or remove php.net from the selectable mirrors list, and always redirect from php.net. The later is a bit too agressive, I think the former can do what it is proposed for... Or else, if the php.net systems team does not care about the increased traffic [PL] will cause, we can leave it to work on php.net normally... Summarizing this section php.net can be the redirection server, if you have a different mirror site set in [PM]. Other mirrors won't redirect to [PM]. This also makes my.php.net unneeded, or it can point to the settings page on [PM] :) More settings ------------- We can add more settings in the future, as these two core ones are added and work ;) Some ideas: - Default bug email address to submit bugs with - Default user note email address / name to submit notes with - Do fall back to a mirror site in the same country if [PM] is disabled for some reason, or choose a random mirror site instead - ... Workaround ---------- While the second requirement above is the most restrictive, some pages will look differently tailored for user preferences, like the docs-download page will highlight the manual row for [PL]. However our manual pages form the biggest part of the site, so they are to look the same in all circumstances. Actually they don't need to look the same, but they need to use the same HTML code. We can add JS parts to work with the preference cookie in JS, and do something differently, eg. drop out the left side manual toc using client side DOM. We can also include a JS file on the top using <script>, and put all the user depandant things there, so the PHP page output can be cached, while that JS will be outputted from PHP with non-cache headers. This is something for the far future, and I think some of you won't be too keen on the idea, so this is also up for discussion... What have I missed? ------------------- I have probably missed a point or a few points to consider, so if you know of anything better, share your knowledge / ideas ;) Goba -- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php