Gallery2:SummerOfCode - Gallery Codex
Personal tools

Gallery2:SummerOfCode

From Gallery Codex

Summer of Code

In 2005, Gallery participated in the Google Summer of Code where Google paid 12 students to work on independent projects for Gallery. It was a very successful endeavor resulting in a great deal of progress in areas of the project that we did not have enough resources to complete on our own. Here are descriptions of the projects written by the students.

Sample Project Name

Project Synopsis

Write two to three short paragraphs describing what you worked on and how you implemented it. Use supporting links where possible.

About the Student

Write one paragraph about yourself

Remote Protocol (XML-RPC)

Project Synopsis

The remote protocol module implements a web service framework using XML-RPC. This allows for a standardized way to access and manipulate Gallery2 data. The implementation also gives the ability for other modules to expose methods as a web service. A module developer can easily extend their module and implement a web service without having to deal with the complexities of a web service.

The remote protocol module is notified of all other G2 modules that want to implement RPC methods and exposes those methods to clients automatically. It translates PHP data types to XML-RPC data types and also translates G2 error statuses/codes to XML-RPC errors.

About the Student

My name is Chris Schwerdt and I am currently pursuing a BS degree in Computer Science at the University of Utah. I began programming in high school when I took a class on PASCAL. From there I've progressed to learn many other languages (Java, C/C++, PHP, VB) and coding techniques. In my spare time (rare) I enjoy coding (imagine that!), reading non-fiction, and in general--being an internet geek.

Remote Protocol Integration

Project Synopsis

This project built upon the Remote Protocol project and integrated RPC into the main G2 Core API. This will allow any of the RPC protocols such as XMLRPC, SOAP, REST, etc... to interface with the G2 Core API. Currently supported are Image, Album, User, Group and Permission management.

A debugger was necessary during the development of this project so a web based XMLRPC debugger was coded in PHP using Pear's XMLRPC API and AJAX. The debugger provides you with all available XMLRPC methods and uses AJAX to provide the appropriate inputs for each function. Also provided is an option to view the raw request and response from the server to aid in debugging functions.

About the Student

My name is John Kelley and I am currently completing a BCSc at Dalhousie University in Halifax, Nova Scotia. Besides Gallery, I also work on other open source projects such as PearPC and PSPSDK and run a small game studio, Arc-9 Interactive. When I'm not stuck in front of a computer coding, I play hockey and football, ride my Specialized Sirrus, and play the odd video game.

Gallery 2/Zen Cart integration

Project Synopsis

The Gallery 2/Zen Cart integration module allows the sale of Gallery items through a powerful open source e-commerce application, Zen Cart. Users are able to add and configure a variety of product, shipment, and payment options, while having their Gallery items automagically connected to Zen Cart's product management and shopping cart system.

The Gallery 2/Zen Cart integration connects an installation of Gallery 2 with a Zen Cart installation such that all albums in Gallery are automatically added as categories in Zen Cart, all Gallery items (photos, movies, etc.) are added as products, and both are kept synchronized. In the site administration, the user can configure what options should be available for his Gallery products and their default pricing, while in Zen Cart he or she can use its flexible and powerful pricing options to offer special pricing on any products.

Further information and instructions can be found on the module page and packaged releases can be downloaded from SourceForge. More information on the initial development and other technical aspects of the project are available on my user page, while current code is browseable in SourceForge CVS and can be checked out from :pserver:anonymous@cvs.sourceforge.net:/cvsroot/gallery-contrib/zcg2 (see instructions at SourceForge).

About the Student

My name is Michael Rodriguez-Torrent, and I am a Theatre major at Arizona State University (studying abroad at University of Leeds this year). Um, I almost went into Computer Science, heh, but then I decided it's not something I want to do full-time. I started programming in middle school, with Visual Basic, then started hacking on an open source Perl project, and from there taught myself Perl, PHP, and some C/C++. I have coded or hacked on these projects or modules related to them: YaBB, YaBB SE (now SimpleMachines Forum), Video4Linux (saa7134 module), WordPress, and Gallery!

Downloadable Plugins

Project Synopsis

The Downloadable Plugins project is a framework for Gallery 2 that enables users to browse a central repository of plugins (both modules and themes) on the project's web server through the Site Administration, check if their modules are up to date, download compatible modules they want and prepare them for installation. It includes tools for the repository maintainers.

