PDA

View Full Version : Telnet Server test complete, thanks all



prof_braino
11-06-2010, 08:16 PM
EDIT: Test completed successful, thanks all
EDIT: telnet server is still up if you want to play with
EDIT: FORTH on the prop over the internet

test: telnet to

99 7 4 73 port 23

Test was to confirm it works on the internal network, and the external internet access.

Its not the spinneret, but it is a wiznet w5100 on the wiznet811mj which should be similar.

You should see a forth prompt, execute the word "words" to do a forth
dictionary dump, and execute other forth commands

ports 22 23 24 25 should also be running prompts on different cogs.

If the port is already occupied you won't be able to connect, but it times out after inactivity, so it should be available again in a couple minutes.

Thanks to those that posted, please play with this and post your result or PM me.

Thanks!

jazzed
11-06-2010, 08:40 PM
Trying 99.7.4.73...
Connected to 99.7.4.73.
Escape character is '^]'.
braino PF v3.5c 20101104 22:38 1

Cog1 ok

Cole Logan
11-06-2010, 09:15 PM
heres what I got

braino PF v3.5c 20101004 22:38 1

cog 1 ok

cog 1 ok

Bill Henning
11-06-2010, 09:17 PM
$ telnet 99.7.4.73 23
Trying 99.7.4.73...



No response for me.


Would somebody please try to telnet to

99 7 4 73 port 23

and see if you get a response

I have propforth running a telnet server, and it works on the internal network, but I haven't been able to confirm the external internet access.

Its not the spinneret, but it is a wiznet w5100 on the wiznet811mj which should be similar.

You should see a forth prompt, execute the word "words" to do a forth
dictionary dump, and execute other forth commands

ports 22 23 24 25 should also be running prompts on different cogs.

If the port is already occupied you won't be able to connect, but it times out after inactivity, so it should be available again in a couple minutes.

Please post your result or PM me.

Thanks!

Phil Pilgrim (PhiPi)
11-06-2010, 09:28 PM
I got



Trying 99.7.4.73...
Connected to 99.7.4.73.
Escape character is '^]'.
braino PF v3.5c 20101104 22:38 1

then, after every Enter,



Cog1 ok

and, upon hitting ctrl-],



telnet>

after which I typed q to quit the session.

-Phil

prof_braino
11-06-2010, 09:35 PM
thanks guys!

When you see


cog1 OK

Then you have the forth prompt, if you wish you can see the forth words with



words




7 2 + .
9
cog1 ok


etc.

It works!

jazzed
11-06-2010, 09:42 PM
People who like forth should be pleased with this :)

So, how many clients are possible at one time? Maybe Bill should try again?

Bill Henning
11-06-2010, 10:16 PM
I am in!

That is a LOT of defined words...

VERY COOL


People who like forth should be pleased with this :)

So, how many clients are possible at one time? Maybe Bill should try again?

prof_braino
11-06-2010, 11:41 PM
People who like forth should be pleased with this :)

So, how many clients are possible at one time? Maybe Bill should try again?

Up to four sessions at once:

Port 22
Port 23
Port 24
Port 25

There seem to be several folks testing it, but the timer reboots after 2 minutes of inactivity, it it will clear old sessions and become available again.

If you have two running, lefts say Port 22 on cog0 and Port 25 on cog4,

you can enter from cog4

c" words" 0 cogx

This send the "words" command to the input area of cog0, and it begins executing.

jazzed
11-07-2010, 12:07 AM
Up to four sessions at once:

Port 22
Port 23
Port 24
Port 25


Sure. But by convention "telnet" uses port 23. See this page for "well-known" server ports: http://www.iana.org/assignments/port-numbers ... of course nothing is wrong with re-purposing ports temporarily until the multi-threaded software can be written to allow N clients on port 23 the way it should be.

Good luck with forth - I'm not a user but I know it has a dedicated following.

prof_braino
11-07-2010, 01:34 AM
Sure. But by convention "telnet" uses port 23. See this page for "well-known" server ports: http://www.iana.org/assignments/port-numbers ... of course nothing is wrong with re-purposing ports temporarily until the multi-threaded software can be written to allow N clients on port 23 the way it should be.


So, does this violate some law or regulation if it uses other than port 23? I almost got in trouble when I started my first DNS server, it started assigning address for my internet provider instead of my internal network, apparently some touchy people get really mad about such small things.

