Included in the source is a sample WinForms implementation of the
virtual machine. This code is public domain and contains no license
FyreVM uses a channel based IO system that is consumed by the client
as opposed to Glk.
The license is a slight reworking of the Microsoft Shared Source
license. The intent is to restrict commercial use of the source,
binaries, or any dirivative works. There are few, if any restrictions
on non-commercial uses. Textfyre retains all rights and we will
maintain the codebase as needed. Suggestions are welcome in narrative
form (we don't want code) since all code in the base source will
always be copyrighted by Textfyre.
Textfyre will also develop and maintain sample implementations of user
interfaces and tools and these will always be offered as public domain
There is a profiler in our code base, but we have not yet added that
to the shared source directory.
Since we use Subversion internally, it would seem appropriate to share
the code via a public read-only repository. The code can be pulled
from svn://textfyre.com:8989/FyreSharedSource with the login as public/
If you have any questions, feel free to send me an email and I will
try to get it answered as best I can.
I plan to put up a page on the website that discusses FyreVM and the
channel I/O system and probably include a forum for discussions. Until
then e-mail or raif will have to suffice.
You can probably adapt the code to Mono and use it on a Linux or OS X
I'm not sure whether to say "thank you" or "congradulations" to this
technical post Dave, so,
Thankulations!!! For all the hard work!!!!!
I'm with Ron on this one, David. I kind of think maybe I know what
this is (and if so, I'm intensely excited) but I'm not really sure.
Can you give us a little preview of your forthcoming discussion page?
This may not interest everyone because there's a certain distrust of
both the .NET requirement and the strict copyright, but I haven't
ruled out altering those to be more open.
My goal is to develop this version of Textfyre's Glulx Virtual Machine
1. Provide a working Windows, Linux, and OS X interpreter from the
same code based using the .NET and Mono frameworks, which is based on
the .NET Framework. Since MS and Novell are partners now, this would
seem to be a safe approach.
2. Provide multiple sample interpreters using FyreVM and the Channel
3. Provide tool-based interpreters that can help in different ways
with the development of games. One of my ideas is to have a tester
version of an interpreter that contains ways to manage test scripts,
expected results, and report on these appropriately. Another idea is
to do noun searches on location descriptions and automatically do
examines and gets on them for regression testing.
4. Provide the mid-level non C programmer the opportunity to create a
Glulx interpreter without having to do anything with the actual
virtual machine. All they have to do is wire in their implementation
of an interpreter with FyreVM and then develop a Glulx based game that
implements the Channel IO structures. Even if you don't code for the
channel IO, FyreVM will automatically identify the standard channel
outputs. But you can do conversation windows, hint windows, help
windows, map windows, and more with Channel IO. You can implement all
of the channels in any way you see fit within C#, VB.NET, IronPython,
IronRuby, and more. And if you do it in C# or VB.NET, you can
recompile your code in Mono and get them working on OS X and Linux.
A sample WinForms implementation is centered on the code shown here:
That code contains ALL of the logic for a FyreVM based interpreter.
It's a pretty simple implementation, which is why we called it
SimpleFyre, but that's what I'm trying to drive home. Anyone with the
least amount of GUI programming chops can create their own interpreter
We still have some elements to add to the Subversion repository and
once that's complete and I get a web page up, there should be zip and
tar files to download that contain the repository. The missing pieces
include the changes to the I7 .i6 templates needed to call the Channel
IO system from FyreVM and a working story file that shows how to use
all of the channels.
Does this information help?
I'd like to point out that FyreVM, the sample application, and Channel
IO were developed by Jesse McGrew, also know as vaporware. Channel IO
was something that fell out of a lot of discussions on how to replace
Glk in a .NET environment.
This is a modified Glulx interpreter (incidentally, the same one that
Guncho has been using). The major difference between this and Git or
Glulxe is that it doesn't use Glk: instead, it uses the channel-based
I/O system that Dave has mentioned in the past.
Every turn, FyreVM delivers a "package" of output which contains the
game's response to the last command, as well as things like the score,
time, map connections, conversation menus, or whatever else the game
wants to include. The UI application can then pick apart the package
and handle all those parts separately. The sample UI that's included
doesn't do anything too fancy -- the location, score, and time go into
text boxes, and the prompt goes into a label next to the input line --
but it's just a demonstration of how to use FyreVM.
Unfortunately, Inform only knows about Glk, so a standard Inform
installation can't yet compile anything that FyreVM will run. To see
it in action, you'll need a sample game and/or an extension to compile
your own, neither of which are available yet.
> 1. Provide a working Windows, Linux, and OS X interpreter from the
> same code based using the .NET and Mono frameworks, which is based on
> the .NET Framework. Since MS and Novell are partners now, this would
> seem to be a safe approach.
and what about a possible microsoft threat for copyright/patent
According to this, if I run mono on my machine (which doesn't use Suse linux
enterprise but another linux distribution), I may illegally use patented
technologies owned by microsoft:
"As part of this agreement, Microsoft will provide a covenant not to assert
its patent rights against customers who have purchased SUSE Linux
Enterprise Server or other covered products from Novell, "
We all have our prejudices. I feel it's relatively safe to use Mono
across all platforms without any future ramifications. You may not.
This doesn't change FyreVM's Shared Source course.
To me, it stands to reason that Microsoft is in no position to dictate
anything these days. They've been on the bad side of the PR game for a
number of years and it has hurt them. I see them bending over
backwards to accomodate users, not the opposite. For example, for
years MS absolutely refused to acknowledge HTML standards in their
browsers. The next version of IE (IE 8) will come by default in ACID 2
compatible standard mode. To me, this say way more than that above
blurb in a contract with Novell.
> To me, it stands to reason that Microsoft is in no position to dictate
> anything these days. They've been on the bad side of the PR game for a
> number of years and it has hurt them. I see them bending over
> backwards to accomodate users, not the opposite.
Oh? And what about the multiple OOXML scandals? What about the fact
that, after eight bloody years, IE doesn't support XHTML?
Microsoft is more arrogant and dangerous than ever, and is
simultaneously growing less competent.
John W. Kennedy
"...when you're trying to build a house of cards, the last thing you
should do is blow hard and wave your hands like a madman."
-- Rupert Goodwins
That page doesn't say anything about Mono or .NET. It does, however,
say "Microsoft will not assert its patents against individual
noncommercial open source developers."
In any case, I believe everything that FyreVM relies on is part of the
ECMA standard. See  - patents are only a (potential) concern for
things like ASP.NET and Windows Forms that fall *outside* that
specification, because as Microsoft's Jim Miller explained at ,
everyone is granted a royalty-free license to use any patents
necessary to implement the ECMA spec. In the event that Mono were
forced to remove its limited support for things like Windows Forms
that aren't part of the spec, the portability of FyreVM wouldn't be
As I said....we all have our prejudices. I'm not at all interested in
a discussion about anything but IF stuff.
Thanks Jesse and Dave for the further explanation. This is incredibly
exciting, and it's awesome that you're letting the whole IF community
in on some of this stuff.
Dave, can I ask for clarification on your mention of licenses? If I'm
understanding you correctly, you're saying that the FyreVM specs and
source will be public domain, but Textfyre's specific interpreter(s)
will be copyrighted. But if I wrote my own interpreter for FyreVM, I
could do what I wished with it, including bundling it with a game I
wanted to sell commercially? Is that right?
Well, it's not really "the opposite" when they're bending users over
forwards to accomodate themselves.
Actually that's not quite right. FyreVM is strictly non-commercial in
either source or binary form. The code that consumes FyreVM, so say
you're wacky new user interface that sits on top of FyreVM, that's
Now with that said, I doubt it would be too hard to convince me to
provide a license to individuals for selling their games. I just
wouldn't do that for a serious competitor.
The intent is really to share with the community in its artistic form.
I figure if you want to create a new snazzy terp that runs just your
game for the IFComp, go for it. And remember; in C# you can add your
own graphics, your own animations, your own sound. Pretty much
anything you can do in an regular .NET application can be added to
your IF game from a UI perspective.
If you want to sell something with FyreVM, you'll need to get
Gotcha. Thanks for the clarification.
Any news on when the first games will be appearing?