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.

Project Status

While Fudge is still in early days, it's presently being used in production by several applications.

You can track the precise status in our Releases page.

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

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 Yan Tordoff (07 Mar)
DateTime encoding (Fudge Messaging)
by Andrew Griffin (05 Mar)
DateTime encoding v. 5 (Fudge Messaging)
by Andrew Griffin (05 Mar)
Use of Jira and Git v. 1 (Fudge Messaging)
by Andrew Griffin (05 Mar)
Types (Fudge Messaging)
by Kirk Wylie (01 Mar)
Comparisons With Other Projects (Fudge Messaging)
by Kirk Wylie (25 Feb)
Release 0.2 (Fudge Messaging)
by Kirk Wylie (25 Feb)
Releases (Fudge Messaging)
by Andrew Griffin (24 Feb)
XML Fudge Messages (Fudge Messaging)
by Andrew Griffin (23 Feb)
Java Proto Implementation (Fudge Messaging)
by Andrew Griffin (23 Feb)
Fudge Proto Command Line (Fudge Messaging)
by Andrew Griffin (23 Feb)
Syntax Summary (Fudge Messaging)
by Andrew Griffin (17 Feb)
Release 0.2 v. 9 (Fudge Messaging)
by Kirk Wylie (17 Feb)
Fudge Messaging Home v. 15 (Fudge Messaging)
by Kirk Wylie (17 Feb)
Fudge Proto (Fudge Messaging)
by Kirk Wylie (17 Feb)
C Development (Fudge Messaging)
Navigate space
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.