Eigen contributies aan de open source wereld

Open source op grote schaal gebruiken gaat niet zonder af en toe ook open source te ontwikkelen

Solide is zelf steeds bezig met het opvolgen van de laatste nieuwe trends op het gebied van open source software. Daarnaast ontwikkelen we ook met grote regelmaat eigen projecten die worden bijgedragen aan de open source wereld. Hier volgt een opsomming van projecten die we gelanceerd hebben (of waar we mee bezig zijn):

Cells

Voor herbruikbare componenten is in Ruby on Rails betrekkelijk weinig ondersteuning. Toch is het vaak handig om stukjes presentatie en zelfs (controller-) logica te kunnen hergebruiken.

Denk aan bijvoorbeeld "widgets" die terugkomen op iedere pagina, waar behalve markup ook een berekening nodig is. Als men veel van dit soort terugkomende functionaliteit heeft, zou dit gerealiseerd kunnen worden door zelf iedere keer een eigen oplossing te verzinnen op basis van
bijvoorbeeld Helpers en Modules, maar het is veel handiger om deze logica en presentatie elementen bij elkaar te groeperen en overzichtelijk
in een component te stoppen.

Om dit mogelijk te maken heeft Solide een aanzienlijke bijdrage geleverd aan de door Nick Sutterer opgerichte Cells plugin. Concreet heeft Solide de volgende taken voor haar rekening genomen:

  • Cells automatisch laadbaar maken, zodat niet iedere keer de server hoeft te worden geherstart.
  • Het creëren van een Cells klasse-hierarchie, zodat Cells bestaande functionaliteit in andere Cells kunnen hergebruiken of aanpassen.
  • Het geschikt maken van Cells voor Rails 1.1.6, en later ook voor Rails 2.1
  • Uitvoerige API-documentatie schrijven.
  • Het mogelijk maken Cells presentatie recursief en onafhankelijk van eerder aangeroepen code te kunnen aanroepen.

Verder hebben we een aanloop gemaakt naar het opzetten van een echte community van ontwikkelaars:

  • We hebben de verhuizing van het versiebeheer van een prive-server naar Rubyforge aangespoord, wat het toegankelijker maakt voor nieuwe ontwikkelaars.
  • We hebben een Cells IRC-discussieforum gestart op Freenode waardoor mensen met directe vragen ergens terecht kunnen.
  • We hebben een herkenningspunt voor Cells gecreeerd in de vorm van een opvallend logo.

Met deze contributies hebben we Cells geschikt gemaakt voor serieuze toepassingen, met als belangrijkste voorbeeld de Formbuilder plugin.

Casco

Casco is een PHP RAD "Rapid Application Development" Framework. Essentieel in CASCO is dat de opslag van gegevens volledig door de applicatie wordt geregeld. Heeft de ontwikkelaar een object extra gecodeerd dan wordt automatisch gechecked of dit object al bestaat in de database en wordt het zonodig aangemaakt. CASCO is zeer strikt modulair van opzet met een duidelijke structuur om overrides van classes of assets (templates, css-files, afbeeldingen etc.) mogelijk te maken.

Kijk voor meer informatie over CASCO op Ohloh.

FormBuilder

Het web wordt steeds meer ingezet voor bedrijfstoepassingen. Kenmerkend voor deze software is de veelheid aan formulieren die op het scherm worden getoond. Helaas is, of beter: was, het niet erg eenvoudig om webgebaseerde formulieren aantrekkelijk op te maken. We zien daarom veel formulieren die één veld per regel bevatten, daardoor onoverzichtelijk worden en veel scrollen vereisen.

Solide heeft de FormBuilder plugin voor Ruby on Rails ontwikkeld waarmee het maken van aantrekkelijke formulieren zeer eenvoudig is geworden.

Een korte beschrijving zal u overtuigen:

  • Drag and drop interface met volkomen vrije plaatsing van labels, velden, teksten en afbeeldingen
  • Uitlijnen aan de hand van versleepbare linealen
  • Alle voorkomende veldtypes: tekst, getal, email, wachtwoord, selectielijsten (single, multiple en gegroepeerd), radiobuttons
  • U kunt afbeeldingen toevoegen aan uw formulier
  • Vastleggen van allerlei condities waaraan de invoer moet voldoen

Voor het snel invoeren van langere lijsten met opties is een op textile markup gebaseerde syntax ontwikkeld. U kunt de plugin voor niet-commerciële doeleinden gratis downloaden op Rubyforge. Als u de plugin wilt inzetten voor een commerciële applicatie of door ons een toepassing op basis van Formbuilder wilt laten bouwen kunt u hier contact opnemen. De totstandkoming van FormBuilder is gesponsord door de MAPS Foundation.

OpenSocial Profile Container voor Drupal

Voorgaand aan dit project werd door Jeroen Clerix, webdesigner bij Solide, een studie gedaan over de mogelijkheden van integratie van gebruiker gegenereerde inhoud (user generated content) op populaire social networking sites (zoals Facebook, MySpace, Hyves, ...) in het Drupal project. Drie belangrijke aspecten van social networking werden in het bijzonder onder de loep genomen: de gebruiker, zijn/haar netwerk en activiteiten. Een belangrijke conclusie was dat er binnen het Drupal project nu al veel contributies bestaan voor het 'activiteiten' aspect. Modules als: Flickr, Embedded Media Field, Activity Stream, ... zijn zeker bekend bij menige Drupal administrator.

In overleg met andere Drupal ontwikkelaars, nationaal -en internationaal, hebben we beslist een bijdrage te leveren aan het 'gebruiker' aspect en zo de sign-on procedure binnen Drupal proberen te vereenvoudigen. Drupal website eindgebruikers zullen via deze functie in staat worden gesteld om hun profiel velden automatisch te laten invullen en bijwerken, tenminste als ze op de een of andere social networking site inhoud hebben gegenereerd, en ook aangegeven hebben dat deze publiek zichtbaar is ("open - social"). Doordat deze gegevens niet enkel zichtbaar zijn, maar ook opgeslagen worden in de database, kunnen deze ook voor verdere doeleinden gebruikt worden (vb: doorzoeken).

Het OpenSocial Container project is gelanceerd als afstudeerproject van Jeroen Clerix op de Media & Design Academy (Genk). Het onderzoek in aanloop naar dit project werd volledig ondersteund door Solide. De technische realisatie werd samen met Solide gedaan, en ook met behulp van het het andere product van het huis: Casco.

De demonstratie website (www.opensocial-container.net) werd sinds begin juni 2008 reeds 600x opgevraagd door bezoekers wereldwijd.

Drupal

Voor Drupal zijn onze bijdragen vooral gericht op bug fixes en beperkte uitbreidingen van diverse modules.

Typeface.js

Met behulp van deze Javascript bibliotheek is het mogelijk om in een website lettertypen te gebruiken die niet op de computer van de gebruiker geïnstalleerd staan. Hierdoor zit men niet vast aan de beperking van
"web-veilige" lettertypen.

Onze contributie aan dit project bestaat uit snelheidsverbeteringen waardoor het renderen van een pagina ongeveer dubbel zo snel werd, en het uitdrukken van grootte van tekst in procenten mogelijk te maken.