Showing posts with label Talker. Show all posts
Showing posts with label Talker. Show all posts

October 19, 2010

Mamnuts and PyTalker are dead, long live TZMud!

I had several choices, really. I could choose to undertake the huge task of fixing Mamnuts (actually throwing away most of the underlying NUTS-inherited code), but it was simply too much work. Or I could take PyTalker by the horns and just make its idea work - which had an estimated amount of man-hours quite inferior to the first option. But... what about maintaining and expanding it afterwords? One of the issues with PyTalker would be that, as soon as a working version was released, I would have to work on implementing each feature Mamnuts had, to be able to have a convincing argument against the usage of Mamnuts, leaving to the side the only unarguable preference: the common "but I prefer C to Python!" (and, really, there's lots of people saying that in the talkers world, imagine that!). I hoped to find a good team to do the job with me, but others would find even less time than me to dedicate to the job. It wouldn't work. Sigh. Well, I would have to do it by myself... with the use of nice Python frameworks. And, while looking at those and who contributed to what, I just saw that there was a third, quite more interesting option: get back to the origins - now without configurability limitations - and assume once and for all that a talker is a kind of MUD with certain particularities. And so, the best way to deal with my issue was, really, find out the best configurable, well-maintained, clean, active, secure, with a nice community MUD codebase, and try to just add the configurable options needed to turn a MUD codebase into a "MUD/Talker codebase", or, in fact, a MUD with a configuration option that would let you set it up to behave like your typical talker, with just something like

allow_utf8 = True
speechmode_default = True
talkmode = True
Now, guess what... that's exactly what you need to do to turn the MUD codebase "TZMud" into a talker. That's right: TZMud is a server to host a multi-user domain (MUD) in the tradition of LPMud, but implemented in the Python programming language, and, since it's 0.9 version, with a configurable option to turn it into a NUTS-like talker.

This is also, obviously, the time to say goodbye to PyTalker and Mamnuts. Don't be sad: you'll be probably able to find me lurking on the TZMud project. And, most importantly, if you're planning on running a talker (or running one already), switch to TZMud. It lacks lot's of features, that's for sure, but that is easily fixed: just open a ticket asking for what you're missing. Feel free to contribute with code, if you can, the project maintainers are quite open and happy to review/accept your code.

This is the last blog post on Mamnuts' website.

November 11, 2008

Telegram

There are many many things I want to say, and not that much time. My mental list of "things to blog", each promising an huge post, makes me think that maybe -- just maybe -- most of those blog posts are never going to be written. So, for now, I'm writing you a little telegram, telling only some things, and quickly.

The first, and obvious, is to tell you I'm going to marry soon. That's right: we knew we would going to do it for a long time, but it was only while celebrating her birthday that I did the actual move of asking her. As my friendfeed followers noticed, or her blog readers, she said "Yes". I'm really happy, but there are lots of things to do now: people still don't get married over the Internet, at least in Portugal ;-) Thanks a lot to those who gave us "congratulations" messages, I know I didn't replied to most of you... bear with me.

After a quick talk on Friendfeed between me and Melo, he decided to write Rasputine. Rasputine (or Ras, as Corto Maltese called him) is a generic Moo/MUD/Talker-to-XMPP gateway. You add a buddy to your roster and then you can use it to connect to that world. That means that now, a couple of days later, you can use Jabber to connect to several services, including Selva (add selva@rasputine.simplicidade.org, Second Life (via SLTalker, add sltalker@rasputine.simplicidade.org), Portugal Virtual (add pv@rasputine.simplicidade.org) or MOOsaico (add moosaico@rasputine.simplicidade.org). This also means that I'm now feeling back the urge to make SLTalker a lot more useful (and less buggy) than it is at the moment. It is being completely rewritten, using now libsecondlife 0.5.0.

I'm returning to have a good reading rhythm. So, I've been reading Cory Doctorow's books (he's also now freshly married, congratulations!), finaly got into the mood of getting and reading Neal Stephenson's Cryptonomicon (you know when you know that you will read and like a book, and you're so certain of it that you just keep postponing it? I've been doing that with this book for years...), Satrapi's Embroideries, some more SciFi, some Fantasy, some Manga, some essays... Well, a lot of stuff, but still not as much as I wanted to. Regarding to Cory's books, I have a funny thing to tell: despite all his books being freely available to download on his website, with a Creative Commons license, I've been buying and reading them in the physical book format (and reading a lot of his not-in-books essays in my mobile phone). Well, with "Overclocked" I stumbled into a problem: the book had 16 pages missing!. Frustrating, huh? Well, not that much: thanks to Creative Commons, I just picked up my cellphone and in less than two minutes I was reading what was supposed to be in those 16 pages. See one more case on which Creative Commons is a good idea? ;-)

