Page 1 of 1

Comica Development Information

Posted: Thu Mar 31, 2011 7:55 pm
by BootBlock
Select portions of Comica's code base has been made available to the public. The purpose of this is so anyone that is interested can contribute code as either fixes, changes, or additions. In addition, bleeding-edge builds will be available for those that are interested.

Comica and its sub-projects are written in VB.Net using Visual Studio 2010 and the Microsoft .Net 4 Full Framework.

What is Available?
There isn't much at the moment, but this will change. The plan is to open up more sub-projects within Comica's tree when they've been cleaned up and are ready for public consumption. Comica is made up of a large amount of sub-projects, especially now plugins and modules are supported.

The following are available at the time of writing...

  • Comica.Settings
  • Comica.General
  • Module.CreateComicBookArchive
  • Module.DatabaseInformation
  • Module.Settings
  • Plugin.ArchiveBrowser
  • Plugin.DownloadProgress
  • Plugin.ImageController
  • Plugin.LogViewer
What Are in the Folders?
The folders of the Comica repository are categorised as follows...
  • !Distribution
    This is probably the folder that non-developers and testers are most interested in. It contains the latest bleeding-edge build of Comica and its components (including many that don't yet have their source available in the repository). There is minimal - if any - testing done and it is strongly suggested that you stick with the latest official release of the software. Never copy this test version over your existing installation, and ensure that you back-up your Archived comics folder as the latest build could make it incompatible with the previous Comica version. Unlikely, but it could happen.

    Please note that the actual built files in this directory may be out of sync with the source. This is to prevent large change-sets that mainly consist of just binaries.

    Incidentally, it appears plugins are missing from this folder. You will have to either build them yourself or get someone else to. Probably me, then.
  • Comica.Modules
    A module in Comica is an external application that provides a feature to Comica that isn't required to be constantly active. For example, the Settings module is executed when the user selects Settings from the Tools menu and then closes down once Save/Cancel is clicked in its window. Modules, unlike plugins, cannot influence Comica's interface or core functionality. That is, the Settings menu item in the Tools menu is hard-coded and wasn't placed there by the module itself.
  • Comica.Plugins
    A plugin uses the PluginCore.dll library to tightly integrate itself with Comica. A plugin can manipulate - and even completely change - Comica's interface and functionality. Typically a plugin adds features to the application, such as comic strip image zooming and rotation in the case of the Plugin.ImageController.dll plugin.

    Plugins are unrestricted (as are modules, in fact; although only plugins run within the Comica process) and can do anything they like to Comica and the system Comica runs on. Because of this, it is advised to only use plugins from a trusted source.

    Plugins that make their source available to me for inspection will be digitally-signed so you can be rest assured that the plugin has been fully vetted. The plugin itself will be compiled by me directly from the provided source code. The source for the plugin does not necessarily mean it will be available in the Comica repository; the source belongs to its creator, not me. Digitally-signed plugins may also get installer support.
  • Sub-projects Outside of the Above Folders
    Any sub-projects that are not placed within the Plugins or Modules folders are considered Core. That is, they are required for the functioning of the entire Comica system as a whole.
Plugins and modules can be written in any .Net language.

Obtaining the Source Code
The Comica project is hosted on and uses the Mercurial source management control system.

I'm personally using TortoiseHg for managing the source. Point it, or whatever Mercurial access method you're using, to the following url...
There are lots of tutorials available that explain how to get a remote repository downloaded locally, if you're not sure how it works. Note that you can browse the source by clicking on the Source tab at the Url above.

Please use this sub-forum for development discussion.

Submitting Source Code
If you have made any changes to the source, you can push your update directly to the repository. I still have a lot to learn about Bitbucket and Mercurial, but you should be able to create an account at, join the Comica project, and upload your changes.

Please note that I may make minor changes to any submitted code to ensure it fits in with the established Comica style.

Source Code Guidelines
-- this will be written on request --

Source Code Limitations
The Comica and its sub-projects source code is to be used for learning from and developing Comica and its infrastructure. It is not to be used for creating derivative works or incorporating into other products that offer similar functionality to Comica.

Re: Comica Development Information

Posted: Fri Apr 01, 2011 10:00 am
by BootBlock
Comica.Settings has been added to the repository.

Re: Comica Development Information

Posted: Fri Apr 01, 2011 2:37 pm
by BootBlock
Plugin.DownloadProgress has been added to the repository.

Re: Comica Development Information

Posted: Sat Apr 02, 2011 9:09 pm
by BootBlock
Comica.General has been added to the repository.
Plugin.LogViewer has been added to the repository.
Module.DatabaseInformation has been added to the repository.

Re: Comica Development Information

Posted: Sun Apr 03, 2011 5:52 pm
by BootBlock
Plugin.ArchiveBrowser has been added to the repository.