Fudge Messaging Home

Fudge is a hierarchical, typesafe, binary, self-describing message encoding system.

  • Hierarchical: Fudge messages aren't just a flat structure, they can be nested, creating larger, more complex data structures.
  • Typesafe: Individual fields in a Fudge message are provided with their type data encoded, so that you can extract data safely.
  • Binary: Fudge encoded data is binary, making it much smaller than text-based representations like XML or JSON.
  • Self-Describing: Fudge messages contain metadata about the fields encoded (like a name or an ordinal), meaning that you can manipulate them without knowing the schema in advance.
  • Message: Fudge was originally designed for encoding data to pass in a Message Oriented Middleware system, and so are more suited to the types of objects likely to be transmitted over a network connection than to a pure streaming mode.

Fudge, however, is not a Message Oriented Middleware platform or standard. While Fudge works well in MOM environments, it really focuses more on what goes in the body of the messages you send. Fudge works great with HTTP, JMS, and AMQP as the underlying network transport.

Why Should I Use Fudge?

Fudge is primarily useful in situations where you have:

  • Data exchanging between nodes in a distributed system; where
  • You want to be able to do meaningful work with data without knowing at compile time the precise message format; and
  • Performance and message size are important.

In a case where you have perfect control over all nodes, and can externally specify (though an API document or something similar) the schema for each type of message channel, you might be better off using something like Google Protocol Buffers or Thrift.

Project Details

Project Status

Fudge is very much an early-stage project. Presently we have:

We're early enough that we don't even have pre-made downloadable packages yet, though that's forthcoming.

Getting Started

The easiest way to get started is to look at the Encoding Specification, or the Types taxonomy, or the Source Code. Then, join the Mailing List.

If you're looking to help us out, take a look at the Ways To Help page.

Recently Updated
by Andrew Griffin (04 Feb)
DateTime encoding (Fudge Messaging)
by Andrew Griffin (20 Jan)
Serialization Framework (Fudge Messaging)
by Andrew Griffin (18 Jan)
Fudge Encoded Taxonomy (Fudge Messaging)
by Andrew Griffin (18 Jan)
Automatic Code Generation (Fudge Messaging)
by Andrew Griffin (11 Jan)
Types (Fudge Messaging)
by Yan Tordoff (10 Jan)
DateTime encoding v. 3 (Fudge Messaging)
by Andrew Griffin (06 Jan)
Encoding Specification (Fudge Messaging)
by Kirk Wylie (29 Dec)
Copyright (Fudge Messaging)
by Kirk Wylie (29 Dec)
Fudge Messaging Home (Fudge Messaging)
by Kirk Wylie (29 Dec)
Sponsorship (Fudge Messaging)
by Yan Tordoff (17 Dec)
T0rx in flight (Fudge Messaging)
by Yan Tordoff (21 Nov)
ZIP Archive FudgeDocs.zip (Fudge Messaging)
by Yan Tordoff (21 Nov)
Fudge-CSharp 0.1 (Fudge Messaging)
by Yan Tordoff (21 Nov)
CSharp release process (Fudge Messaging)
by Yan Tordoff (21 Nov)
CSharp Development (Fudge Messaging)
Navigate space
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.