Tamale Careers DevBlog
 
 
 
 
Tamale Careers: DevBlog

Wednesday, July 12, 2006

Tamale Announces Development Challenge

Tamale to reward contributions to the open source CsIL Messaging System.

See details and rules below to participate, and contact jobs@tamaleresearch.com to find out about the possibility of compensation for your work.

Solutions that really impress can result in cvs commit rights, or an interview for a permanent position on the Tamale development team! Check out our career postings to see what positions are available (if you like this kind of problem, you'd love being a systems engineer at Tamale).

Background

Tamale maintains the open-source messaging component CsIL. CsIL provides .net languages with a client for JBossMQ, the JBoss JMS implementation. CsIL is hosted on sourceforge: http://csil.sourceforge.net

CsIL communicates with JBossMQ via a protocol called xil2 (it is the second iteration of the xml invocation layer). The CsIL JMS design is modeled after JBossMQ, where the JMS implementation sits on top of the invocation layer. The CsIL documentation elaborates the structure of the xil2.

In many cases, there is a one to one correspondence between the C# classes in CsIL and Java classes in JBossMQ.

Furthermore, even though the IL layers provide data level integration between the C# and Java languages, there are still "contracts" that exist between the JMS classes in C# and in Java.

Translations from the JBossMQ implementation to C# arise when the semantics of Java and C# differ. For example:

- C# has read/write streams, where as Java splits them into Input/Output

- C# has the lock keyword and the Monitor object for locking objects, while Java has only the synchronized keyword.

One of the most important classes in the JMS implementation is MessageConsumer. JBossMQ, and hence CsIL, use a base class to pull JMS messages from the JMS server.

The C# version can be browsed here.

The original java version can be browsed here.

(N.B. CsIL is designed to work with JBoss4)

The contract for MessageConsumer is:

  1. At the initialization of a topic/queue subscription, the MessageConsumer is initialized by the Connection.
  2. During initialization, the MessageConsumer should use the invocation layer to request a JMS message.
  3. The MessageConsumer must continue requesting messages until the server responds with "no messages available". The server will record the final JMS message request, and asynchronously send the next message on that topic/queue.
  4. MessageConsumer must raise an event for messaging listeners as messages are delivered.
  5. Messages must be retrieved from the server as quickly as possible, often faster than the local program using the CsIL library can process the message events.
  6. Message order must be maintained -- messages must be delivered to the local caller via events in the same order the server sends them to the client.

The Challenge

The current implementation of the CsIL MessageConsumer fulfills the contract, however, it does so with a very literal translation of the java code. Tamale is seeking contributed solutions that use the correct semantics of C# for lock management, threading, and event posting.

Setup Details

You will need to download JBoss4, and deploy the xil2 to the server. We recommend downloading JBoss4 from http://www.jboss.org and downloading the most recent release of the xil2 from http://sourceforge.net/project/showfiles.php?group_id=67694

You should deploy the released binary xil2 library to jboss, since this challenge only requires changes to the c# code. You should download the latest beta, which has support for .Net2.

To start coding, check out the xil2 module from the anonymous cvs at http://sourceforge.net/cvs/?group_id=67694

Then you can open the csxil project in Visual Studio express (http://msdn.microsoft.com/vstudio/express/visualcsharp/) and start developing your solution.

To submit your solution, first register on sourceforge.net. Then, post your MessageConsumer class to the sourceforge patch manager (http://sourceforge.net/tracker/?func=add&group_id=67694&atid=518664).

Make sure you are logged into sourceforge when you submit, and please provide a valid email address where we can contact you.

Post your questions to the CsIL help forum:

http://sourceforge.net/forum/forum.php?forum_id=229848

Please check that the relevant Joram tests included in the release pass.

Rules

Tamale will accept answers at our own discretion. Answer code must be completely original and must be compatible with the LGPL. If Tamale determines that two users submitted the same answer, the date of patch submission on sourceforge will be used to identify the original author. No reward will be given for anonymous submissions.

Tamale will grant cvs access, interviews, and any rewards at its sole discretion. This challenge is not a contract. Submission does not imply any contract or obligation for Tamale. Tamale can cancel the program at any time.



TAMALE VALUES
Want to work for Tamale? Though it'd be great if you could fulfill everything on our lists, specific or required skills are not everything.
Equally or more important is:
Demonstrated ability to learn new languages / technologies
Experience with delivering products / features
Desire to play a key role in a rapidly growing company
General compatibility with the Tamale team
We maintain high standards throughout our diverse skills. We care about your track record, your field experience, your talent and your drive. If you feel you can contribute to our company, please contact us at jobs@tamaleresearch.com to apply for this and other positions.
 
 
   
 

OPPORTUNITIES
 
 

 
   
 

TO APPLY

TAMALE LIFE

Our Customers
Meet Our Staff
Benefits Package