Could you give me a hint about how to allow N clients on port 23? I thought I was lucky just to get one client one one port, I didn't know ports could be shared. Can this be among four users at four different IP addresses, or do they all have to go to the same IP address?

prof_braino
11-07-2010, 01:47 AM
Good luck with forth - I'm not a user but I know it has a dedicated following.

Hey, thanks for that; and good luck to the Bulgarians with their "Bulgarian". It also has a small but dedicated following; apparently it too is useful, on occasion. Personally, I'm not dedicated, just too lazy to learn another language.

MacGeek117
11-07-2010, 02:09 AM
Works for me....
MG117

caskaz
11-07-2010, 02:34 AM
Hi prof_braino.

I don't understand as well.
Only person that have Hive can try this test?

SexieWASD
11-07-2010, 02:40 AM
sexiewasd@WASD:~$ telnet 99.7.4.73
Trying 99.7.4.73...
Connected to 99.7.4.73.
Escape character is '^]'.
braino PF v3.5c 20101104 22:38 1

Cog1 ok

telnet> q
Connection closed.
sexiewasd@WASD:~$

prof_braino
11-07-2010, 02:42 AM
I am in!

That is a LOT of defined words...

VERY COOL

Thanks! Coming from you, that's extra nice.

It's pretty much what's needed for a kernel on the prop. The assembler and disassembler, and the software logic analyzer, are added as extensions, but are added to individual cogs to keep the dictionary as small as possible.

prof_braino
11-07-2010, 02:52 AM
Hi prof_braino.

I don't understand as well.
Only person that have Hive can try this test?

Sorry I was unclear.

This is running on a Prop Demo Board.

Anything that can run a telnet client should be able to connect to it.

The Demo Board is running propforth 3.5 or 3.6 and with IPserver.f added.

This uses the wiznet811mj for ethernet, which is similar to the spinneret part that is coming out on Monday. The Hive configuration uses a different part for ethernet, and Sal has not done that implementation yet, he's still doing the multi-prop serial interface.

Please try to access the experiement using any telnet client you have avaialbe. I have used TeraTerm and windows Hyperterm successfully, and some of the others have use linux by the looks of it. Your linux should have no problems.

I was able to access a device in Vancouver from Chicago and define and execute words with no apparent difference in response time from the unit in my lab.

If you have trouble connecting, there could be somebody already connected; please try changing the port from 23 to 22, 24, or 25

kuroneko
11-07-2010, 03:01 AM
Works for me. Well done.

jazzed
11-07-2010, 06:11 AM
So, does this violate some law or regulation if it uses other than port 23? I almost got in trouble when I started my first DNS server, it started assigning address for my internet provider instead of my internal network, apparently some touchy people get really mad about such small things.
I think you answered your own question.


Could you give me a hint about how to allow N clients on port 23? I thought I was lucky just to get one client one one port, I didn't know ports could be shared. Can this be among four users at four different IP addresses, or do they all have to go to the same IP address?
In other languages where the "sockets" interface is used, the port is just a server connection ID starting point. Once the IP address is "bound" other not "well-known" ports (usually > 16000) are used to maintain the connection between the client/server in conjunction with the user's IP address. Of course a new thread would be required for each connection.

If I ever have a good reason to visit Bulgaria for an extended stay, I might invest significant effort to learn the language. Until then I'll be happy with all the others I already know or can easily learn that follow similar form without risking getting stuck in Bulgaria ;-)

Heater.
11-07-2010, 06:34 AM
prof_braino:


So, does this violate some law or regulation if it uses other than port 23?


No. On our own machine you can use whatever port numbers you like for anything. I guess there is the possibiliyt your network provider does not let all ports in to you though.

People will be a bit more touchy about DNS, if you start assigning addresses to your private machines that clash with those of the public internet or your ISP and then those private machines try to speak across the internet.

But then again I would have thought your ISPs routing would be smart enough to drop all such addresses.

I don't think you will get multiple connections to the same port unless your interface supports creating sockets, listening for connections and accepting those connections.

Jazzed, It is not necessary to use threads in order to make use of multiple socket connections. You can use select() in a loop to find out from which file descriptors you program needs to read data.