Oh, speaking of Creative Commons: to celebrate their fund-raising campaign, Creative Commons has released "A Shared Culture", a cool short video by renowned filmmaker Jesse Dylan, explaining very well why Creative Commons is important. Since it is in English, without translations, and I wanted to write about Creative Commons in one of my twice-a-week column at "Programas Livres", a Portuguese web publication, I ended up doing a free translation and adaptation, in both text and audio formats.

And... well, I told you, I have lot's of stuff to talk about, but for now, this is it. If you want to keep more updated than this, consider following my Friendfeed.

December 11, 2007

ping


This weekend I saw a curious thing: Ubuntu made the right choice of having the reportbug-ng package in their distribution, but they forgot to change it to check Ubuntu bugs and report to Ubuntu instead of doing that to Debian. So, there's not a bug report against Ubuntu's bugreport-ng [1], even if tagged as "wishlist" (something I don't think is correct, and will try to see changed).

On other issue, IFPI is pressing Europe [2] to adopt some silly stuff like the recent Olivennes disagreement [3], and European politicians seem open to the idea of ISPs policing and interfering with their customers' communications on behalf of rightsholders.

We all know that Amazon is generally "cool", but they have some bad stuff too. Cory Doctorow decided to talk about it [4].

Finally... I'm a sucker for these things, it's not the first time and I doubt it will be the last that I see some piece of unmaintained software going offline and I having to taking over it. This time it was Crystal [5], a text-based MUD client that has support for both telnet and telnet-SSL. A new version was released, I have already plans on how to attack the "TODO" and I even made a Debian Package, that I'll try to make official [6].

Which reminds me to ask: any DD out there wanting to sign my GPG key? ;-)



[1] - http://smallr.net/ubuntu-bug-175508
[2] - http://smallr.net/IFPI-vs-Europe
[3] - http://smallr.net/olivennes
[4] - http://www.guardian.co.uk/technology/2007/dec/11/amazon
[5] - http://talkerspt.no-ip.org/~mbooster/crystal/
[6] - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=455759

September 03, 2007

SLTalker is out now!

One thing I've decided to this weekend was that I wouldn't have "dead times", so everytime when the presentations were not that interesting, or if I thought I could listen to it and do something at the same time I was with my laptop managing some stuff or coding on SLTalker, my project that aimed to create a talker interface for Second Life. When I realized that there were so many talks to be done that there would be no time to do the Hack Hour activity I was hoping to see there, and since, unfortunately, the rooms where presentations were given were really hot, I also skipped some presentations, giving me the time to finish SLTalker's "first release", meaning that nowadays you can actually connect into SLTalker.

So, that's it - enjoy, and remember you can allways chat with me there (.tell Noori Foss hi there!), and please report any bug that you find.

Next step, besides fixing SLTalker bugs, is trying to close these bugs on Debian, which will greatly help me to enhance SLTalker.

Oh, and please go easy on the server, SLTalker uses lots of resources and the server where I'm running this is quite slow for the job... Of course you can allways offer me a better place to host SLTalker, but I would need to have root access to it and it must be a Debian box, so I don't really think that there's someone willing to provide me a better host than this one :-)

July 25, 2007

SLTalker - FAQ


SLTalker is a new personal project of mine. This blog post is my way of presenting it to the world, in the form of a FAQ. If you have any questions, feel free to leave a comment.

What is SLTalker?



"SLTalker" stands for "Second Life talker", and is a Second Life client that aims to give you the same interface and user experience as the one you have in a Talker.

What is a Talker?