Currently, Gallery can be downloaded in several packages, each one containing a set of plugins tailored for a specific user profile. The problem with this approach is that adding plugins not included in the initially downloaded package requires knowledge of archiving utilities and at least a basic understanding of FTP or shell commands. A plugin packaging system which relies on a central repository streamlines this process by allowing users to browse available plugins through a friendly user interface. Users can then simply download and install only the plugins they want to use. It also makes it possible for users to check if there are any newer versions of their favorite modules or themes and upgrade. All plugin installation-related tasks are handled by Gallery, which greatly reduces plugin installation time and prevents version conflicts, because the compatibility of plugins with the installed version of the Gallery core module is automatically determined. It also makes it possible to easily download translations and keep them up-to-date.

The complete project documentation is available on this page.

About the Student

My name is Jožef Seleši, and I am majoring in Computer Science and Automatics at the Faculty of Technical Sciences in Novi Sad, Serbia. This is the first open source project I've participated in. I started programming and working on computers around fifteen years ago. Over the last 5-6 years, I've familiarized myself with many languages, tools, technologies and patterns for software development. Lately, I have mostly programmed using PHP, SQL, .NET, C#. I enjoy reading and learning about almost everything in the IT field. Other, non IT related activities that I enjoy are reading good books, watching movies, bicycle riding, running, weight lifting and mountaineering.

User Integration Tasks

Project Synopsis

This project is a module that contains the general synchronization logic for synchronizing userbases when integrating G2 into an existing app, such as Drupal. An interface class exists to allow the integration coder to fill in the details, such as creating, updating, retrieving users in the integration app. The module puts all these details together and handles potential conflicts.

Conflicts are listed on the module's admin page, stored via GalleryDataCache. The Site Admin has the option of resolving any conflicts that may arise such as duplicate users, mismatched passwords, etc. In the near future we will be adding group syncing capability. More information about the project is available here.

About the Student

My name is Michael Classic and I am a 24 year old first year student at Mohawk College in Hamilton, Ontario. Yes, I decided to go back to school. The program I am taking is entitled Network Engineering & Security Analyst. This is my first formal experience with open source. I have been playing/using computers since I was four years old, and have been programming in one language or another since I was thirteen. Languages I am familiar with are C, Perl, Assembly, PHP, SQL (mySQL mainly, and a little MS-SQL), some C++. I love programming and networking having also maintained a shell provider in my past.

Duplicate Image Detection

Project Synopsis

This project is a module that adds duplicate image detection functionality to G2. It displays to an administrator of the gallery the pairs of duplicate images that were uploaded to the gallery, and provides him/her with ability to perform several actions on the pairs such as linking the two images or deleting one of them. Also available is a maintenance task that creates duplications signatures for all the images that do not have one and identify duplicates for these. This task is needed when the module is activated for an existing galery.

Two types of duplicate image detections are currently implemented: exact (using CRC32 signatures) and approximate (using histogram signatures). The signatures for each image are extracted when the image is firstly saved (i.e. when it is being uploaded to the gallery), and then duplicate existing images are looked for. The approximate duplicate detection is cooler as it can detect, for instance, copies of an image uploaded at different resolutions and different image formats as duplicate.

About the Student

My name is Aviad Tsherniak and I live in Tel-Aviv, Israel. I'm currently studying for an MSc degree in Computer Science at the Tel-Aviv University, majoring in Bio-informatics. I've been programming since I was a kiddo in the late 80s. I got familiar with various development environments and programming languages such as C++, C#, VB, SQL, ASP.NET and PHP. This project was my first Open-Source experience which I enjoyed greatly. I think it is amazing to see how this OS thing works. Other things I like doing includes Yoga, watching "quality" films and baking cakes.

DHTML Slideshow Theme

Project Synopsis

My project was originally proposed as an AJAX-enabled slideshow, with the idea being that as the slideshow progressed, the data for new photos would be pulled in asynchronously through JavaScript calls to an XML backend. About a third of the way into the project I switched direction and decided to concentrate on making the theme exploit aspects of DHTML to operate a smooth slideshow, similar to the way flickr operates. Instead of pulling in new data before each photo loads, which could've ended up being quite slow, I instead pulled in all relevant data for an album when it is loaded, so that the slideshow can operate without any further calls.