jazzed
11-07-2010, 06:52 AM
You can use select() in a loop to find out from which file descriptors you program needs to read data.
Of course you can use select().
That's fine for a super simple case where resources can be hogged by users.
Giving a user their own pid/shell is a different story.

Heater.
11-07-2010, 07:03 AM
True enough.

I just imagining one day logging into another of Humanoidos's "Towering Inferno" creations that has 1000 Prop IIs each with some hundreds of megabytes of SDRAM.

In which case PID becomes "Propeller ID":)

prof_braino
11-07-2010, 02:55 PM
Thanks guys. Right now its just low level: one cog, one port, one one command line.

The software multi-tasking one a single cog could handle all sessions as separate threads, but that is more application level and might not make it on the task list for a while. At least until there is a specific need for it. Is "each telnet port on a separate thread" critical to some higher function?

Multiple threads (in software rather than hardware using separate cogs) might come up again in creating the web page server, but I don't know much about that either, it might also be a ways away.

Unless somebody wants to help on the web server part for the spinneret project? should i move this part of the conversation to the spinneret threads?

hinv
11-07-2010, 05:31 PM
This IS cool!
I think I like forth, but I don't know where to start.

What are the other cogs doing?
How deep is the stack?
Is there a way to get the calculation output and input in decimal?

Anybody have a similar thing using an ENC28J60?

Take Care,
Doug

prof_braino
11-09-2010, 12:02 AM
This IS cool!
I think I like forth, but I don't know where to start.

What are the other cogs doing?
How deep is the stack?
Is there a way to get the calculation output and input in decimal?

Anybody have a similar thing using an ENC28J60?

Take Care,
Doug

ENC28J60 is on the Hive hardware, Sal has not gotten around to it since he's busy with multi-prop serial. But the Wiz811MJ code should work OK on the spineret, since they are both w5100, although we won't know till we receive the parts.

prof_braino
11-09-2010, 02:06 AM
This IS cool!
I think I like forth, but I don't know where to start.

What are the other cogs doing?
How deep is the stack?
Is there a way to get the calculation output and input in decimal?

Anybody have a similar thing using an ENC28J60?

Take Care,
Doug

1) other tasks (terminals on other ports, serial comm, apps)
2) default is 32 elements, this is excessive, but there's plenty of room so why not
3) type in


decimal
st?

and tpye


hex
st?

to change it back

posting forth references page per request

Brian Riley
11-09-2010, 10:31 PM
...

Please try to access the experiment using any telnet client you have available. I have used TeraTerm and windows Hyperterm successfully, and some of the others have use linux by the looks of it. Your linux should have no problems.


I opened a Terminal window in Mac OSX (Snow Leopard) and used 'telnet'



Zeus:~ brianbr$ telnet 99.7.4.73
Trying 99.7.4.73...
Connected to 99-7-4-73.lightspeed.cicril.sbcglobal.net.
Escape character is '^]'.
braino PF v3.5c 20101104 22:38 1

Cog1 ok

Cog1 ok
words
NFA (Forth/Asm Immediate eXecute) Name
5148 F fl 50D2 F onreset7 5072 F onreset6 5066 F onboot
505A F onboot 5022 F fled 4F66 F ipinit 4F52 F ipinitialized

... rest of list deleted ...


I closed the connection and reconnected right away and hung, unresponsive, at the 'braino' line. I escaped and closed the connection and waited 5 minutes and this time all OK again


Zeus:~ brianbr$ telnet 99.7.4.73
Trying 99.7.4.73...
Connected to 99-7-4-73.lightspeed.cicril.sbcglobal.net.
Escape character is '^]'.
braino PF v3.5c 20101104 22:38 1

Cog1 ok
1 2 + .
3 Cog1 ok



Neat .... nice job

cheers ... BBR

richaj45
11-10-2010, 01:56 AM
Just did it.

That is so cool.
Was this telnet server written in spin?

So much with so little.

rich

hinv
11-10-2010, 02:56 AM
Yeah, this is really neat.
It is like a forth evangelism tool.

I still havent gotten it do display in decimal though. Could you please supply a complete command line to add 8 and 9 and display it in decimal instead of hex?
If I could get it to do floating point decimal, I could use it as my calculator instead of bc.

Thanks,
Doug

kuroneko
11-10-2010, 03:01 AM
I still havent gotten it do display in decimal though. Could you please supply a complete command line to add 8 and 9 and display it in decimal instead of hex?