A talker is one kind of MUD. You can try to know a more complete definition by reading what Wikipedia says about it, but I guess that the best way to know is simply visiting one. If you're a Portuguese speaker, I recommend Selva; if you prefer an english-speaking Talker you might want to try Enchantement Under the Sea.

What is SLTalker for?



SLTalker is basicly for those that want to go into Second Life but that, for any reason, prefer a text interface. Usual reasons for it are the fact that talkers are considered "work-safe", "blind-friendly", quicker interactivity, among others. My personal reasons as of why I prefer this kind of interfaces were written countless times here and there, but I guess that by reading my blog you will find a hand full of them.

Why are you doing this?



Because this is something I'll use. Because I know others that will also use it. And more.

Hey, I'm doing the same as you (or something simillar)!



Great! Please leave a comment in this blog post telling me about it!

Can I help you?



Sure. Please leave a comment and we'll talk about it.

What does that mean to you other related projects?



Well, I've talked about several things that might be considered "related projects".

Tints aims to be a talker protocol, but it's yet being developed, and in a phase where I can only contribute with ideas and thoughts, but not with code. I'm still on the mailing list, and waiting for the first release of code, but until then there's nothing more that I can do for it, I'm afraid. When it is in a state where I can help more, I intend to do it, and, by then, I'll probably rephrase this paragraph. Anyway, both concepts (that of TINTS and SLTalker) aren't really clashing - as a matter of fact I think that they can both be used toguether.

