Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Build Your Own IDE with Gemini

Build Your Own IDE with Gemini


Do you need your own IDE for your project’s domain specific language? One option is Visual Studio Shell, but that is often far too massive to deploy and can be difficult to work with. A lightweight alternative is the Gemini framework by Tim Jones.

Gemini is based on a set of loosely coupled modules that you can replace as your needs change. Out of the box you get these standard components:

  • Shell
  • MainMenu
  • StatusBar
  • ToolBars
  • Toolbox
  • UndoRedo

These core components rely on AvalonDock, Caliburn Micro, and MEF.

There are several optional modules, each of which has its own NuGet package:

  • CodeCompiler: For working with C# code. This relies on the Roslyn copmpiler.
  • CodeEditor: For C# source files, this is based on AvalonEdit.
  • ErrorList: Generic error list
  • GraphEditor: A general purpose graph / node editing UI.
  • Inspector: Similar to a property grid, but it “allows each editor to customize its own view”
  • Inspector.Xna: Inspector views for Xna data types.
  • Output: Generic output window
  • PropertyGrid: Standard property grid layout
  • Xna: Tools for working with XNA content.

Gemini is released under the Apache 2 license and the source is available on GitHub and is currently used in three of Tim Jones’ tools.

  • Meshellator: 3D asset import library for .NET 4.0. Supported formats are Autodesk 3DS and Lightwave OBJ.
  • Rasterizr
  • SlimShader: SlimShader is a Direct3D shader bytecode parser for .NET and C++.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p