I worked on making the theme more efficient than the current themes available that work like slideshows (Slider, Hybrid etc.), by only loading in a reasonably-sized derivative image (for example, a 640x480 version), so that users don't have to download the fullsized version of an image if they don't need it.

The theme can work with albums of arbitrary size (the album becomes paginated to preserve addressability).

About the Student

My name is Ross Shannon and I'm from Dublin in Ireland. I recently completed a degree in Computer Science in University College Dublin. My primary love is web design, which is why I went for the more "visual" project available, rather than working on Gallery's backend. I learned a lot about modern JavaScript coding and CSS, particularly in the tricky area of getting everything to work across browsers with very different levels of support. Throughout this summer I've been working on IBM's "Extreme Blue" summer internship, which explains why the majority of my code only came together in the last few days before the deadline. This was the first time I had actively contributed code to an Open Source project, and I really enjoyed it.

Hidden and Password-Protected Items

Project Synopsis

The purpose of this project was to add the ability to hide and/or password-protect any item in a Gallery2 installation. Most of the work involved defining what "hidden" and "password-protected" actually mean! Currently, you can hide or password-protect any item, and for albums you can cascade the changes to all items contained within.

About the Student

My name is Jess Martin and I am currently a PhD student in computer science at the University of North Carolina, Chapel Hill. I'm doing research on procedurally-generated graphics, specifically generating residential homes via a procedure. My interests include architecture, playing guitar, ultimate frisbee, and researching crazy ideas in computer science.

Flash-Based Theme (Fluid)

Project Synopsis

The idea behind this project was to create a theme, where the interface to the album in Gallery2 could be completely based on Flash. This helps provide the user with a little more dynamic experience than what is generally available with just static HTML. For example, page changes or Album changes don't have to involve a complete page refresh in Flash, the new thumbnails just load on the screen. When you click on a graphic, it comes up in a small window within the application. Some of the buttons work more dynamically and include animation.

Although I was able to successfully produce what we laid out to do with the project. I think that it still may just be a great protocol or "proof of concept" for what else might be possible. For example ... as G2 starts to implement XMLRPC, and modules start to support it -- a lot of the functions could be performed directly by the Flash Theme, because it could call modules directly, instead of having to revert to an HTML page!

About the Student

My real name is Jeremy Despain. I have been doing computer "stuff" for over 10 years now. Most of the work I have done is in web application programming and database work. Even though I've done a lot of web programming, it's been in other languages (ColdFusion, Java) ... so this the first project that I've worked on that really involved a lot of PHP. I quickly learned that I already knew more PHP than I thought. I found PHP to be a very intuitive language, and the way that the Gallery team has laid out the framework for the site, has made learning and adapting to G2 pretty straightforward.

When I was going to school years ago, I was majoring in a completely different field. About a year ago or so, I started taking classes again to hone my skills as a developer.

I live in Salt Lake City, UT. I'm married and have two great daughters -- ages 2 and 5. I'm an avid outdoor person, I love hiking, camping getting out for drives -- if it's outside, I probably enjoy it! I also serve as a Scout Master for a local Boy Scout Troop.

Picasa 2 Import

Project Synopsis

The purpose of this project was to give G2 the ability to import albums from Picasa, so that users could manage their pictures locally and then do an XML export of the album which G2 would parse. As of now the module understands picasa exports, and imports the order of pictures, their names and descriptions as well as albumnames. As of now the module works for the admin only with a local Picasa export. However ZIP upload functionality for any user will be added very soon. The project ran under the supervision of h0bbel, whom I am very grateful to for his suggestions and remarks. I am also grateful to bharat and mindless for doing thorough code reviews and spending their time to help me.

About the Student

My name is Waldemar Schlackow and I am currently a PhD student in mathematics at Oxford University. I have been involved into different kinds of programming for many years, but this was actually the first OpenSource experience for me which I very much enjoyed. I hope to continue my work on gallery in the near future. It has a great team of developers which dedicates a lot of their time for nothing, unlike us ex-SoC students :) As to my personal situation: I'm married to the best woman in the world, Iryna, and we both will be students for at least another four years. We're living in a small flat in Summertown, Oxford and enjoy student life.