Hackfest Continues: Experiences with Cydin

As mentioned, I’ve been working on add-ins for Pinta as part of my efforts at the hackfest. Part of that has been to wrangle the Cydin add-in server/build bot for use with Pinta. I’ve been excited about Cydin for quite a while, since the prospect of a fully automated infrastructure for building and distributing add-ins directly to the users sounds incredibly great. It combines ease of use for users with ease of use for maintainers and add-in developers, and that’s about all you can ask for!

Easy installs from the net to your Pinta!

Actually, talking to Stephen Shaw and Jared Jennings, we came up with the idea of maybe co-locating an add-in server for Pinta, Tomboy,  F-Spot and any other Mono.Addins users with some suitable domain name, which would be great in many ways! But first, we have to explore more Cydin.

As far as I know, Cydin has only ever been deployed for Monodevelop’s add-in infrastructure, so while it has been very commendably designed to be versatile and usable for other projects, there are still some little niggles remaining when it comes to issues like documentation and independence of Monodevelop. (Perfectly understandable, of course.) Therefore I’ve made some small pull requests to Cydin to fix some of the issues, and are documenting the rest of them here for future reference.

  • When you set up the “Application” information defining a application that users can upload add-ins for, you need to fill in the “Supported Platforms” information with machine-readable single words separated by spaces. (Not formatted for humans, in other words.) So “Linux Mac Windows” is fine and creates repositories for Win, Mac and Linux, but “Windows, Linux , Mac OS X” will result in repositories for “Windows,”, “Linux,”, “Mac”, “OS”, and “X”.
  • There is a bug where Cydin tries to create “Files” folder at the directory level above the one you excute on, but since the default value is hardcoded as “..\\Files” (Windows style), it will actually create a subdirectory called “..\Files” on Linux. This is not cool because other parts of the code seem to interpret things correctly and things bollocks so it can’t find the folder. I’ve raised an issue about it but haven’t made a pull request because I’m not sure how to put code like “Path.DirectorySeparatorChar” into a DataMember DefaultValue. You would be advised to edit this value to suit your platform before running Cydin for the first time, because after that the Config values are stored in the SQL database which is a slight pain to edit.
  • Side note: The Configuration table in the database has a table called “Key”, which is a reserved word in MySQL and has to be escaped with backticks (`) when you reference it.
  • These two pull requests (1, 2) are important as well, so if they haven’t been merged by the time you read this, pull them in.
  • The artwork in Cydin is Monodevelop-specific, so you have to go into the Resources folder and change them. (Like I’ve done in this wonderful screenshot!)

 

The superbeta Pinta Cydin Repo.

 

 

Hackfest day 3 & Pinta goodness

Today my work at the hackfest is dedicated to add-ins and stuff for Pinta. My first task has been to build up the Pinta Demo Add-in to actually do something, and I have chosen to make it a random colour pencil. (Because the world needs more random colour!)

Random Colour Goodness!

Tasks for the rest of the day will include setting up a test add-in server using Cydin, hashing out some documentation on making add-ins, and looking for a place to put a production add-in server for Pinta. Then I might look into other types of add-ins than effects and brushes, like for example file formats.

 

As always, we are grateful to our sponsors GNOME, Fluendo, Microsoft, Xamarin and Plural Sight. This hackfest is so much fun!

Hackfest Adventures, day 2

So here I am in America, currently on day two of the Mono & Gnome Festival of Love, enjoying myself immensely. America is a lot like Europe, only hotter, wider, with more police, more manual labour doing menial tasks and a penchant for writing words on roadsigns instead of pictograms.

The view from the NERD centre.

During the first day we all got cracking! Jared is working on a MonoMac interface for our Tomboy library, and I’ve been working on the library itself. All our current unit tests are greenlit, so in theory we have the ability to build a Tomboy client that works for storing notes locally without sync. In practice I bet we’ll have a lot more bugs to fix as Jared starts using the library in practice, later today. In the meantime I’m working on the difficult nut that is getting online sync to work properly, liberally using code from Tomboy but doing a lot of my own stuff as well. Fingers crossed that this won’t take all week…

This lovely hackfest has been made possible due to the generous contributions of our sponsors: