Difference between revisions of "User:BrentNewland"
BrentNewland (talk | contribs) m (→Misc Thoughts) |
BrentNewland (talk | contribs) m (→BugZilla) |
||
Line 332: | Line 332: | ||
**Upgrading http://www.bugzilla.org/docs/4.2/en/html/upgrade.html | **Upgrading http://www.bugzilla.org/docs/4.2/en/html/upgrade.html | ||
*https://github.com/a-v-k/phpBugTracker | *https://github.com/a-v-k/phpBugTracker | ||
+ | |||
+ | BugZilla: Subcomponents based off Wiki subcomponents (since the wiki should have an extensive list at that point) | ||
+ | *Would have to go through old and current bugs and recategorize | ||
+ | *Would make it easier and more accurate to include bugs on Wiki | ||
+ | **which would result in more bugs getting attention | ||
+ | *link on page directing user to the Wiki | ||
+ | *Option to include more than one category (some components do span multiple categories) | ||
==ROSCMS== | ==ROSCMS== |
Revision as of 07:48, 1 April 2012
Contents
- 1 Important Links
- 2 Updates
- 3 Plan
- 4 Misc Links
- 5 Misc Thoughts
- 6 ROSCMS
- 7 Create a full PHP interface for Win32
- 7.1 ReactLive? InteractOS?
- 7.2 Apps
- 7.3 Servers
- 7.4 PHP
- 7.5 Replace ReactOS Registry with MySQL
Important Links
- http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet
- http://www.reactos.org/wiki/Templates
- http://www.brandonsavage.net/encouraging-open-source-contribution/
Need to write rapps scripts for
Amaya W3C browser (supposed to be light fast stable and standards compliant)
Updates
- 3/25* I've spent the earlier part of the week creating ~220 RAPPS entry files. Spent the latter half doing some research on GIT and Subversion, specifically using svn:externals (link all the folders you aren't modifying in your branch to the trunk version so you benefit constantly from trunk updates)
Plan
- Right now I'm starting by going through every changelog and adding the information to each file page (as best I can) to establish a brief official history. I am also adding a link to the revision log for every file.
- Next, once I've worked my way up to the 0.3.14 changelog, I will go filepage by filepage, determining exactly what that file does, including a detailed explanation, what components it fits into, any external references,a rostests list, and any current bugs (see Explorer.exe for an example bug list).
- This should have wide-ranging benefits not just to ReactOS but to the Windows community as a whole. If you google for most Windows Files, you find a lot of junk out there that's not helpful. By including quality information, the ReactOS google rank should go up, then links to the wiki should go up, and the project will get more attention and visitors.
- This is a little more forward thinking, but if it works as well as I hope, I've been thinking of ways to make the Wiki more useful for developers - perhaps a link in the source code folder for components which have a page in the wiki (e.g. a "explorer.roswiki" file in /trunk/reactos/base/shell/explorer/ with the contents "http://www.reactos.org/wiki/Explorer.exe", the user could have their browser open it by default); Some ways the Wiki could be more useful:
- Developers could post reminders and notes on the Wiki
- Links to good references
- Status of that component
- TODO lists
- Plus each page would include any bugs it could find and quick links to the history
- Think of the Wiki as the one-stop shop for everyone
- Also, the Wiki is pretty light on material and cross-links (internal and external). It's not always easy to navigate to the ViewVC page, or the SVN HTMl interface, or other important pages (but hopefully that will change with the website overhaul).
My heavy editing will only last for a few weeks (hopefully), and then I'll just make regular changes. Unfortunately the Wiki has been somewhat neglected. Here are some changes I've made:
- Put almost every page (except ones I'm working on right now) into a category of some sort (would love to see This page in the sidebar)
- Incorporated content from various sources into the wiki (various FAQ's, about pages, info pages, some forum posts)
- Cleaned up and combined/separated the ReactOS_ports page and category
- Cleaned up and combined/optimised the File Systems page and category
- Added cross-links to the outdated Version_Status page (without changing any of the statuses)
- Added some anchors to People of ReactOS and redirects for people who had been linked to elsewhere in the wiki but had no page (broken links)
- Recovered and recreated ChangeLog-0.2.2 and ChangeLog-0.2.3
- Cleaned up the ReactOS subsystems page and category
- Created the Frameworks page, which has important frameworks you might need to install to run some programs
- Recreated the FAQ
And here's what I plan to do:
- Go through every newsletter and add/link to any useful information
- Go through the entire forum and incorporate any useful information into the wiki
- Add lots more helpful tutorials
- A completely new user to ReactOS should have a guide available that will walk them through anything they want to do - download the latest release, which one to download (the differences between dbg and dbgwin are not explained), installing it, installing a virtual machine if needed, exactly how to report a bug, exactly how to get a backtrace and anything else needed to file a proper report (I still don't know how to get raddr2line, seems like you may have to compile it yourself, and a fresh user will be turned away almost immediately by having to compile something)
- Provide as much cross-linking as possible to lead users to new content
- Update every page at least once initially and periodically thereafter
- Even if I have to sit in the IRC channel and ask the same question over and over and over
- Unless it was a one-off thing or is only there for historical purposes
- Everything possible to make this Wiki as awesome as possible with as much relevant and up to date information as possible
- Document every aspect of ReactOS, its components, its status, its GUI, missing features, the API, and all the suggestions and ideas I can find (excluding ridiculous ones)
And in the further future:
- Create a new installer for ReactOS - using PHP (wrapped in a PHP wrapper or directly using php-gtk or similar)
- I know it can be done - and not that difficultly
- I think it has benefits - such as being easier for Distributions, allowing you to change settings while the install is in progress and saving your place when it has to reboot, allowing you to pick apps and download and install them with the OS, and more
- I want to
- I never expect that to be part of the official distribution
- You don't have to use it if you don't want to
- Create a replacement Control Panel for ReactOS using PHP
- Create a ReactOS updater and appmarket using PHP
- Create an external web interface a-la Windows Home Server using PHP
- Music Server http://code.google.com/p/streeme/
- Get Active Desktop working
- Simple GUI program that has no borders or title bar or menus, all it does is fill 100% with an HTML page (embedded using mshtml?, or webkit or gecko)
- Use SetWindow to make the parent of this program 0, which makes it replace the wallpaper/desktop, but not the taskbar (from what I understand)
- Have it auto-launch on startup and autorestart if it crashes
- then get Active Desktop Portal program (made with PHP) updated and expanded
Misc Links
- http://en.wikipedia.org/wiki/List_of_performance_analysis_tools#C_and_C.2B.2B
- http://software.intel.com/en-us/articles/intel-parallel-studio-xe-evaluation/
- http://www.reactos.org/forum/viewtopic.php?f=2&t=11033 Possible to benchmark win32 api?
- Native Shell - a command prompt for native mode http://hex.pp.ua/nt-native-applications-shell-eng.php
- http://osswin.sourceforge.net/#irc
- Idea: find all windows DLL's (from microsoft updates and downloads) then provide links to microsoft site to get DLL
- http://www.pschweitzer.fr/ He has some news and info about ReactOS
- http://www.reactos.org/wiki/User:Mna. Some great bookmarks in here
how to take screenshots
- upload directly to web
- only one program
donate reactos with phone
- smscoin seems only good option, others require $200-$400 paid per month (by the project)
- But ReactOS could receive as little as 25% of the donation
Misc Thoughts
These are just notes I'm keeping as I explore different avenues.
Things a new programmer can do
- Pick a ReactOS source code file, insert detailed comments into it, create a patch, submit it on BugZilla
- This lets (some) new developers learn the code a bit before making changes that have serious impact
- Also notate any items not implemented
- Recording ROSTESTS failures when recording documentation might be useful (put a date on those)
- Will notify people working with that file that something failed the test
- Can go through ROSTESTS every XX days and update the results
Guides
Guide: Compiling your Windows program with WineLib (to run on a different OS)
No bitmap resources in ReactOS
- All vector Graphics
- important for scaling to different resolutions and DPI's (quality is always consistent)
- Should be designed at very high resolutions (going high>low resolution for vector should look better than low>high)
- includes icons
- includes items like "X" to close screen
- of course, ReactOS should support bitmap resources for other programs, but itself shouldn't use any
- Essentially Windows Presentation Foundation for ReactOS explorer?
Freetype Fonts (an OpenType implementation, cross platform) and Pango
- essentially vector graphic fonts
- ReactOS already supports TTF
Cairo graphics library
- 2D vector graphics library with hardware acceleration
- Could be used to apply shading, gradients, and color blending (which vector graphics normally can't do) to Ui elements
- GPL, C, win32 GDI (or Direct2D) compatible
- Used by GTK+ project
- Crazy to think of using GTK+ for explorer?
ReactOS Fonts
- Fonts
- DejaVuSans-Bold.ttf
- DejaVuSans-BoldOblique.ttf
- DejaVuSans-Oblique.ttf
- DejaVuSans.ttf
- DejaVuSansMono-Bold.ttf
- DejaVuSansMono-BoldOblique.ttf
- DejaVuSansMono-Oblique.ttf
- DejaVuSansMono.ttf
- DejaVuSerif-Bold.ttf
- DejaVuSerif-BoldItalic.ttf
- DejaVuSerif-Italic.ttf
- DejaVuSerif.ttf
- Gnu FreeFont
- FreeMono.ttf
- FreeMonoBold.ttf
- FreeMonoBoldOblique.ttf
- FreeMonoOblique.ttf
- Does not include FreeSans or FreeSerif
- http://en.wikipedia.org/wiki/Liberation_fonts Liberation Fonts]
- based on modified Bitstream Vera font
- LiberationMono-Bold.ttf
- LiberationMono-BoldItalic.ttf
- LiberationMono-Italic.ttf
- LiberationMono-Regular.ttf
- LiberationSans-Bold.ttf
- LiberationSans-BoldItalic.ttf
- LiberationSans-Italic.ttf
- LiberationSans-Regular.ttf
- LiberationSerif-Bold.ttf
- LiberationSerif-BoldItalic.ttf
- LiberationSerif-Italic.ttf
- LiberationSerif-Regular.ttf
- Marlett.ttf
- symbol.ttf
- tahoma.ttf
- tahomabd.ttf
Suggested for ReactOS
- GNU Unifont (bitmat font)
- TrueType version
- GPL
- Gentium
- Sil Fonts
- Droid font
- Roboto, Android 4 font
- Caslon Roman
- Junicode
- Linux Libertine
ROSCMS
I've been thinking about checking out a branch of ROSCMS and doing some upgrades for it.
Mediawiki Latest
- theme search
- Use MediaWiki for storing forum posts
- http://area51.phpbb.com/phpBB/viewtopic.php?f=78&t=35496
- Allows revisioning
- Setup MediaWiki to use phpbb markup as well (meaning possible wiki formatting in forums)
**Make phpBB markup allow [[ ]] for linking ***topics t15432 ***posts p999321 ***bugzilla bugs b3416 ***wine bugs wb22917 ***commits r56137 ***Wine commits wr99728 ***Wine Wiki wwAbout_Wine
- otherwise it goes to the wiki
- Use phpBB's text editor
- Show categories for search results
Infobox for Wiki and extensions
- http://www.etcwiki.org/wiki/Install_infobox
- http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki
- http://en.wikipedia.org/wiki/Wikipedia:Navigation_templates
- http://en.wikipedia.org/wiki/Wikipedia_talk:WikiProject_Transwiki
- http://www.mediawiki.org/wiki/Manual:Collapsible_elements
- Needs at least 1.1.18, ReactOS is 1.1.15
- http://www.mediawiki.org/wiki/Extension:TODOListProgressBar
- http://www.mediawiki.org/wiki/Extension:ReaderFeedback
- http://www.mediawiki.org/wiki/Extension:DiscussionThreading
- http://www.mediawiki.org/wiki/Extension:EmbedVideo
- could use some custom coding, not a priority
- http://www.mediawiki.org/wiki/Extension:VideoFlash
- https://www.mediawiki.org/wiki/Extension:CategoryTree
- http://www.mediawiki.org/wiki/Manual:Importing_Wikipedia_infoboxes_tutorial
- ReactOS Wiki deletion log
- Syntax Highlighting
phpBB latest
- phpBB should handle wiki page talk and news comments
- do this by having a separate table for wiki posts
- phpBB should handle the primary site templates/themes (the headers and footers and sidebars)
- should have several themes available
- recaptcha for registration
- phpBB handles user database
- Display bugzilla bugs in subforums, and allow filing and full markup
- Display (optional) Wiki as a forum
- Display SVN tree as forum
- Ability to put posts in multiple forums http://area51.phpbb.com/phpBB/viewtopic.php?f=75&t=32103&start=20
- e.g. "Feedback" forum and "ReactX" talk page
- Reddit/digg style topic and comment voting
- Optional views for both topics and forums to be viewed classic (by date), threaded by date, or threaded by votes (like Reddit)
phpbb+reddit (votes, hiding comments, threading)
phpbb styles
- Need some dark themes
- Style should extend to all aspects of site, including ViewVC/Git
- http://www.phpbb.com/styles/demo/3.0/?style_id=1070
- http://www.phpbb.com/styles/demo/3.0/?style_id=1064
- http://www.phpbb.com/styles/demo/3.0/?style_id=60
- Switch some colors, orange to blue
- http://www.phpbb.com/styles/demo/3.0/?style_id=1061
- switch green to blue
- http://www.phpbb.com/styles/demo/3.0/?style_id=325
- http://www.phpbb.com/styles/demo/3.0/?style_id=545
- http://www.phpbb.com/styles/demo/3.0/?style_id=28
- With moderate modifications
- http://www.phpbb.com/styles/demo/3.0/?style_id=195
- Change red to blue
- http://www.phpbb.com/styles/demo/3.0/?style_id=58
- http://www.phpbb.com/styles/demo/3.0/?style_id=44
- http://www.phpbb.com/styles/demo/3.0/?style_id=1065
- http://www.phpbb.com/styles/demo/3.0/?style_id=445
- http://www.phpbb.com/styles/demo/3.0/?style_id=1062
- Change green to blue
- http://www.phpbb.com/styles/demo/3.0/?style_id=1057
- http://www.phpbb.com/styles/demo/3.0/?style_id=1102
- Very cool!
- http://www.phpbb.com/styles/demo/3.0/?style_id=14
- http://www.phpbb.com/styles/demo/3.0/?style_id=1060
- professional
- http://www.phpbb.com/styles/demo/3.0/?style_id=4
ViewVC?
- Support wikibbcode in viewvc
- Give it a lot more features (right click?)
- Show commits by developer and in general in calendar style
- either web.archive.org style or something showing number of commits
PHP
ViewVc is written in Python, something PHP would be nice
- All web clients that I know of are read only, meaning that you can only browse the files, make diffs, set up RSS feeds, but you can not modify the repository in any way.
- How about changing that?
- https://jeremy.visser.name/2007/05/doctorsvn-01-released/ Think it accesses SVN binaries on host directly
- https://github.com/myelin/pure-php-subversion basic checkout and commit
- http://www.php.net/manual/en/ref.svn.php
- http://pecl.php.net/package/svn
- http://pear.php.net/package/VersionControl_SVN/ (uses SVN executable)
- PHP Manipulate files in an SVN repository (Uses SVN executable)
- Administer the SVn server http://svnmanager.org
- WebSVN http://www.websvn.info/features/
- Used by official Tigris SVN project
- Looks nice, demo
- Trac http://trac.edgewall.org/browser
- Kinda ugly, slow browsing
- http://www.indefero.net/tour/
- Retrieve files from an SVN in pure PHP
- http://www.roojs.com/blog.php/View/86/.html
- http://svn-web-control.sourceforge.net/
- http://viewsvn.fealdia.org/
- http://websvnadmin.sourceforge.net/
- http://svndashboard.sourceforge.net/
- http://groogle.sourceforge.net/
Testman
- Would be nice to include the latest failed tests on a component's wiki page
- Would also be nice to have historical charts, and separate components in general
- Integration into API documentation (and/or doxygen) to show current status of API and areas where new tests could be written
Subversion
- Complete CVS server written in PHP http://sourceforge.net/projects/asvcs/
- Deltaweb, another http://sourceforge.net/projects/deltaweb/
- http://www.brandonsavage.net/why-great-development-tools-dont-seem-to-be-written-in-php/
BugZilla
- http://eaves.ca/2011/08/22/design-matters-looking-at-a-re-themed-bugzilla/
- https://wiki.mozilla.org/Bugzilla:Pretty
- Currently version 3.0.11; latest version is 4.2
- http://svn.reactos.org/web/trunk/www/www.reactos.org/bugzilla/Bugzilla/Constants.pm
- search for "use constant BUGZILLA_VERSION"
- changelog
- http://www.bugzilla.org/releases/4.0.3/release-notes.html
- Since Bugzilla 3.0, almost every major user interface in Bugzilla has been redesigned, the WebServices have evolved enormously, there's a great new Extensions system, and there are hundreds of other new features.
- Upgrading http://www.bugzilla.org/docs/4.2/en/html/upgrade.html
- http://svn.reactos.org/web/trunk/www/www.reactos.org/bugzilla/Bugzilla/Constants.pm
- https://github.com/a-v-k/phpBugTracker
BugZilla: Subcomponents based off Wiki subcomponents (since the wiki should have an extensive list at that point)
- Would have to go through old and current bugs and recategorize
- Would make it easier and more accurate to include bugs on Wiki
- which would result in more bugs getting attention
- link on page directing user to the Wiki
- Option to include more than one category (some components do span multiple categories)
ROSCMS
- Future Integration with rapps (choose programs to install online, like android market)
- Allow users to choose different background and transparency
- Fixed background (doesn't scroll) with partially transparent tables
- inspiration for professional aspects: http://www.projectpier.org/project-files
- Statistics (need to do component and page tracking with public counters)
- Image Manipulation http://stefangabos.ro/php-libraries/zebra-image/
- news post and blog commenting
- some facebook features (comment display, ?)
- TODO List http://getsurreal.com/surrealtodo/
- File Upload http://blueimp.github.com/jQuery-File-Upload/
- IdeaTorrent http://ideatorrent.org/
- used for Ubuntu Brainstorm
Search
- Curent search for almost everything: poor
- Sphinx - C++, Win32/Linux/Mac, works with mysql
- http://www.ralree.info/2007/9/15/fulltext-indexing-wikipedia-with-sphinx/
- http://www.mediawiki.org/wiki/Extension:SphinxSearch
- http://www.phpbb.com/community/viewtopic.php?f=70&t=796875
- https://github.com/tim4dev/bugzilla-sphinx-integration-example
- might even be useful for ReactOS search, since it's language independent
- Example: http://www.phpbb.com/search/?q=sphinx
- As a backup http://www.mediawiki.org/wiki/Extension:Zend_Search_Lucene_for_MediaWiki
- Fewer features than Sphinx, slower
- Forms http://stefangabos.ro/php-libraries/zebra-form/
- Something like this for C? http://www.wiode.org/
- Some form of advanced search for mailing lists
- should pull all search results into a table and allow subsearches on it
- Need better sorting and URl based queries and sorting (so it doesn't time out)
MailMan
- Mailman PHP interface
- Would like to view MailMan online archives in threaded view and flat view, and would like (optionally) to display them as if they were a forum
Misc Notes
- Minimal in-script modifications (make upgrades easier)
- Maybe use Symfony2 (http://symfony.com) as a framework to connect to everything
- http://qdpm.qds-team.com/
- Seems more for classes than working chunks of code
- CodeIgniter http://codeigniter.com/
- http://cibonfire.com/
- Wrappers (control panels, news pages, forums, CMS)
- content (actual forum dispaly modules, blog posts, wiki, etc.)
- libraries (user authentication, text parsing, database abstraction, jquery, search, charts, templates, etc.)
- Plugins (rich text editor, forum mods, voting module, ???)
- Servers (see below)
- jquery paginated tables http://www.webresourcesdepot.com/slick-ajaxed-datagrids-with-jquery-jtable/
- Useful for all sections of site (especially wiki)
- Dynamically sized images http://adaptive-images.com/
- Download Info Library http://jdownloadplugin.com/
- Cross domain PHP javascript proxy http://www.webresourcesdepot.com/cross-domain-javascript-with-simple-php-proxy/
- Security http://www.webresourcesdepot.com/phpsecinfo-similar-to-phpinfo-but-focused-on-security/
- iGoogle like start page http://www.picok.org/
- syntax highlighter http://www.webresourcesdepot.com/11-syntax-highlighters-to-beautify-code-presentation/
- PHP.js
- Mouse tracking http://smt.speedzinemedia.com/
- Handling Plugins in PHP code
- Packages for code (instead of code as libraries or functions or something)
- Simple HTTP requests
- 9 Million hits a day with 120MB RAM (an excellent guideline for performance enhancing your scripts)
raddr2line http://svn.reactos.org/downloads/raddr2line.exe
Side Projects
I've been planning on these for some time now, but given the different projects I'm working on it makes sense to make them now. I've made several of these in the past.
Universal Database Abstraction/Access Layer
Need to make universal Db access layer
- based on phpBB's
- all major databases
- basically a wrapper
- Initially PHP, get people to port later
- perhaps make parts more portable
- http://crystal.martinrusev.net/
PHP3/4/5/6 API compatibility wrapper
- Allow a PHP script written for version X to support older and newer versions
- Maybe allow older scripts to work on newer PHP
Open PHP web installer
- to make installing your scripts easy
- A supplement to the PHP binary installer (which will allow you to install binary software on your computer with a PHP driven installer)
Open Authentication Framework
- Something that can detect many installed programs (phpbb, vbb, ubb, mediawiki, wordpress, drupal, etc) and abstract their user databases
- easy GUI converting or combining of different user databases
- Simple and easy to use system for including auth on web pages
- For external authentication: http://hybridauth.sourceforge.net/
Storage Abstraction Framework
- Recognise how items like topics, forums, blog posts, etc. are stored
- provide an API for a program to use that structure for its posts
- not only good for new developers looking for compatibility, good for major projects and migration
phpbb4
- Separate layout and style templates?
- Widget templates?
- Skinning a widget that can work with many mods is better than having to write many templates for one mod
- Widget templates?
- Perhaps something like a php implementation similar to win32 (in function, not features or scope)
- Open Source, may be useful for benchmarking all this stuff http://httparchive.org/
Create a full PHP interface for Win32
With as little binary reliance as possible (only native php, should work on any PHP platform)
ReactLive? InteractOS?
I've been considering beginning with a web based desktop (that looks ReactOS-like, since ReactOS looks like windows). This would be useful as an alternate version of ROSCMS. It would serve a good basis for a larger-scale implementation.
- taskbar
- Could do a whole desktop emulator, would allow stuff like chat and would definitely be functional
- http://en.wikipedia.org/wiki/Web_desktop#Comparison_of_web_desktops
- http://oos.cc/login.html
- Maybe just base on eyeOS 1.9
- OneEye (http://lars-sh.de/) 0.8 supposed to be a continuation, 0.9 supposed to be new
- EyeOS Themes http://eyeos-apps.org/index.php?xcontentmode=814
- Gotta have some portal themes (because why not)
- Not to mention ReactOS, and android, and ubuntu, and whatnot
- http://forums.eyeos.org/index.php?topic=121.5
- http://en.wikipedia.org/wiki/XOS_Webtop
- https://xos.xproduct.net/desktop/xoslogin/main.php
- http://www.lifehack.org/articles/technology/your-desktop-anywhere-21-web-based-desktops.html
- http://www.lucid-desktop.org/
- http://qwikioffice.com/
- http://www.webresourcesdepot.com/desktop-like-web-interfaces-qwikioffice/
- Integration with all kinds of services
- "Online Command Prompt" (maybe emulator)
- http://gigaom.com/collaboration/your-office-in-the-clouds-the-best-online-virtual-desktops/
- Include some online game console emulators
- custom pandora client
- google Voice
- rss reader
- http://rsslounge.aditu.de/
- All chat platforms
- All major e-mail and storage services
- Cloud http://www.simplecloud.org/
- Encrypted Chat https://crypto.cat/
- file Manager http://pgrfilemanager.sourceforge.net/
- System info http://phpsysinfo.sourceforge.net/
- Picture taker http://code.google.com/p/jpegcam/
- email/"social" http://www.conjoon.org/
- Elite Programming
Apps
- Traceroute
- Would like to read and reply to android/ios/winmo text messages from the computer
- Would like to be able to play games too
- BitTorrent Client (need to write around its python dependency)
- Ping
- What is this?
- PBooks Open Source Bookkeeping Software
A Breed Apart
- Wireless LAN Scanner and connection tool
Servers
SMTP/POP/IMAP
Mail Server http://dd32.id.au/2011/10/14/php-based-mail-server-release-day/
- Client: squirrelmail.org
- http://phpop3clean.sourceforge.net/
- https://github.com/flashmob/Guerrilla-SMTPd
- Spam Filter
- http://sourceforge.net/projects/phpsmtpd/
- PMaild (smpt/pop)
- Handling bounced mail and other great PHP mail resources
- IMAP has secure version (IMAPS) ssl
- POP3 has a secure version (POP3S) ssl
TFTP
Socket Servers and Daemons
- PHP Manual: Sockets
- Writing Socket Servers in PHP
- http://www.mombu.com/php/php/t-php-telnet-server-3919544.html
- http://blog.magicaltux.net/2009/09/29/pinetd2-new-website-and-release-coming-soon/
- http://www.rshields.com/?q=node/91
- http://stackoverflow.com/questions/8411182/proper-and-fast-way-to-telnet-in-php-sockets-are-damn-slow-or-how-to-telnet-wit
- http://www.endyourif.com/how-to-create-a-socket-server-in-php/
- http://code.google.com/p/tsock/
- https://github.com/navarr/PHP-SocketServer
- http://simas.posterous.com/writing-a-php-daemon-application (good advice on process title, threading, etc.)
- http://groups.google.com/group/smartsocket-discuss/browse_thread/thread/59583a6b308c2594
- https://github.com/XaeroDegreaz/SmartSocket/tree/master/PHP%20(Depreciated)
- Zend article on writing socket server
- http://code.google.com/p/phpsocketdaemon/
- Developing daemons in PHP
- PHPDaemon This is one of the most important ones on the list
- Servers Included: FastCGI, HTTP, SOCKS, MySQL Proxy, SOCKS, WebSockets, telnet, CGI (Perl/Python/Ruby?), others
- NanoWeb
- HTTP/1.1
- FastCGI, CGI and Server side includes support
- Name and port based virtual hosts
- htpasswd, MySQL, PostgreSQL and LDAP authentication support
- Apache compatible log format, MySQL logging
- Directory browsing
- Proxy Server extension
- Nanoserv is a server daemon framework for PHP 5.1+
- 100% object oriented, asynchronous event-based framework
- designed for high performance and robustness
- native support for IPv6, TCP with SSL/TLS, UDP and Unix sockets
- multiplexing and forking listeners
- base handlers for raw connections, line input, Telnet, HTTP, SMTP, XML-RPC, Syslog, SOAP, DHCP and JSON-RPC
- transparent inter process communication with forked handlers
- high precision timers
- and a lot more ...
FTP
- NanoFTPd
- SimpleFTPd
- Net2FTP FTP Client
- PHPWebFTP Another FTP client
- Web based FTP Client
- FTP has secure version (FTPS) - ssl instead of ssh
HTTP
- HTTP Server
- Another
- Another
- http://stackoverflow.com/questions/7874797/write-a-wrapper-for-ssl-encryption-to-my-simple-written-php-socket-server
- http://code.google.com/p/phpd/
- Integrate a nice control panel
- Gotta make sure it has these
- .htaccess emulator
- Need to make sure it handles UDP natively (not many/any? web servers support UDP connections)
- Upon new request: Check if requested directory has a php.ini
- if so, start a new PHP HTTP instance
- Load extensions for that instance from their php.ini
- Whitelist extensions only by admin
- If user already has a PHP HTTP instance running for that INI file, and it's idle, use it
- Should be safe to load extensions because they'll only be able to load whitelisted extensions from the server's PHP directory, and the HTTP server loads the extension, user is incapable of doing so
- Disable enable_dl() in php.ini, when launching the HTTP server instance (which is completely separate f
- [www.askapache.com/php/custom-phpini-tips-and-tricks.html Load php.ini separate apache]
- "-c" command line option can load a specific INI file, maybe could do dynamically generated one
- "-z" load a specific PHP extension
- Enable PHP extensions per PHTTP server based on user settings (e.g. admin or user logs into their control panel, they can browse their code and have the xdebug extension enabled for their session as well as additional debug tools)
- Spawn a new instance for a folder and hang onto it until it times out, link to user when user logged in, otherwise link to folder
- Primary script to act as a router/proxy
- Must check status of sub-processes (test communications and check for process ID regularly)
- If process not responding, wait XX seconds, try again, if still nothing, kill it
- Multi-threaded so it can handle the socket communications
- multiple processes can't access the same socket in Windows, so one process needs to do the job
- Must check status of sub-processes (test communications and check for process ID regularly)
- Primary script launches with psexec a new HTTP server process, depending on needs, or reuses an existing one if needed
- Primary script made the socket to connect to the PHTTP server, and tells it what socket to communicate on
- Primary script is essentially a router-proxy
- secondary scripts each have a custom php.ini file (a temp one, based on socket for simplicity)
- Modules loaded can even be configured via a mysql DB (e.g. admin gets xdebug extension loaded)
- This all should ensure that different sites/configurations get the proper extensions, that they don't interfere with each other, and that they can't access each other's session data or files (and helps security, each PHTTP server can run under its own user name and permissions)
SOCKS
SOCKS support (needed to do proxies via your client browser control panel)
- http://ssspl.sourceforge.net/ (perl, but see notes at bottom)
- Windows requires GSSAPI?
- TCP connection wrapper using SOCKS 5 protocol
- Establish TCP connections via a SOCKS 5 server
- some proxy scripts (not transparent - web based)
- Nicely featured web based proxy
- web-socks - A simple HTML 5 Websocket server written in pure PHP
- A php proxy of the type needed
TCP
- TCP Client
- TCP Server
- Another TCP Server (seems more like an echo server)
ECHO
- Echo Server?
- Easily extendable to some other protocols
DayTime
- http://en.wikipedia.org/wiki/Daytime_Protocol
- Just have to return current date and time
Quote of the Day
- http://en.wikipedia.org/wiki/QOTD
- Could even get quotes off the internet
TIME
NTP
WebDAV
- WebDAV Server
- OwnCloud has several different DAV servers
DHCP
DNS
- DNS Server
- Wiki Page (bottom)
- http://blog.magicaltux.net/2009/02/19/your-own-php-dns-daemon/
- http://blog.magicaltux.net/2010/03/19/simplednsd-new-features-bugfix/
- Another
- Another
IRC
- IRC
- http://ostatic.com/phpircd
- https://github.com/danopia/php-ircd
- Don't forget ssl
SSH/SFTP
- this script supports SFTP
- called NetBatch
- not the same as FTPS (tls/ssl) or FTP over SSH, or simple FTP
Finger
- Finger (don't think it's exactly portable or done entirely in PHP)
BitTorrent
- BitTorrent server (torrential or tbdev)
SNMP
Nothing comparable yet
LDAP
LDAP (samba, active directory, ldap, wins, netbios, smb (netbios over tcp))
- http://sourceforge.net/projects/phpldapadmin/?source=directory
- http://sourceforge.net/projects/adldap/?source=directory
- Not PHP (but useful as a starting point) http://directory.apache.org/apacheds/1.5/
- Also not PHP (but useful as a starting point) http://www.samba.org/samba/docs/SambaIntro.html
- http://web.archive.org/web/20031012005139/http://alcastle.com/aldap-1/credits.php
Misc
- Fast and Secure Protocol (TCP replacement, pushed by amazon)
- File Service Protocol (FTP over UDP)
- Protocol is dead but useful; how about implementing BitTorrent hashing to make sure downloads are good, and make it easier to download bad chunks
- UFTP (another)
- Whois
- nntp
- Python NNTP server
- Python in PHP (probably no use)
- git, news (nntp), gopher, network time protocol (ntp), AppleShare (AFP),
- imap
- nntp
- pptp (dial-up)?
- http://en.wikipedia.org/wiki/Service_Location_Protocol
- syslog
- UPNP
- NFS, Server Message Block, Apple Filing Protocol, Netware Core Protocol, Remote File System, WEBDAV, Samba (Windows), SSHFS,
- FTAM (another file transfer model)
- DC++
- tor
- Build server and client for all versions of MSNP
- XMPP
- Google Talk
- Yahoo Messenger
- AIM/ICQ
PHP
- Nice: PHP-GTK template system layer
- Make PHP-GTK easier to use (but don't require it for operation)
- using PHPGTK to serve GTK programs over the internet
- Deploy php-gtk in Windows
- would like the PHP group to take over this eventually, include some of the servers (not compiled) with the PHP distro, and let me redo their website
- PHP needs a better commenting system (for their manual website)(whole website could use a revamp)
- If someone forked PHP...
- Best way: split PHP API into separate layers (external modules?); by default use the newest API, but allow scripts (or the server) to specify an older API for compatibility purposes
- Appease people who need compatibility and/or "want to write it the old way" (like me), as well as people who want everything OO.
- PHP Apt File Parser
- May be useful if using winapt for the update program
- Roadsend PHP - a different PHP implementation good for compiling
- Old Website
Error Control, Benchmarking, Debugging
- PHP Error Console
- 50 Extremely useful php tools (some really good stuff in there)
- PHPUnit Testing System for PHP
- Especially useful for the server programs
- Would like to see scripts that test all the features of PHP (would like to see which features supported on each version of PHP side by side to make a compatibility layer)
- Codespy - A tool for analyzing code coverage and path coverage without using xdebug
- WebGrind (would like to expand that to match wincachegrind) (kind of benchmarking, but directly related to xdebug)
- Can track which statements in a single line are executed
- Codeception is a full-stack testing PHP framework
Benchmark
- PHP Quick Profiler
- [http://aaron-rosenfeld.com/2008/08/28/phpwatch-release-announcement/ PHPWatch
- Pandora Flexible Monitoring System
- Do not use is_array without using isset or empty first (php benchmarking website)
- Loop test
- Using foreach and while and for
Automated Build Systems/Continuous Integration Systems for PHP
- Relevancy of Automated Builds In A Web World
- Sismo Continuous Testing Server written in PHP
- Xinc PHP Continuous Integration Server
- Continuous Integration with Jenkins (good description)
Multithreading
Multiple threads can be established through The Gearman project. Requires some code changes, but it has allowed me to scale a lot of projects. Everyone always recommends gearman, and while it is certainly functional, I don't really like how it works. It could just be lack of familiarity with it though. I prefer using rabbit-mq and PhpAmqpLib although the documentation isn't amazing, you can figure everything out from reading documentation on rabbit-mq. You can/should always checkout stackparts if you're looking for a technology you think probably exists.
Don't reinvent the wheel. Use something like http://www.danga.com/gearman/
Another option I've seen sent around is: https://github.com/chrisboulton/php-resque
Gearman is a platform framework for processing jobs. I don't know why stackparts lists it alongside "message passing". It's substantially more than a message queue (and frankly, as a message queue, it sucks compared to ActiveMQ, RabbitMQ, MSMQ or the protocol ZeroMQ). PHP-AMQPLIB is just a PHP client for MQs which implmenent AMQP. Not really the same thing. Yes having a message-queue interface is important for distributed tasks there's still a whole lot more work he needs to do that just install a amqp library.
I think what I didn't like about gearman initially is that it seems to guide you towards waiting for a job to complete. That isn't a concept I want when putting stuff in a work queue, I want to add it to the queue and quit running. I think you can do this in gearman too, but I also enjoy the increased routing abilities in rabbit-mq.
Additional Resources
- Compiled PHP applications from Facebook
- My Thoughts on HipHop (facebook's compiler)
- How to compile PHP scripts
- Languages that compile to PHP
- Change process title on Linux only (need same for Windows)
- Related - Proctitle (part of pinetd)
- Inter-process communication
- PHP Fork function (must read comments)
- User-space php multithreading patch (needs work)
- PHP Multiplexed I/O
- http://www.bukisa.com/articles/341679_php-process-control-multithreading
- Interfacing PHP with COM objects for Win32 (would rather not rely on any COM objects)
- Text mode UI framework
PIP: Program for Interpreting PHP
- If I need to fork PHP
- Benefits from being one letter away from PHP (and PGP is already taken)
Personal Home Page Tools or Personal Home Page Construction Kit PHP/Form Interpreter (PHP/FI)
- Original PHP name
PHPI (PHP Interpreter)
Need different license since it's not GPL compatible (don't really care about the name)
- PHP 3 was GPL, could use that as a starting point (but may not be much use)
- Wouldn't allow you to compile programs (even though the PHP code would be untouched, it would be considered a derivitive work, and all compiled PHP programs must have their scripts GPL)
- Modified or Simple BSD would be best
- Would not be able to use GPL code in it
- Apache 2.0 license is compatible with GPLv3
- I'm really liking the Academic Free License 3.0. It's still not GPL compatible (according to GNU? according to author it is) but it has some extra copyright/patent protection for the end user.
If a complete rewrite is needed (perhaps from scratch)
- D Programming Language
- No 16-bit Support
- Just like I want PHP to be - simpler and more functional (mirrors my philosophy)
- "D is not for: Language purists. D is a practical language, and each feature of it is evaluated in that light, rather than by an ideal."
- Automatic Memory Management (garbage collection)
- "It's a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code."
- "Make doing things the right way easier than the wrong way."
- "Have a short learning curve for programmers comfortable with programming in C, C++ or Java."
lol, by moving the API's into separate modules, you can not only choose a specific API (for a page, or a section of code, or a directory, or for the server) but you can add new ones
- e.g. "British variant of PHP"
- Or Perl, Python, Ruby, etc.
- Perhaps someone doesn't like stuff like "Function myfunc($1,$a,$pin) { }" and "IF($apples == $oranges){ elseif($apples == $frogs) {} else {} }" and they want to do "<fun name="myfunc" parameters=[$1][$a][$pin]> </fun>" and "<if[$apples == $oranges]> <elseif[$apples == frogs]> </elseif> <else> </else> </if>"
CodeIgniter PHP4 compatibility brought PHP5 features to PHP4, didn't make PHP4 programs work in PHP5
MariaDB a MySQL fork
Compiling PHP
- Using Win8SDK with Visual Studio
- PHP 5.4 x64
- x64 Apache and PHP builds
- Windows 8 SDK Download
- Visual Studio 11 Beta
- Zend server CE - free PHP server with GUI from Zend (PHP) group
- Facebook HipHop
- PHC PHP Compiler (dead recently)(basis for roadsend php)
Instructions
- Build PHP with MingW
- Building Apache for Win64
- Building PHP for Win64
- PHP Windows Step by Step Build
- PHP Supported SDK
Extensions
- Windows Cache Extension for PHP (seems to be for PHP regardless of HTTP server)
- PHP-Qt
Tips/Tricks
Scripts
Asterix
http://marcelog.github.com/articles/php_asterisk_agi_protocol_tutorial.html http://marcelog.github.com/PAGI/ http://marcelog.github.com/articles/pagi_tutorial_create_voip_telephony_application_for_asterisk_with_agi_and_php.html http://phpagi.sourceforge.net/
Replace ReactOS Registry with MySQL
- Convert any system registry calls or API registry functions to go through an abstraction layer or wrapper
- Abstraction layer will connect to Windows Registry (service), or to other database specially configured
- e.g. MySQL, MSSQL, PostgreSQL, etc,
- Will require changes to ReactOS and database server
- Will not be usable for first stages of boot (until database is started)