Wiki
Version 21 (modified by Charles, 12 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.

Koans

We have started a Cobra Koans project, but it still needs to be fleshed out.

Editor and IDE Support

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

MonoDevelop has an add-in for Cobra, but could use more testing and development. MonoDevelop is cross platform, running on Windows, Mac and Linux. It's also the basis for writing .NET/Mono-based apps that target iPhone and Android through tools from Xamarin.

It would also be great to have an add-in for SharpDevelop.

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, AutoCompletion

iPhone Examples and Instructions

See the MonoTouch wiki page and the discussion thread it references.

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.

Web Framework

Create an easy to use, practical web framework in Cobra for Cobra. You know you want to. Be the first.

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.

Once your code is ready, see HowToSubmitAPatch.

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.

Specific Compiler Enhancements

  • SyntaxHighlighter.cobra, HelpGenerator.cobra and DocGenerator.cobra always have some outstanding room for improvement, usually documented in the files themselves with comments of "TODO" and "to-do". This is a nice way to ease into the compiler as it exposes you to the AST nodes without requiring that you take on several compiler phases (lexer, parser, bind inheritance, bind interface, etc.).
  • The back-end generates C# text files and then invokes the C# compiler. This was a great place to start, but we're now ready to replace that with something like Mono.Cecil.

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 is by discussing a proposed feature in the discussion forums.

Expand this List

This HelpWanted page is a wiki page. Feel free to add to it. If you want a less official page to jot down your wishes (because this page is where we will point people to on a regular basis), try the WishList.

Make a Video Game

This is somewhat whimsical, but CobraCommander dreams of playing a video game that was written in Cobra. Platform doesn't matter, but given Cobra's current status of running on Mono and .NET, the likely candidates are Windows, Mac, Linux, iPhone and Android (the latter two through Xamarin). You may wish to use something from the "Game Frameworks" section listed at DotNetProjects, or build from the ground up with OpenTK. You might also want to do a fresh search on game frameworks for .NET and Mono.

See Also