GNUnet-chat is another thing I've talked about a couple of times. I aim to do a talker based in the GNUnet network, but for that to happen, the next release of GNUnet have to be out there. GNUnet-chat will probably have, by then, much more attention by me than this project, since with GNUnet I can build the Virtual World I allways wanted to see, and I'm not even very keen of Second Life. But, until then, I wasn't really helping GNUnet until now, so it won't loose nothing with this, just probably win (since I think I'll learn a couple of things with this project)... Also, don't worry, I won't ditch this project to embrace fully GNUnet-chat without making myself sure that this project isn't going to die.

What about VOS? I've had the idea to do exactly this, but for VOS instead of for Second Life. I still believe that VOS is a much better project and will enable the creation of much better virtual worlds than Second Life. Yet, VOS is still in heavy development, so it's better to postpone the talker interface for VOS for one year or so, and until then I'm getting lot's of usefull experience for that specific project.

I'm not willing to let Mamnuts die, but unfortunately I don't have the patience to maintain it as once upon a time I had. If you're willing to help me out with Mamnuts, that's great. I'm looking for a developer to that particular project, and if you make me feel like you're taking Mamnuts to the direction I want to (a less buggy, more stable and more secure Mamnuts) I'll gladly give you the project.

Finaly, PyTalker, the project that will surely suffer. PyTalker isn't really in a usable state at the moment, even if I know of at least three talkers using it as a talker base. 0.1.* had good and awfull things, 0.2.* had good and awfull things, and the next version planned is 0.3.0, which I started some months ago, completely rewriting the damn thing, and using the good stuff from 0.1 (basicly the modularity and the sessions handling) and from 0.2 (characters handling, database). I've been stuck with some issues regarding external libraries, but I've fixed that today. But there's still a lot of code to be written before I can release 0.3, and I don't think I'll be into the mood of doing it until there isn't a more or less stable version og SLTalker. Sorry.

Where can I try SLTalker?



Hold down your horses mate, you still can't, so it's not about where but when. Yesterday I made my "0.0.0" version (a backup tarball basicly), that already works. With it, I was able to log in, teleport, peek my inventory, talk, shout and use Instant Messanging. For each one of those operations I hade to hand-write XML - not fun. Also, the experience didn't work as good as it should - IM'ing, for instance, broke what I said into several messages, some of them with whitespaces only. This basicly means that, while I'm on the right track, there's an awfull lot to do until there's something you can peek into. When it is, I'll set it up as a talker (with telnet and telnet-ssl interface, as an usual talker), and I'll let you know.

Will it be Open Source?



In the right time, yes. First, I have to write a working version. Then, going publicly about it, I'll surely stumble upon lot's of bugs and issues, stuff that needs to be fixed until I can call it a "proper version". Then, I'll have to clean it up, package it, find the right license for it, and yes - by that time it will be Open Source.

Where can I find more about it?



Now? Nowhere, really. I expect to create a website for SLTalker soon, where you can keep track of its development, and more. Until then, keep reading this blog and I'll keep you updated.

May 23, 2007

AllOfMp3 and DRM

I was feeling quite depressed and started venting on Selva, a Portuguese talker. Since that, after this, I didn't feel like writing an article about it... Here's the log (with permission, of course) of the conversation (unfortunately in Portuguese).

BTW, just for reference, here are the latest news on AllOfMp3, to be dead at the 1st of June, and the Portuguese anti-DRM action I also talked about.



MindBoosterNoori says: estou deveras aborrecido
MindBoosterNoori says: Nao consigo entender como e' que ha' pessoas que nao acham nada de mal neste mundo
MindBoosterNoori says: num mundo em que as corporacoes mandam mais que a lei, fazem as leis
Hellraiser asks: hum?
Hellraiser says: ja' ouvi falar...
MindBoosterNoori says: Um site na Russia, completamente legal, que vendia musica muuuuuuuito barata porque as leis na Russia de copyright sao diferentes das dos USA
MindBoosterNoori says: entao eles pagavam directamente aos artistas e nao 'as labels
MindBoosterNoori says: houve obviamente pressao das big co's para fechar aquilo, comprar para depois fechar... de tudo.
MindBoosterNoori says: nao conseguiram
Hellraiser says: ena
Hellraiser says: nao sabia que isso era assim
MindBoosterNoori says: entao fizeram pressao junto a varios governos, e os USA, a Alemanha, o Reino Unido e a Dinamarca forcaram os ISP's a bloquear o site
Hellraiser says: curto a filosofia
MindBoosterNoori says: depois fizeram pressao contra a Visa, Mastercard e Paypal para deixarem de aceitar pagamentos para aquilo
MindBoosterNoori says: conclusao, o site ficou a funcionar um esquema de vouchers
MindBoosterNoori says: entao
MindBoosterNoori says: no reino unido agora e' proibido vender ou ajudar 'a venda desses vouchers
MindBoosterNoori says: 1 gajo foi preso e tudo
MindBoosterNoori says: mas achas que isso chega? naaaaaaaaaao...
MindBoosterNoori says: entao, fizeram um ultimato 'a Russia
Hellraiser says: isso ta' a ir um bocado longe demais... :-/
Hellraiser asks: houve artistas a queixarem-se?
MindBoosterNoori says: se quiserem pertencer 'a World Trade Organization (o organismo que, em ultima instancia, define quem e' pais do 1o mundo e quem nao e')
MindBoosterNoori says: teem de mudar a lei
MindBoosterNoori says: e entao a Russia vai mudar a lei dia 1
MindBoosterNoori says: para tornar o AllOfMP3 ilegal.
MindBoosterNoori says: makes me sick.
Hellraiser says: yah
MindBoosterNoori says: artistas a queixar-se? claro que nao... os artistas ficam mais contentes
MindBoosterNoori says: recebem 'a mesma, mas a musica deles e' tao barata que as pessoas compram muito mais musica
MindBoosterNoori says: tipo, em vez de comprares uma faixa, compras logo a discografia toda :-P
Hellraiser says: pensava que os artistas ganhavam mais por "venda directa"
MindBoosterNoori says: 1.30 centimos por faixa? nah, no allofmp3 1.30 paga-te cerca de 130 Mb de musica
MindBoosterNoori says: (la' a musica e' paga ao Mb)
MindBoosterNoori says: os artistas ganham mais se nao tiverem intermediarios
MindBoosterNoori says: como no caso do all of mp3
MindBoosterNoori says: ou seja
MindBoosterNoori says: eles estavam contentes
MindBoosterNoori says: quem nao gostou da coisa nao foram os artistas, foram as editoras
Hellraiser says: sim, sim. eu percebi
Hellraiser says: mas quem pode fazer forca, sao os artistas e os consumidores
Hellraiser says: o "negocio" das editoras ja' eu conheco...
MindBoosterNoori says: bem, a nao ser boicotar as major labels em forma de protesto, mas isso ja' eu faco :-P
MindBoosterNoori says: quem podia fazer era o povo Russo
MindBoosterNoori asks: mas achas que eles foram "avisados" de que se ia tomar esta decisao?
MindBoosterNoori says: BAH.
Hellraiser says: pois
MindBoosterNoori feels depressed
Hellraiser says: melhores dias virao...
MindBoosterNoori says: right.
MindBoosterNoori says: Aqui ha' uns meses consegui finalmente criar o DRM-PT.info
MindBoosterNoori says: criar buzz em volta do tema do DRM
MindBoosterNoori says: comecei a ver jornais, revistas, proteste, bloggers por todo lado, em Portugal, a interessar-se pelo tema, a mostrarem-se indignados
MindBoosterNoori says: e' organizado um protesto
MindBoosterNoori says: quantas pessoas inscritas menos de 48 horas antes? 4.
Hellraiser :-/
MindBoosterNoori says: e' um protesto dificil de fazer? nao, e' ir 'a porta de um cinema e distribuir panfletos.
MindBoosterNoori says: olha
MindBoosterNoori says: importas-te que ponha esta conversa no meu blog? :-P
Hellraiser says: nao
Hellraiser says: na boa
MindBoosterNoori says: vai mesmo assim em Portugues, nem me apetece escrever mais sobre o assunto...

March 20, 2007

Stuff I've been doing lately


Well... Since I didn't post for a while, here's a quickie:

Friday I met two nice restaurants and two good wines. With the company, it was joyful. Arrived late at home, so Saturday I only took the train to Coimbra after dinner. On the train I almost prepared the presentation about the Music Industry and DRM for next saturday in Moita - Portugal. I have to cut it off a lot since I have only one hour (Q/A included) and almost 60 slides.

One thing that bothers me a lot is that stupid thing so many people started to innocently claim after Steve Jobs saying it, and one example (the latest I read) can be seen here: the claim that (physical) CD's aren't infected with DRM. Unfortunately, that's untrue.

Yesterday I finally tried to use my cellphone as a modem, via bluetooth. I wasn't really into it since everyone claimed it was a pain in the ass. Well... It wasn't. I just did

sudo /etc/init.d/bluetooth start
sudo modemlink

chose, "bluetooth", and activated bluetooth on my cellphone (Motorola E1, for the record). It found the cellphone, and asked if that's what I wanted as my modem. Clicked yes. After that

sudo gprsconnect

It asked what my cellphone operator was, but it is none of those listed. So, I chose "other", clicked "connect"... Et voilá! It couldn't be easier.

One bad thing in the talkers world is that all the talker bases there are aren't being developed anymore. Sometimes some vapourware appears, but the smoke soon dissolves. The exception for that is Mamnuts and PyTalker, unfortunately both maintained by me. Which also means that if I stop working on that... Well, not anymore. A new effort as arised, and I hope it won't be vapourware. Tints purposes a talker standard and a protocol. Around the protocol itself an implementation of it in C will appear, and python bindings for it. Then, a server, a talker (notice the separation, compare with a webserver and a website) and a client. The first client is not going to be a telnet interface, but you can virtually create any kind of client, from an interface to telnet, telnet-ssl, an webite, a XMPP plugin, an interface to Second Life... Well, you name it. The concept is really good, and if it doesn't die, I'm almost surely to be an early adopter.

Finaly... SellABand appears to be down. Anyone knows something about it? Update: Finaly, it replies. 500 Internal Server Error. Update 2: Hmm, seems that it just suffered an update.

March 05, 2007

Why Virtual Worlds shouldn't be Businesses


Virtual Worlds



Soon after the appearance of CRPG's (Computer Role Playing Games), a similar concept appeared, to present Multi-user CRPG's, what were to be called MUD (Multi-User Dungeons). In 1978 appeared MUD1, a platform to build MUD's: Virtual Worlds full of monsters and users willing to slaught'em. The concept evolved, and, besides the appearance of different types of MUDs, several other Multi-User Virtual Worlds appeared, with different focuses other than MUDs (like, for instance, Talkers or MOOs). In 1984 appeared "Islands of Kesmai", the first MMORPG (heavily inspired of MUDs) to be explored commercially.

Let's forget all the technology advances made on Virtual Worlds: while a good use of graphics, sounds and other technology advances might enhance the experience (specially embodiment) one has in a Virtual World, those aren't a part of the Virtual World per se: the Virtual World is the concept, not its implementation.

Business Models for Virtual Worlds



"Islands of Kesmai" had a business model quite similar of those we usually see nowadays on Virtual Worlds, including MMOGs: at the time users were paying $12 per hour. There isn't much evolution on the "new" business models, and while a lot of research is being made on that field, there are basicly three possible business models: the Time-Based Subscription Model, the Virtual Currency Model and Second Life's Virtual Real Estate Ownership Model. Some new models are being purposed and appearing both in research and real implementations, but they're always inspired by these three, and can be seen as simple derivations.

Defying Virtual Worlds' business models



The problem with the actual Virtual Worlds business models is simply that we are building Virtual Worlds as businesses, and thus modelling that Virtual World in such a way that it can optimise the results of its Business Model. While it's easy to understand the need for a company that decides to create a Virtual World to do things this way (and it's comprehensible if his objective is to make money), we're seeing the problem in the wrong perspective. Users don't want to be a part of a business - they want to be in a Virtual World. The implied limitations of these kind of Virtual Worlds are obvious when you see the difficulty in creating your "virtual persona", your avatar, that isn't just "your avatar in world xx" but is simple "your (ubiquitous) avatar". The need to fix that is seen if you take in consideration the creation of some "structured virtual ubiquitous societies", like the NationStates. So, while there's no wrong on having companies building businesses by the use of Virtual Worlds, taking the Virtual World itself as a business is what is really stopping the evolution in this field. Not the technical stuff (like better graphics, less lag) but the design of the Virtual World.

