Phalanger Ideas Page
For Google Summer of Code 2010 Students
The listed ideas here are our suggestions; you don’t have to apply for one of these ideas! You can come up with your own and as long as we think the Phalanger can benefit from it we will be happy to work with you to develop it. To discuss project ideas get in touch with us on our IRC (#Phalanger at Freenode) or use forum on http://phalanger.codeplex.com/Thread/List.aspx. Please contact us earlier rather than later to develop your idea into complete application.
We will know if Phalanger was accepted by 18th March and oficial student application period opens at March 29, but have in mind that you can start to discuss your project ideas as soon as Phalanger is accepted - The earlier the better! Remember that the project has to be deliverable in less than 3 month, so be ambitious but not too much, so you can fulfill program deadlines.
If you would be accepted as a student there are few information you should know:
- All the source code you make has to be submited regularly and all the submits must be provided by report information what has been done. If there isn’t any code submission made in one week your mentor is going to contact you. If he cannot reach you 2 weeks (without previous agreement with the mentor) the student will be failed.
- Participate in our development community. Please make a post to our forum http://phalanger.codeplex.com/Thread/List.aspx and link to it from your application. To subscribe to our forum or IRC channel (#Phalanger at Freenode) is recommended, because it’s a way to see more about the Phalanger.
Both of these actions are things you will do extremely commonly as an open-source developer, and they really aren’t that hard, so don’t let them hold you back!
Build applications with Phalanger
Integrate PHP open-source project with ASP.NET
Phalanger makes it possible to access .NET functionality from a PHP application. The goal of this project is to take some existing and popular PHP open-source project (for example PhpBB) and add support for managing user logins (and possibly also profile information) via ASP.NET using Membership. This would allow sites that use ASP.NET easily setup (for example) PhpBB forum, without requiring a separate user registration or login (because the login system would be shared).
- The result would be a modified version of an open-source application which uses ASP.NET Membership instead of built-in application-specific database. This may be easier or difficult (depending on the complexity and structure of the open-source project).
Develop sample Silverlight application
Phalanger makes it possible to develop rich client-side applications using Silverlight in PHP. It would be interesting to implement a more complicated sample application (for example some game) in PHP and help us discovering (and possibly also fixing) bugs in the implementation. Alternatively, you can port some existing Silverlight demo (for example from C#) to PHP to show some nice features of the PHP language.
Develop managed Phalanger extensions
Phalanger is able to use native PHP 4 extensions directly, however similar support for PHP 5 extensions is not available (yet). Supporting PHP 5 extensions in general is a complex project (perhaps too complex for a single summer) and native extensions can be also used only on .NET on Windows. An alternative is to re-implement existing PHP extension using .NET (in your favorite .NET langauge - which can also be PHP for some extensions). This has the additional benefit that the extension can be used when running Phalanger on Mono or Silverlight.
Contribute to Phalanger core
Fix known issues and improve our test suite
If you find compilers interesting, you may want to contribute to the Phalanger compiler and runtime. There is an up-to-date list of known issues. You could either fix as many issues from the list as you can, or you can focus on a specific area. We also welcome additional tests to help us discover more issues in the codebase.
Optimize the core
There are ways how to optimize Phalanger core. You can help us by changing the way Phalanger analyzes code and generates IL bytecode. There are many possible optimizations and while most of them aren’t going to be easy, they will be almost certainly very interesting projects. It would be nice to see performance improvements over current Phalanger and even over original PHP.
Improve Silverlight
Phalanger’s Silverlight runtime varies from its .NET version. There are issues that need to be corrected to make the use of Silverlight Phalanger simplier. Also it’s necessary to implement various library function so Phalanger for Silverlight version make possible to use PHP as simple as C# language.
Improve PHP 5.3 Compatibility
There are known issues with the Phalanger compatibility with PHP 5.3 code that need to be corrected. First of all Phalanger uses its own implementation of namespaces because it needed namespaces before actual PHP due to interoperability with .NET where they are essencials. Now the implementation of namespaces in Phalanger has to be modified to be fully compatible with PHP 5.3.
Also the new features of PHP 5.3 has to be implemented in order to achieve maximum compatibility. There is a missing lambda functions and closures support at all. This major changes can affect most of Phalanger Core source codes. It can be even more interresting if you consider bidirectional interoperability with .NET lambda methods.
Ensure Mono runtime support
Phalanger can run both on .NET Framework and Mono now. But there are still some known issues and missing features when running Phalanger on Mono.
The biggest feature that should be implemented is the missing support for the native PHP extensions on linux. It includes whole new wrapper generator, that encapsulates native extension and exports then .NET methods and types. This feature requires some knowledge of ZEND Engine.
Also there is no automatized installer that installs and configures Phalanger to be used on Mono with Apache server. Moreover Phalanger is still in active development and current versions should be tested against the Mono runtime more deeply.