Version 6 (modified by Charles, 7 years ago)


Help Wanted

Cobra is a community driven open source project. The license is the "short and sweet" MIT license meaning that you can use Cobra in both open source and commercial projects.

There are many ways to help with Cobra and all are appreciated.

Participate in the discussion

We have  discussion forums where you can ask questions, answer questions, comment and report problems.

Participate in the wiki

This wiki is editable by the community. The login and password are the same as the discussion forums. Register there first.

Feel free to improve pages in any way:

  • add knowledge
  • correct mistakes
  • improve grammar, spelling, etc.

A great time to edit the wiki is right after you have learned something and the lesson is fresh.

Spread the Word

Spread the word about Cobra through email (but no spamming please), IM, IRC, Twitter, Tumblr, Facebook, etc. More exposure brings in more users which expands the community and helps all of us.

How To's

Any kind of "how to" that shows how to do something with Cobra or how to leverage existing libraries and tools with Cobra is a great contribution. This could be in the form of a Cobra program with comments and doc strings, or it would be a wiki page.

Kick Ass Tutorial

Our current tutorial is quite short after which we point people to the LanguageTopics and LibraryTopics wiki pages for further information. We could use a more extensive tutorial. It could be done here in this wiki or hosted separately.

Editor and IDE Support

In particular, the Visual Cobra language module for Microsoft Visual Studio could use some real help.

It would also be great to have add-ins for MonoDevelop and/or SharpDevelop. MonoDevelop is cross platform, running on Windows, Mac and Linux.

User 'torial' is creating a new NajaCobraIde.

We could use a Cobra lexer for the  Scintilla source code editing component. This would then impact SciTE, Geany, Anjuta and  many other projects.

See also: EditorSupport, IDESupport

Open Source Development in Cobra

This is any kind of development that uses Cobra and is readily available to the community via open source. We have several of these already which are tracked at RelatedProjects. Of course, we don't need to (re)invent everything as Cobra leverages .NET; hence, the DotNetProjects page.

This could also exclude more extensive example applications, games, etc.

Rather than host such projects here, which would increase the burden of caring for Cobra, we ask that you leverage existing CodeHostingSites.

Compiler Fixes and Refinements

You can learn about developing on the compiler by obtaining the source code and reading the documentation under the "Developer" directory. You will currently need .NET on Windows, or Mono on Mac or Linux. The JVM back-end (mentioned below) is currently a cross compiler and not mature enough for our self-hosted Cobra compiler to be compiled for the JVM yet.

You might find it useful to look at the Trac timeline for "changesets" to see what Cobra fixes and refinements look like.

Note that Cobra is implemented in Cobra which results in a higher level coding experience than say, the somewhat typical approach of implementing a language in C.

Feel free to ask as many questions as you like in the discussion forums or on IRC to get up to speed.

Java/JVM Backend

Cobra should run quite nicely on the JVM since it has much in common with .NET including:

  • garbage collection
  • machine code generator
  • base classes like Object and String
  • single inheritance classes and multiple inheritance interfaces
  • etc.

Cobra already has a JVM back-end which was started by CharlesEsterbrook and is being continued by MikeHopkirk?. But it's a big task and we could use more help. Most of the work is around the code generation as we already have a lexer, parser, AST nodes, error checking, etc.

Major Language Features

Major language features require careful planning and discussion. Languages are harder to change than applications because people produce source code against these features which could then be broken by further changes. The best place to start here by discussing a proposed feature in the discussion forums.

That's All

Back to WikiStart