Building a better Virtual World



"So, if all the well-known VW's are wrong, how could them be right?"

Imagine a World Wide Web where, instead of being just a protocol running on top of a network (the Internet), each website had its own protocol, made by a company, and you had to have that websites client program (the browser), made by the same company, to go there. Cnet's browser would let you visit Cnet's website; Amazon's browser would let you visit Amazon's website. Cnet was making money by selling its browser, as well as Amazon by selling its see-a-list-of-books browser. Insane, right? Well, that's what's happening with VW's nowadays. So, how to fix it?

Well, we could use the parallel between the Web and VW's and say that what we need is to use a network where each node knows each other and that give us the chance of having each node linking to each other, and use that to define space. With it, and using a standard and unique protocol, it would be trivial to map from one layer to the other, and, with it, to have a "Virtual World Framework". Think of Neal Stephenson's metaverse, think about what is needed to reach that kind of ubiquity. Simple, isn't it?

September 21, 2006

gnunet-chat: the next-generation talker?



Abstract



Finaly, after four years talking about it, gnunet-chat is on GNUnet's roadmap (for GNUnet 0.7.4), and there has been some discussion on how to implement it.
This article aims to provide a description on how could gnunet-chat be implemented, and should be seen as a "Request For Comments".

Background



In this section I'll try to give you some background on what are talkers and what is GNUnet, so it turns easier to explain how and why should we mix both concepts together.