decimal
8 9 + .

Numeric mode is then decimal until changed again.

prof_braino
11-10-2010, 03:31 AM
Was this telnet server written in spin?


The original "primitive" forth kernel (memory read, memory write, primitive dictionary structure) was written in spin. This was used to create the initial simple kernel. This was used to make a forth program that converts the forth code back into spin. The spin was used to define more forth which was used to define more spin, until the present kernel was reached.

Now PropForth.spin defines the full forth kernel. This is done so that the proptool can be used to resolve forward references. [Normally the forth kernel simply re-creates itself with no outside PC, OS, or programming language; but since its here and it works and its pretty good, we may as well take advantage of it]

This telnet server as well as all the rest of the propforth stuff was written in high level forth, and optimized into assembler using the forth assembler.

If you want to use and of the forth stuff with spin or catalina or propbasic (I think) you can call it as assembler routines, but the interface stuff is not standardized until version 4 in December.

prof_braino
11-10-2010, 04:15 AM
It is like a forth evangelism tool.

I still havent gotten it do display in decimal though. Could you please supply a complete command line to add 8 and 9 and display it in decimal instead of hex?
If I could get it to do floating point decimal, I could use it as my calculator instead of bc.

forth evangelism is why folks don't admit to using forth in public, :turn: its the worst in techno-fan-boyism. :lol: Hopefully, this is just another cool tool to have fun with

The issue you are having is that the STACK DUMP word


st?

always displays in hex for the convenience of the developers.

What you want to use is the period which is the 'print the first value on the top of the stack' word, as in



21
st?
ST:0000021
8 9 + .
11 cog4 ok
decimal
8 9 + .
17 cog4 ok
st? .
ST:0000021
33 cog4 ok


NOTICE the period appears three times in the above, it doesn't show up well due to fonts

hinv
11-10-2010, 10:48 AM
how are you getting "decimal" on its own line without getting a prompt back?

caskaz
11-10-2010, 11:59 AM
Hi.

hex/decimal are define on PropForth below:
: hex 10 base W! ;
: decimal A base W! ;
: base C paret ;
: paret par COG@ + ;

There is value"10/A" in Hub memory to pointing by content of cog-memory-address.


Cog6 ok
par COG@ .
B70 Cog6 ok <-- Hub memory on hex (in case of cog6, not other cog)
par COG@ c + W@ . <-- hex (There is address of base value)
10 Cog6 ok <-- hex (base)

Cog6 ok
decimal
par COG@ .
2928 Cog6 ok <-- Hub memory on decimal
par COG@ 12 + W@ . <-- decimal
10 Cog6 ok <-- decimal (base)

Peter Jakacki
11-10-2010, 12:47 PM
I just checked it and tried to write a quick eeprom dump routine even though I found out later it already had one. I looked for number formatting words but couldn't see them from the words listing so I just wrote a quick one for forcing fixed places.

Having the ethernet running on the Prop even with a Wiznet is cool, I have done this before but cheated using an XPORT.

Good work with the Forth too, it's becoming more usable for real apps but I have to play with it a bit more to be able to speak with any authority. Is there a facility to hold all the headers and links in eeprom or elsewhere so as to free up the hub ram for code?




Cog1 ok
: u.n swap <# swap 0 do # loop #> .cstr ;
Cog1 ok
1234 2 u.n
34Cog1 ok
123456 3 u.n
456Cog1 ok
: edump over + swap do i 0f and 0= if cr i 4 u.n ." : " then
i EC@ 2 u.n space
loop ;
Cog1 ok
0 200 edump

0000: 00 B4 C4 04 6F C0 10 00 B0 7F B8 7F DC 7E C0 7F
0010: A0 7F 02 00 CC 7E 04 00 1B 90 FC A0 30 92 FC A0
0020: 43 EC BF 68 48 8E BC 5C F2 85 3C 62 03 00 54 5C

prof_braino
11-11-2010, 04:23 AM
cheated using an XPORT.

Is there a facility to hold all the headers and links in eeprom or elsewhere so as to free up the hub ram for code?




Cog1 ok
: u.n swap <# swap 0 do # loop #> .cstr ;
Cog1 ok
1234 2 u.n
34Cog1 ok
123456 3 u.n
456Cog1 ok
: edump over + swap do i 0f and 0= if cr i 4 u.n ." : " then
i EC@ 2 u.n space
loop ;
Cog1 ok
0 200 edump

