Contributing and Timeline


#1

Hello,

I am very excited at what you all have created thus far – thanks. This is exactly the kind of language that I would love to see my team using.

I would like to help contribute to Kotlin as soon as possible. I see the issue tracker and read your blog post looking for contributions, however it is difficult for me to dive in and decide what issues to work on. Some open source projects tag some of the issues as “newbie” – issues that are easier for first time contributors to sink their teeth into. Would it be possible for you all to mark up some of your issues like this? I think this also helps by showing what issues the team would like others to start work on.

Secondly, it is not clear to me what the timeline is for issues in the tracker. Is there a feature release plan for the next couple of months? For example, are issues marked as M1 public EAP the ones the Jetbrains team currently considers highest priority? Finally, I am very interested in the advanced pattern matching and algebraic data types – is there specifically a timeline for these items (eg six months off, one month off, a couple of weeks if we only had some help)?

Thank you.

Trevor


#2

Hi Trevor,

Thanks for your interest.

I marked a few issues with “Newbie”: http://youtrack.jetbrains.com/issues/KT?q=tag%3A+Newbie
Other committers will tag more over time.
Also, there is the Kontributor assignee in our tracker: http://youtrack.jetbrains.com/issues/KT?q=Assignee%3A+Kontributor
There isn’t much assigned to him, but this will change.

Feel free to contact us if you need any further information.

As of the timeline, we are working on it, curently the versions in the tracker don’t tell you much.

On the pattern matching question: it is more like many months off, as we prefer to stabilize the more fundamental features before going into more difficult ones.
For the time being you can enjoy the full power of when and smart casts. This code works now:

``

fun eval(e : Expr) = when (e) {
  is Num -> e.value
  is Sum -> eval(e.left) + eval(e.right)
  is Mult -> eval(e.left) * eval(e.right)
}


that doesn’t seem much worse than real pattern matching to me.

#3

Andrey,

Thanks for the answer. I will look over the newbie issues this week.

As for the pattern matching: mainly I want to pattern match against algebraic datatypes. A friend of mine is going through Okasaki’s Purely Functional Datastructures and implementing the results in Scala. He is blogging them here. I would like to do a parallel series of blog posts, but with Kotlin. I think this would be a great thing to turn on more functionally-inclined PL types to the features of Kotlin.

Anyway I am excited to contribute. More soon.

Trevor


#4

Trevor,

As for the pattern matching: mainly I want to pattern match against algebraic datatypes. A friend of mine is going through Okasaki's http://www.eecs.usma.edu/webs/people/okasaki/pubs.html and implementing the results in Scala. He is blogging them http://jordanlewis.org/. I would like to do a parallel series of blog posts, but with Kotlin. I think this would be a great thing to turn on more functionally-inclined PL types to the features of Kotlin.

Unfortunately, we won't have ADTs/complex pattern matching implemented soon.