Talkers



Talkers are text-based online virtual worlds to which multiple users are connected at the same time to chat. People log into the talkers remotely (usually via telnet), and have a basic text interface with which to communicate with each other, in a somewhat similar way to how MUDs work.

When a user connects to a talker, he enters a room (a "virtual space") that has some links to some other rooms in order to make some kind of map. Talker users can talk privately to another talker users, wherever they are in the talker, chat publicly to someone (in a way that others near can watch them talking) in generally (to all of those who are in the same room as he is). Shouting is also possible, making all the talker users to hear what that user has to say. Of course, users are able to move themselves from one room to another, unless the room where they're walking towards is closed.

GNUnet



GNUnet is a framework for secure peer-to-peer networking that does not use any centralized or otherwise trusted services. Since such a framework provides the means to do any kind of network communications, virtually any network application you might want to do is feasible using this network. A first service implemented on top of the networking layer allows anonymous censorship-resistant file-sharing.

gnunet-chat



So, if we have a simple form of chat that is a simple form of a virtual world (as a matter of fact that are claims that a talker is "the simplest possible Virtual World"), and then a way to make any kind of communication in a censorship-resistant secure and anonymous fashion, why not combine both things and create a secure, censorship-resistant and anonymous virtual world and way to chat?

Let's think, first, on the concepts that needed to be implemented.