0000: 00 B4 C4 04 6F C0 10 00 B0 7F B8 7F DC 7E C0 7F
0010: A0 7F 02 00 CC 7E 04 00 1B 90 FC A0 30 92 FC A0
0020: 43 EC BF 68 48 8E BC 5C F2 85 3C 62 03 00 54 5C


Thanks for the post. I was hoping you would join. I thought we has number formatting, but it might be in the extensions. As you see the kernel is getting crowded.

Sal has been considering putting parts of the dictionary in eeprom, but not everybody has the larger ones (main test bed is demo board with only 32k) so there is no decision on the best way to go.

I was hoping you could give a suggestion as to a nice way to divide the kernel to use the eprom, and a way to recognize eeprom size. Right now Sal just goes off the end I think.

The current plan to get more room in RAM is: after caskaz and I get SD working, we will put extensions and utilities on SD, and load things on the fly a-la colorFORTH. The kernel would be just enough to do I/O and access the SD, and everything else would be non-persistent/compiled-on-the-fly. I don't know if it will work, but it sounds cool, and Sal says it will be transparent to the user. But we don't have a scheduled availability date for this yet.

Putting stuff in EEPROM would be useful in any case. Any ideas would be appreciated!

prof_braino
11-11-2010, 04:33 AM
how are you getting "decimal" on its own line without getting a prompt back?

I just typed it, and left a prompt out. My test rig is not connected to the internet, so I couldn't cut and paste, but you get the general idea.

Peter Jakacki
11-11-2010, 05:11 AM
My edump revealed that both 32K sections of the maximum 54K eeprom area were mirrored which indicated that you were only using a 32K device. This is always a simple test for eeprom size plus checking acks from eeprom I2C addresses will test for multiple devices (or devices with multiple addresses).

I think that since Forth is not just a runtime VM but a target resident compiler and text interpreter that we should always try to store the headers in anything but the precious hub RAM. My thinking has always been to use byte tokens but 16-bit words are ok. Compiling on the fly complicates things and may benefit from precompiling into intermediate code perhaps.

If someone wants to play with Forth on their demo board then it should work with a standard 32K eeprom but if someone wants to get serious then use at least 64K or SPI Flash chips or SD, the latter being favored for it's universality and huge storage.

Using Spin to compile high-level Forth source is very very messy but necessary for compiling standard library functions into the kernel. I think this aspect alone turns me off writing a Forth for this core(s). But seeing how the headers are defined inline in the Spin source makes it a bit harder to separate them into another file at compile time for inclusion into external memory whether that be outside the 32K of eeprom space or SD etc.

If we could get BradC involved somehow I am sure that he could tweak his BST with the inclusion of new directives etc that would allow us to build these headers into another file plus maybe even improve the writing of high-level code. No more would we have to code like this:

word @emitqNFA + $10
emitNFA byte $84,"emit"
emitPFA word @emitqPFA + $10
word (@a_zbranch - @a_base)/4
word $FFFC
word (@a_litw - @a_base)/4
word $00FF
word @andPFA + $10
word @emitptrPFA + $10
word @WatPFA + $10
word (@a_dup - @a_base)/4
word (@a_zbranch - @a_base)/4
word $0008
word @WbangPFA + $10
word (@a_branch - @a_base)/4
word $0004
word @twodropPFA + $10
word (@a_exit - @a_base)/4

Would then possibly become:


header "emit",emit ' create header in separate header file pointing to emit

' create forth runtime code - calculate branches - calculate kernel or interpreted word values
'
emit fword emitq,zbranch,@emit
fword litw,$00FF,and,emitptr,Wat
fword dup,zbranch,@emit_
fword Wbang,exit
emit_ fword twodrop,exit
These are just my quick thoughts for the moment as I will think further on these points but an improved kernel development environment would certainly make it a lot easier overall and also to create the structures we need to extend the kernel outside of 32K RAM.

hinv
11-11-2010, 01:47 PM
Since you are already using the wiznet 5100, and the propeller, why not enter this telnet server, or something more souped up into the Spinernet Design contest?

hinv
11-11-2010, 02:13 PM
Have you removed the timeout feature? I could only get into port 25, and now it seems locked up.
I was left connected from last night until this morning on a connection until it locked up.

