<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://gwiki3.thatlinuxbox.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Choplair</id>
		<title>GeeklogWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://gwiki3.thatlinuxbox.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Choplair"/>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/Special:Contributions/Choplair"/>
		<updated>2026-04-09T09:31:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.5</generator>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_full_openid_support&amp;diff=5504</id>
		<title>SoC full openid support</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_full_openid_support&amp;diff=5504"/>
				<updated>2009-06-03T21:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: + present GSoC develpment information / links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is one of the projects to be implemented during the [[Google Summer of Code]] 2009.&lt;br /&gt;
&lt;br /&gt;
'''Student:''' Choplair, '''Mentor:''' Randy Kolenko&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
Thomas Gutleben, aka ''Choplair'', has been selected to achieve this project. &lt;br /&gt;
&lt;br /&gt;
The independant OpenID library that needed to be created for the occasion has been named '''GGGOOOIIIPPP''', for &amp;quot;''Geeklog GNU GPL Object Oriented Opend ID Implementation In Pure PHP Project''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Dedicated SourceForge account and website have been set up to obtain docs / information, grab source code and follow development in real-time.&lt;br /&gt;
* SourceCode project summary: http://sourceforge.net/projects/gggoooiiippp/&lt;br /&gt;
* Dedicated website: http://gggoooiiippp.sf.net/&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
Geeklog has had support for OpenID since [http://www.geeklog.net/article.php/geeklog-1.5.0 version 1.5.0].&lt;br /&gt;
&lt;br /&gt;
However, it currently only supports OpenID 1.1, you can only allow users to login using OpenID but can not have your Geeklog site act as an OpenID provider, and the library we are using isn't supported any more.&lt;br /&gt;
&lt;br /&gt;
So for this project, we are looking for&lt;br /&gt;
&lt;br /&gt;
* OpenID 2.0 support&lt;br /&gt;
* support for both the Consumer and the Provider side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
The idea behind [http://openid.net/ OpenID] is to provide a generic login that you can use to log into any site that supports OpenID without the need to register with all those sites. The current version of the OpenID specification is 2.0 and has since been widely adopted and received backing from many well-known names.&lt;br /&gt;
&lt;br /&gt;
==== Consumer and Provider ====&lt;br /&gt;
&lt;br /&gt;
OpenID covers both sides of the login process: A website can allow users to login using their OpenID (i.e. act as a ''Consumer'') and it can provide an OpenID identity for users (i.e. act as a ''Provider'') which they can then use to log into other OpenID-enabled sites.&lt;br /&gt;
&lt;br /&gt;
A Geeklog site can currently only act as an OpenID consumer. We would like to see this extended to allow a site to also act as an OpenID provider for their users.&lt;br /&gt;
&lt;br /&gt;
Things to consider:&lt;br /&gt;
&lt;br /&gt;
* It should be possible to limit providing an OpenID identity only to members of a certain Geeklog group.&lt;br /&gt;
* An OpenID login consists of a URL. We would need a simple and memorable URL scheme on the Geeklog side that can be used as the OpenID login.&lt;br /&gt;
&lt;br /&gt;
==== Finding an OpenID Library ====&lt;br /&gt;
&lt;br /&gt;
The main problem with this project is to find a usable OpenID 2.0 library. When checking the [http://wiki.openid.net/Libraries list of available libraries] it turns out that all the PHP libraries listed there suffer from one or more of the following problems:&lt;br /&gt;
&lt;br /&gt;
* does not support OpenID 2.0&lt;br /&gt;
* does only support one side (Consumer or Provider, but not both)&lt;br /&gt;
* is part of an exisiting framework&lt;br /&gt;
* is not available under a license that's compatible with the GPLv2&lt;br /&gt;
&lt;br /&gt;
So the student's first task would be to research the available options and see if there is an OpenID library that fits our requirements or if it has to be implemented during this project.&lt;br /&gt;
&lt;br /&gt;
==== New Implementation? ====&lt;br /&gt;
&lt;br /&gt;
Should it turn out that there are no suitable libraries available, we would like to see a new library being implemented that is&lt;br /&gt;
&lt;br /&gt;
* object oriented&lt;br /&gt;
* reusable (and, specifically, ''not'' tied to Geeklog)&lt;br /&gt;
* supports OpenID 2.0&lt;br /&gt;
* allows for both the Consumer and the Provider side&lt;br /&gt;
* published under the GPLv2 or a compatible license&lt;br /&gt;
&lt;br /&gt;
Developing a new library would take up a good portion of the available time for this project, so it's possible that the student won't be able to finish integration of the library into Geeklog. We're willing to accept this in exchange for a solid and usable OpenID library.&lt;br /&gt;
&lt;br /&gt;
Also see [http://eight.pairlist.net/pipermail/geeklog-devel/2009-March/004139.html this post] on the geeklog-devel mailing list for some clarification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
The level of difficulty depends on the availability of a usable OpenID library:&lt;br /&gt;
&lt;br /&gt;
* ''hard'' - if the OpenID 2.0 library has to be implemented by the student.&lt;br /&gt;
* '' medium'' - if a suitable library exists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_plugin_repository&amp;diff=5243</id>
		<title>SoC plugin repository</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_plugin_repository&amp;diff=5243"/>
				<updated>2009-05-09T17:25:18Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
Geeklog's functionality can be extended by plugins, i.e. add-ons that use the dedicated plugin API which allows them to be seamlessly integrated into Geeklog. The standard Geeklog distribution ships with some plugins pre-installed (Calendar, Spam filter, etc.). Other popular plugins include a forum and image galleries.&lt;br /&gt;
&lt;br /&gt;
Traditionally, installation of a plugin was a somewhat awkward process: After unpacking the tarball or Zip archive, you have to rename and move three directories into specific places, then run the plugin installation script.&lt;br /&gt;
&lt;br /&gt;
Thanks to the Google Summer of Code, this is about to change in Geeklog 1.6.0. Now you can upload plugins directly from Geeklog's plugin admin panel. Geeklog will take care of moving the directories into their proper place and also run the install automatically.&lt;br /&gt;
&lt;br /&gt;
With this project, we want to take things one step further and allow plugin installation over the internet.&lt;br /&gt;
&lt;br /&gt;
The idea is to provide a plugin repository from which the admin of a site can easily pick a plugin for installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
To allow installation of a plugin from a plugin repository, both sides have to be implemented. So the goals of this project are&lt;br /&gt;
&lt;br /&gt;
* Implement a &amp;quot;Plugin Repository&amp;quot; plugin&lt;br /&gt;
* Extend the plugin admin panel in Geeklog to allow download from a plugin repository&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Plugin Repository ====&lt;br /&gt;
&lt;br /&gt;
The plugin repository should be implemented as a Geeklog plugin itself. It will be installed on sites that want to provide plugins for download. Geeklog's homepage would be an obvious use case, but plugin authors may also want to provide their own repositories on their own sites.&lt;br /&gt;
&lt;br /&gt;
The general features are similar to those of the existing File Management plugin, namely&lt;br /&gt;
&lt;br /&gt;
* allow users to upload plugins&lt;br /&gt;
* require approval from a moderator&lt;br /&gt;
* allow users to download the approved plugin&lt;br /&gt;
&lt;br /&gt;
The repository should allow more flexibility here, though, depending on the use case, e.g.:&lt;br /&gt;
&lt;br /&gt;
# an &amp;quot;Open&amp;quot; setup (e.g. geeklog.net):&lt;br /&gt;
#* any user can upload&lt;br /&gt;
#* users can update their submission (requires re-approval)&lt;br /&gt;
# a &amp;quot;Closed&amp;quot; setup (e.g. plugin author's private site):&lt;br /&gt;
#* only dedicated users can upload&lt;br /&gt;
#* no approval required&lt;br /&gt;
#* dedicated users can update their submissions without approval&lt;br /&gt;
&lt;br /&gt;
These options should be configurable.&lt;br /&gt;
&lt;br /&gt;
===== Notes =====&lt;br /&gt;
&lt;br /&gt;
* For large repositories, a category system would help to keep things maintainable and usable.&lt;br /&gt;
* Uploaded files should be checked automatically. For example, a minimal Geeklog plugin will always contain a file called &amp;lt;tt&amp;gt;functions.inc&amp;lt;/tt&amp;gt; and should also include a file &amp;lt;tt&amp;gt;autoinstall.php&amp;lt;/tt&amp;gt; to allow automatic installation.&lt;br /&gt;
* The repository should allow &amp;quot;traditional&amp;quot; downloads from a browser, too, in case users need to do manual plugin installs.&lt;br /&gt;
* Geeklog provides PHP classes for upload and download of files. The download from within Geeklog can be done using the PEAR HTTP::Request package.&lt;br /&gt;
&lt;br /&gt;
==== Feeds ====&lt;br /&gt;
&lt;br /&gt;
Information about the plugins in a plugin repository should be provided as feeds (e.g. Atom or RSS). A Geeklog site admin should be able to subscribe to these feeds easily in order to stay informed about new plugins and updates to existing plugins - especially updates of plugins they have already installed.&lt;br /&gt;
&lt;br /&gt;
Geeklog provides a framework for reading and writing feeds in various formats (Atom, RSS, RDF).&lt;br /&gt;
&lt;br /&gt;
==== Plugin admin panel ====&lt;br /&gt;
&lt;br /&gt;
Geeklog's plugin admin panel should get a new pane that handles&lt;br /&gt;
&lt;br /&gt;
* feeds and update information&lt;br /&gt;
* selecting a plugin for installation&lt;br /&gt;
&lt;br /&gt;
==== Questions ====&lt;br /&gt;
&lt;br /&gt;
Some questions and considerations to get the student started:&lt;br /&gt;
&lt;br /&gt;
* Use case: User finds a new site that offers a plugin repository. How can they easily subscribe to that site's feed?&lt;br /&gt;
* A plugin that is installed from a repository could provide an update feed for itself. How should these be handled? This may require additional plugin API functions.&lt;br /&gt;
* Security considerations: Ensure integrity of plugin archives (checksums). What can we do about malicious plugin repositories?&lt;br /&gt;
&lt;br /&gt;
==== Considerations for the Future ====&lt;br /&gt;
&lt;br /&gt;
In the future (post-GSoC), we may want to extend the functionality to allow download and installation of other components, e.g. themes and language files. The code for this project should therefore be written in a way that it allows future extensions and avoids things like hard-coded paths or making assumptions that would only apply to Geeklog plugins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
''medium''&lt;br /&gt;
&lt;br /&gt;
Geeklog already provides solutions for the basic tasks: Uploads, downloads, plugin installation, feeds. Putting them all together in a way that's easy and secure to use is what this project is about.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Matt West&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_webservices_revisited&amp;diff=5242</id>
		<title>SoC webservices revisited</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_webservices_revisited&amp;diff=5242"/>
				<updated>2009-05-09T17:24:17Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: pre-SoC / present work content seperation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
As part of the 2007 Summer of Code, a webservices API has been [[SoC_webservices_publishing|implemented]] in Geeklog. It provides the basic framework (RESTful communication, authentication) and implements the Atom Publishing Protocol (RFC 5023, ''Atompub'') for stories and the plugin API (with the Static Pages plugin as a sample implementation).&lt;br /&gt;
&lt;br /&gt;
In this project, we would like the student to look into areas where the webservices could also be added and, possibly, where they need changes or additions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Areas of Interest ===&lt;br /&gt;
&lt;br /&gt;
The following areas would appear to make useful additions to the webservices API:&lt;br /&gt;
&lt;br /&gt;
* image upload in stories&lt;br /&gt;
* story submissions&lt;br /&gt;
* comments&lt;br /&gt;
&lt;br /&gt;
These would appear to make the most sense at this time, to round off the existing functionality of the webservices API and bring it in sync with what can be done through the normal web-based UI.&lt;br /&gt;
&lt;br /&gt;
We are open for suggestions for additional areas where the webservices API could be used, though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
==== Image Upload ====&lt;br /&gt;
&lt;br /&gt;
When using the Admin's version of the story editor, a user can upload images that are to be used in the article (includes automatic thumbnail creation, link to the full-size version, etc.). This has been left out in the original implementation of the webservices API for the stories.&lt;br /&gt;
&lt;br /&gt;
Atompub does have support for images and other types of media (''Media Resources''). Therefore, it should be possible to implement the image upload via the webservices API so that an Atompub client can be used to publish articles with images in them.&lt;br /&gt;
&lt;br /&gt;
==== Story Submissions ====&lt;br /&gt;
&lt;br /&gt;
A Geeklog site allows visitors to submit stories for publication on the site. These will usually have to be approved by a moderator first. Story submissions are stored in a separate submission queue until approved (or rejected). The webservices API should be extended to allow users to submit stories and moderators to approve or reject (delete) submissions.&lt;br /&gt;
&lt;br /&gt;
Since moderation of submissions is also available for plugins (through Geeklog's plugin API), it would be preferable if this could be implemented in such a manner that webservices access is also available for plugins.&lt;br /&gt;
&lt;br /&gt;
To be discussed: Whether to expose the existence of a submission queue or not. It may make sense to treat submissions as normal entries and only set the &amp;quot;draft&amp;quot; flag for them.&lt;br /&gt;
&lt;br /&gt;
==== Comments ====&lt;br /&gt;
&lt;br /&gt;
Comments by readers are supported for stories and plugins using the comment plugin API (e.g. Polls, Static Pages). There should be a way for users to submit (and possibly edit) their comments through the webservices API.&lt;br /&gt;
&lt;br /&gt;
Note: Editable comments were part a [[SoC_improving_comments_2008|GSoC project in 2008]] and will be available as of Geeklog 1.6.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
''medium to high''&lt;br /&gt;
&lt;br /&gt;
Implementing ''both'' the Image Upload and the Submission Queue is probably too big a project for the Summer of Code. Our estimate is that either of these would require about two thirds of the time of the program.&lt;br /&gt;
&lt;br /&gt;
Students interested in this project should indicate which of the two sub-projects they would like to be working on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
&lt;br /&gt;
* [[Webservices API]]&lt;br /&gt;
* [[Using the Webservices]]&lt;br /&gt;
* RFC 5023: The Atom Publishing Protocol&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_test_framework&amp;diff=5241</id>
		<title>SoC test framework</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_test_framework&amp;diff=5241"/>
				<updated>2009-05-09T17:23:30Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: pre-SoC / present work content seperation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
Very little testing on Geeklog is currently done automatically. As the complexity of the software is ever increasing, it's not enough to rely on manual tests done by the developers (and, by extension, the community during beta and release candidate phases) any more.&lt;br /&gt;
&lt;br /&gt;
So the goal of this project is to implement test framework(s) to allow for automated tests of Geeklog and its features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
There are two aspects that we'd like to see tested, which may actually make it possible to have this split into '''two''' projects:&lt;br /&gt;
&lt;br /&gt;
* tests of the code on class / function level&lt;br /&gt;
* tests of the front-end functionality available through the browser&lt;br /&gt;
&lt;br /&gt;
At the code level, [http://en.wikipedia.org/wiki/Unit_testing unit tests] are required to make sure the code behaves as expected at its interface (API) so that after making changes to the internals, the API still behaves the same.&lt;br /&gt;
&lt;br /&gt;
Unit testing is usually associated with object oriented code, which may sound like a problem given that Geeklog is not fully object oriented. However, unit tests can also be written for the many collections of functions in &amp;lt;tt&amp;gt;system/lib-*.php&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;lib-common.php&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Testing the functionality implemented in, say, &amp;lt;tt&amp;gt;admin/story.php&amp;lt;/tt&amp;gt; (the Admin panel that provides access to all stories on a site) is probably best done through a tool that tests the web frontend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Frameworks ===&lt;br /&gt;
&lt;br /&gt;
There already exist numerous test frameworks for PHP code and for web applications. So unless there's a ''very'' good reason not to pick one of those, we would suggest looking into existing frameworks (and adapt them, if necessary).&lt;br /&gt;
&lt;br /&gt;
Here's an incomplete list of test frameworks. We expect the student to research more options before making a choice:&lt;br /&gt;
&lt;br /&gt;
* [http://qa.php.net/write-test.php PHP Tests] (*.phpt) as used by the PHP project&lt;br /&gt;
* [http://www.phpunit.de/ PHPUnit]&lt;br /&gt;
* [http://seleniumhq.org/ Selenium]&lt;br /&gt;
&lt;br /&gt;
Open source solutions would be preferred, although there are some commercial frameworks that may be worth looking into.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
''low to medium''&lt;br /&gt;
&lt;br /&gt;
The focus in this project lies on picking the proper tool (i.e. test framework) and then demonstrating that it does the job by implementing tests for a representative portion of the code / functionality. We certainly don't expect complete coverage of all of Geeklog in just one summer. This project is about laying the groundwork.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_full_openid_support&amp;diff=5240</id>
		<title>SoC full openid support</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_full_openid_support&amp;diff=5240"/>
				<updated>2009-05-09T17:21:37Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
Geeklog has had support for OpenID since [http://www.geeklog.net/article.php/geeklog-1.5.0 version 1.5.0].&lt;br /&gt;
&lt;br /&gt;
However, it currently only supports OpenID 1.1, you can only allow users to login using OpenID but can not have your Geeklog site act as an OpenID provider, and the library we are using isn't supported any more.&lt;br /&gt;
&lt;br /&gt;
So for this project, we are looking for&lt;br /&gt;
&lt;br /&gt;
* OpenID 2.0 support&lt;br /&gt;
* support for both the Consumer and the Provider side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
The idea behind [http://openid.net/ OpenID] is to provide a generic login that you can use to log into any site that supports OpenID without the need to register with all those sites. The current version of the OpenID specification is 2.0 and has since been widely adopted and received backing from many well-known names.&lt;br /&gt;
&lt;br /&gt;
==== Consumer and Provider ====&lt;br /&gt;
&lt;br /&gt;
OpenID covers both sides of the login process: A website can allow users to login using their OpenID (i.e. act as a ''Consumer'') and it can provide an OpenID identity for users (i.e. act as a ''Provider'') which they can then use to log into other OpenID-enabled sites.&lt;br /&gt;
&lt;br /&gt;
A Geeklog site can currently only act as an OpenID consumer. We would like to see this extended to allow a site to also act as an OpenID provider for their users.&lt;br /&gt;
&lt;br /&gt;
Things to consider:&lt;br /&gt;
&lt;br /&gt;
* It should be possible to limit providing an OpenID identity only to members of a certain Geeklog group.&lt;br /&gt;
* An OpenID login consists of a URL. We would need a simple and memorable URL scheme on the Geeklog side that can be used as the OpenID login.&lt;br /&gt;
&lt;br /&gt;
==== Finding an OpenID Library ====&lt;br /&gt;
&lt;br /&gt;
The main problem with this project is to find a usable OpenID 2.0 library. When checking the [http://wiki.openid.net/Libraries list of available libraries] it turns out that all the PHP libraries listed there suffer from one or more of the following problems:&lt;br /&gt;
&lt;br /&gt;
* does not support OpenID 2.0&lt;br /&gt;
* does only support one side (Consumer or Provider, but not both)&lt;br /&gt;
* is part of an exisiting framework&lt;br /&gt;
* is not available under a license that's compatible with the GPLv2&lt;br /&gt;
&lt;br /&gt;
So the student's first task would be to research the available options and see if there is an OpenID library that fits our requirements or if it has to be implemented during this project.&lt;br /&gt;
&lt;br /&gt;
==== New Implementation? ====&lt;br /&gt;
&lt;br /&gt;
Should it turn out that there are no suitable libraries available, we would like to see a new library being implemented that is&lt;br /&gt;
&lt;br /&gt;
* object oriented&lt;br /&gt;
* reusable (and, specifically, ''not'' tied to Geeklog)&lt;br /&gt;
* supports OpenID 2.0&lt;br /&gt;
* allows for both the Consumer and the Provider side&lt;br /&gt;
* published under the GPLv2 or a compatible license&lt;br /&gt;
&lt;br /&gt;
Developing a new library would take up a good portion of the available time for this project, so it's possible that the student won't be able to finish integration of the library into Geeklog. We're willing to accept this in exchange for a solid and usable OpenID library.&lt;br /&gt;
&lt;br /&gt;
Also see [http://eight.pairlist.net/pipermail/geeklog-devel/2009-March/004139.html this post] on the geeklog-devel mailing list for some clarification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
The level of difficulty depends on the availability of a usable OpenID library:&lt;br /&gt;
&lt;br /&gt;
* ''hard'' - if the OpenID 2.0 library has to be implemented by the student.&lt;br /&gt;
* '' medium'' - if a suitable library exists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5237</id>
		<title>SoC postgres support</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5237"/>
				<updated>2009-05-09T14:59:25Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pre-Summer of Code idea discussion &amp;amp; preparation ==&lt;br /&gt;
&lt;br /&gt;
=== Incentive ===&lt;br /&gt;
&lt;br /&gt;
Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for [http://www.postgresql.org/ PostgreSQL] (aka Postgres).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
The idea is simple: Create a database abstraction layer for PostgreSQL for Geeklog. In theory, that would &amp;quot;only&amp;quot; require the implementation of one class in one file: &amp;lt;tt&amp;gt;system/databases/postgres.class.php&amp;lt;/tt&amp;gt; (alongside &amp;lt;tt&amp;gt;mysql.class.php&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;mssql.class.php&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Due to Geeklog's thin database abstraction layer, some non-standard SQL has crept into the codebase here and there. The MS SQL implementation works around this by patching some of those requests at runtime. While our goal is to use standard-compliant SQL as much as possible it may not always be possible to change this for reasons of backward compatibility. Also, not all the code is under our control, e.g. in plugins.&lt;br /&gt;
&lt;br /&gt;
In addition to the actual database class, there are also database-specific files to initialize and upgrade the database and the plugins. They usually include the SQL requests to be executed as well as, in case of upgrade files, some PHP code. Equivalents of these files for Postgres will also have to be implemented (obviously, we would not need upgrade files for older Geeklog versions).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Level of Difficulty ===&lt;br /&gt;
&lt;br /&gt;
''medium to high''&lt;br /&gt;
&lt;br /&gt;
Students interested in this project should be ''very'' familiar with Postgres to be able to work around the restrictions outlined above.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Vinny Furia&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL homepage]&lt;br /&gt;
* [http://www.geeklog.net/article.php/20060918173353100 Announcement] of the MS SQL support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5236</id>
		<title>SoC postgres support</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5236"/>
				<updated>2009-05-09T14:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: /* = Project info and advancement during Summer of Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project info and advancement during Summer of Code ===&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pre-Summer of Code idea discussion &amp;amp; preparation ===&lt;br /&gt;
&lt;br /&gt;
== Incentive ==&lt;br /&gt;
&lt;br /&gt;
Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for [http://www.postgresql.org/ PostgreSQL] (aka Postgres).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
The idea is simple: Create a database abstraction layer for PostgreSQL for Geeklog. In theory, that would &amp;quot;only&amp;quot; require the implementation of one class in one file: &amp;lt;tt&amp;gt;system/databases/postgres.class.php&amp;lt;/tt&amp;gt; (alongside &amp;lt;tt&amp;gt;mysql.class.php&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;mssql.class.php&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Due to Geeklog's thin database abstraction layer, some non-standard SQL has crept into the codebase here and there. The MS SQL implementation works around this by patching some of those requests at runtime. While our goal is to use standard-compliant SQL as much as possible it may not always be possible to change this for reasons of backward compatibility. Also, not all the code is under our control, e.g. in plugins.&lt;br /&gt;
&lt;br /&gt;
In addition to the actual database class, there are also database-specific files to initialize and upgrade the database and the plugins. They usually include the SQL requests to be executed as well as, in case of upgrade files, some PHP code. Equivalents of these files for Postgres will also have to be implemented (obviously, we would not need upgrade files for older Geeklog versions).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Level of Difficulty ==&lt;br /&gt;
&lt;br /&gt;
''medium to high''&lt;br /&gt;
&lt;br /&gt;
Students interested in this project should be ''very'' familiar with Postgres to be able to work around the restrictions outlined above.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Vinny Furia&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL homepage]&lt;br /&gt;
* [http://www.geeklog.net/article.php/20060918173353100 Announcement] of the MS SQL support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	<entry>
		<id>http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5235</id>
		<title>SoC postgres support</title>
		<link rel="alternate" type="text/html" href="http://gwiki3.thatlinuxbox.com/index.php?title=SoC_postgres_support&amp;diff=5235"/>
				<updated>2009-05-09T14:58:15Z</updated>
		
		<summary type="html">&lt;p&gt;Choplair: separation of content that prepared SoC, and (future) content about the concrete summer project advancement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;(This is an idea page for the [[Google Summer of Code]])&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project info and advancement during Summer of Code ==&lt;br /&gt;
&lt;br /&gt;
(to be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pre-Summer of Code idea discussion &amp;amp; preparation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Incentive ==&lt;br /&gt;
&lt;br /&gt;
Geeklog currently supports MySQL and MS SQL Server for the database. Recently, we have had an increasing amount of requests to add support for [http://www.postgresql.org/ PostgreSQL] (aka Postgres).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
&lt;br /&gt;
Development of Geeklog started back in 2000 when most of today's database abstraction layers didn't even exist yet. It therefore uses its own (thin) abstraction layer and will have to continue to do so for the foreseeable future.&lt;br /&gt;
&lt;br /&gt;
The idea is simple: Create a database abstraction layer for PostgreSQL for Geeklog. In theory, that would &amp;quot;only&amp;quot; require the implementation of one class in one file: &amp;lt;tt&amp;gt;system/databases/postgres.class.php&amp;lt;/tt&amp;gt; (alongside &amp;lt;tt&amp;gt;mysql.class.php&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;mssql.class.php&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Due to Geeklog's thin database abstraction layer, some non-standard SQL has crept into the codebase here and there. The MS SQL implementation works around this by patching some of those requests at runtime. While our goal is to use standard-compliant SQL as much as possible it may not always be possible to change this for reasons of backward compatibility. Also, not all the code is under our control, e.g. in plugins.&lt;br /&gt;
&lt;br /&gt;
In addition to the actual database class, there are also database-specific files to initialize and upgrade the database and the plugins. They usually include the SQL requests to be executed as well as, in case of upgrade files, some PHP code. Equivalents of these files for Postgres will also have to be implemented (obviously, we would not need upgrade files for older Geeklog versions).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Level of Difficulty ==&lt;br /&gt;
&lt;br /&gt;
''medium to high''&lt;br /&gt;
&lt;br /&gt;
Students interested in this project should be ''very'' familiar with Postgres to be able to work around the restrictions outlined above.&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Vinny Furia&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.postgresql.org/ PostgreSQL homepage]&lt;br /&gt;
* [http://www.geeklog.net/article.php/20060918173353100 Announcement] of the MS SQL support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Choplair</name></author>	</entry>

	</feed>