avatars



Each gnunet-chat is able to have any number of avatars (meaning a "virtual persona"), although I'll talk (for simplification purposes) in only one avatar per node. Each avatar (also to be called user or node) has properties such as a name (mandatory), a description (optional), a keyring (optional) and a location (optional). All of this are self-explanatory, but let me empathize some things: the description should be in ASCII. Also, the keyring is to be taken as in the original sense of the word: a set of keys to several places. If a room is locked, the avatar can only walk in if he has the key needed to do so. Finally, the location is mandatory if you are online, and needed to know where to spawn him when the user is connecting to the gnunet-chat world. If there's no "location" set, he must spawn in a never-private are, the "by default" room of gnunet-chat.

rooms



Each room also has a set of properties: a name (mandatory), a description (optional), a owner (optional), a gate (mandatory), and a list of links (optional). The name is to be how the room is referred to: something like "Jungle", "island", "castle"... The description is optional and is to be something like an ASCII banner. That way you can have a room called "island" with a description like
You open your eyes and find yourself on a deserted island. The sky is blue
and the water is clear. Suddenly, you hear voices and laughter far away.
Excited, you follow the sounds to a calm beach. Hiding behind the bushes,
you see... MERMAIDS! A couple of them spot you and signal you to come near
them. "Hi! Follow us to a magical world!" a little mermaid says. The
mermaids dive into the ocean. You don't hesitate and dive in after them...

or a room called "Jungle" with a description like
            WELCOME TO THE JUNGLE!
                    ("\''/").___..--''"`-._
                    `o_ o  )   `-.  (     ).`-.__.`)
                    (_Y_.)'  ._   )  `._ `. ``-..-'
                  _..`--'_..-_/  /--'_.' .'
                 (il).-''  ((i).'  ((!.-'
-----------------------------------------------------------

Of course that if a room has no description, then no description will be shown.
The original creator of a room will be automatically it's owner, The owner can offer that room to another avatar (and the room changes ownership), or to revoke ownership (and the room belongs to the virtual world and no avatar will have it). Being the owner of a room is important since only the room owner can lock the gate (which has two states: locked or unlocked). If one room is unlocked anyone can come in, but if it is locked only the key owners can enter.
Finally, each room can have a list of links (if a room hasn't one then it will have the same behavior as if it has an empty list). Each link represents a pointer to another room, showing a "virtual physics connection". Once again, only room owners can create or remove room links.

Rough scheme of implementation



While the user interface will let the user refer to a room by its name, the gnunet-chat node will talk to the network not by it's name but by it's public key.

If a node X wants to go to an open established room, it broadcasts a request to all chat-enabled GNUnet nodes. Other nodes ("Y") that are in that room will update their info, seeing that avatar as present in the room, and reply to him with an advertisement.

If a node X wants to go to a closed established room, it broadcasts a request to all chat-enabled GNUnet nodes. Other nodes ("Y") that have the key for this channel answer and request an AES sessionkey S for encryption of chat messages. The joining node X must not reveal the room key to the answering node Y, because this node might be someone pretending to be a member of Y trying to get the channel key. Instead, the joining node generates the random sessionkey S, encrypts it using the room key and sends the result to the answering node Y. Y decrypts the session key and uses the sessionkey to encrypt a channel advertisement. If either X or Y don't have a valid key for the room, the decrypted advertisement is invalid.

An advertisement consists of the room description, and a list of avatars (public keys of the members of the room).

Nodes achieve anonymity by acting as relays for other nodes. Since all relays decrypt new messages, they have to be signed by the author to guard against forgery. To detect censorship, members of a channel regularly post user statistics ("user A: 10 msgs, user B: 23 msgs") that every nodes compares with local statistics.

Further work



I hope this article will lead the interest parties into an healthy discussion of this model. Furthermore, and before the actual implementation of such a thing, this concept (specially the scheme of implementation) have to be enhanced to describe all possible commands (actions) an avatar has, and what are the reactions for it (and how they're achieved).

If you want to comment on this, please feel free to do it here on my blog or by e-mail. I intend to post a copy of this on GNUnet's community so you'll be able to see some reactions there too (or so I hope).