prof_braino
11-12-2010, 03:24 AM
Have you removed the timeout feature? I could only get into port 25, and now it seems locked up.
I was left connected from last night until this morning on a connection until it locked up.

It should timeout after two minutes of inactivity.
If you don't have "auto-close" on your telnet client, it (your window) might stay up all night

Its working now, so its not broken.
Maybe somebody else was on?

prof_braino
11-12-2010, 03:39 AM
Since you are already using the wiznet 5100, and the propeller, why not enter this telnet server, or something more souped up into the Spinernet Design contest?

It's not really fair, since telnet is so simple and forth is so easy. But we might enter the telnet server if we can't come up with something more useful. Not may people are interested in interactive development and debugging over ethernet, and it wasn't much community colaboration. Sal suggested we (the forth users on the forum) come up with a project idea and work from there. In any case, we should wait until we actually get the spinneret hardware so we can see what it does before make big plans on how to use it. I don't know if the braino-labs purchasing department has ordered the parts yet.

If you (or anybody else) has an idea to explore, it would be fun to have a community project. Of course, I'll be doing my stuff in forth, but we can make low level assembler driver that are callable from spin, I think. The automated shopping list is a really cool idea. Something like that would be fun.

prof_braino
11-12-2010, 04:09 AM
My edump revealed ...
These are just my quick thoughts

Your quick thoughts are more on the mark than many of my "thinking about it all week" thoughts.

I'll forward you ideas to Sal, he has said similar things on some of those topics.

Thanks!

Peter Jakacki
11-12-2010, 04:40 AM
Just another quick thought :smilewinkgrin: but if we could place all the headers together in one contiguous area at the end of memory then we could always access the dictionary via eeprom at the same location but it wouldn't matter if we overwrite the area in RAM.

The headers would not even really need a link field but would need a code pointer instead. As we know the dictionary is only used during the evaluation stage when words are typed in either interactively or from a text file. So then there is no great penalty in reading from eeprom as the evaluate routine scans just the first byte or two of each word looking for a match. Having scanned the first byte with the string count it also knows how to jump to the next word assuming therefore that newer words are added to the descending start of the dictionary.

This method could be adapted to the current version of Forth maybe? I will look into this but Sal obviously knows best in this regard.

hinv
11-12-2010, 07:30 PM
I think my thoughts are related. I found myself retyping forth code and was wishing for some persistent store for the dictionary. Maybe a standard one, and a personal one loaded from a file on uSD.
I would also like to see a history mechanism like tcsh has. It would be great to be able to go up to 10 commands back to recompile a word that depends on some other word you just changed.
Please forgive me if this capability is already in there or if I sound like an idiot. I'm only on the 2nd chapter in Starting Forth (http://home.iae.nl/users/mhx/sf.html).
As for the spinnernet module goes, I guess I would be happy with a USB connected propForth environment rather than the more expensive(in price and pins) ethernet connected one.

Take Care,
Doug

prof_braino
11-13-2010, 05:53 AM
....

There is persistent storage in the dictionary, external users (other than me) can't save on MY board over the ethernet, its just a demo. The forth kernel has the saveforth word, which save the entire dictionary so when you reboot, its all right where you left it.

For now, we use the PC to store code in text files, and load it using fast load as in the examples.

I'm working on a command line history, but we have to save it someplace, and caskaz is still working on SD support. Once SD is working, you can save every forth command you ever type in your LIFE on a single 2 gig SD card, along every program you ever write, every build you compile, and pictures of your dog. Unless you have lots of pictures of your dog. Forth code is very small.

Asking for useful functions does not make you sound like an idiot. Admitting you use forth does that by itself :)

Starting Forth is a good place to start, so you are on the right track.

If you get a demo board, a proto board, or a development board, you can run propforth over serial or USB/serial. The Ethernet is only a special case for remote monitoring and control point nodes on a network.

prof_braino
11-13-2010, 06:00 AM
Thanks everybody that helped test my set up. I'll leave the telnet server running for a bit so folks can play with it.

The discussion is drifting, so the original topic is getting stale.

If anybody has further questions, please PM me. Or start a new thread.

Or If you have ideas for the spineret contest and want to use propforth. Most of the team are interested in participating in a community project (beyond kernel development). Please toss out any idea, no matter how whacky, we will give it consideration.