Here are some of the things we should discuss on the roadmap for the post 1.2 phase. None of them are set in stone and most are frankly just my own opinion and just putting it out there for discussion.
Short term:
- OBR move of the dist repos into a single repo. I will give all the parts I was responsible for to Tako, it makes no sense to split the work on something that must be done atomically. This is the very first thing we should do, so it has top priority.
- Figuring out a build procedure for a 1.2.1 release. Given that we want to make backward-compatible point releases every so often, we should start making sure we know how to. That involves starting to branch the 1.2 release and making a testing 1.2.1 release to make sure it's possible and all goes to plan. Which means that binaries produced for 1.2.0 must work as-is on a 1.2.1 distrib and vice-versa. I expect problems with the language module or distrib dependencies for user modules that depend on them, which may lead to situations where a user module compiled for 1.2.1 will depend on ceylon.language/1.2.1 and ceylon.collection/1.2.0 which depends on ceylon.language/
1.2.0. We need to figure this out ASAP. I think this can go on in parallel to the OBR work, because most of the outcome will be knowledge rather than code. I'd volunteer Tom if he's up for it ;)
- Planning the face2face where we'll discuss all this, but mostly just celebrate.
Mid term:
- Android, which means discussing Java 8 as well, and the possibility of producing one binary for J7 and one for J8. I'll attack Android myself.
- Java 8. We still need a story for being able to pass our lambdas to Java 8, and possibly back as well. We also need to figure out if we can/want to turn our Callable into J8 lambdas, and our mixins into J8 mixins. As a starting point we should rebase on Java 8 javac, once we've checked that it does not _depend_ on J8 (which would be logical given that it need to be bootstrapped on J7). That will still make us work on J7 while giving us the means to output/consume proper J8 jars. I can deal with the rebasing, once the OBR is done. I plan to try the J8 git export that David Lloyd maintains on GitHub, that will save me the hassle of remembering how to use that non-git CVS they use whose name I can't remember.
- Integration with things like Hibernate. We need ORM to understand how to deal with Ceylon platform types, such as our own boxing types (Integer) and collections. Basic ORM support works, and we can plug in custom converters for most things except IDs (which we need to fix by extending Hibernate. JPA says we can't have converters for ID but Steve from Hibernate team was open to relaxing this restriction in JPA, possibly leading to a change in the next spec to allow it if we can convince them), and collections (all collection handling seems hard-coded in Hibernate (by Gavin at the time, haha) to JDK collections, so even if we can add custom converters for collections they still have to be JDK collections. again we will have to extend Hibernate). Frankly this is something I'd love to delegate to someone. I'll try to find someone unless one of you begs to take it.
- OpenShift v3 cartridge: we need to make a v3 cartridge, which is based on Docker. Aslak has made docker plugins for Ceylon in the past, they can probably be used to bootstrap it.
- Herd: I need to do a new release of Herd to fix high-priority issues. This should take a week max, but will mean URLs are going to change. I expect the repo will stay where it is (because tools are using it), but the logged-in UI will move to
herd.ceylon-lang.org.
- Blogging. I plan to blog about the OpenShift cartridge, the Hibernate/Cayla demo I wrote for last Devoxx.fr, the tagging of the language module ceylondoc, the Maven overrides and flags, and whatever other thing I can think of. I think we should throttle it to one post per week to keep people coming back regularly. I think we should have a queue where we put our titles and reserve weeks so we don't all blog at the same time and leave weeks empty. I suggest you all contribute and find any reason to blog. Like the IDE new features, or the Ceylon CLI plugin support, or native, serialisation, IntelliJ plugin. We MUST use the blog more regularly, it drives a massive number of people to our site.
Eclipse IDE: I still want better incremental editing, especially for package/module descriptors ;) I also want it to be able to push to Herd more easily, it should be a breeze. Other than that it's already pretty rad. We should seriously consider integration with JBoss Tools, as we would benefit from every JBoss Tools IDE user having Ceylon already installed. The JBoss Tools people can help with this but I expect someone (David) would have to take the lead, if only to make sure it happens.
IntelliJ IDE: obviously that's going to be the main focus of the IDE team.
- Push for Linux distributions to ship Ceylon deb/rpm. It's been long enough, we should lobby for their integration in Ubuntu/Debian/Fedora/RHEL. It should not be a lot of work. We could delegate the RH part to some RH people we know who have helped in the past.
Unicorn term:
- CI (waiting for OBR)
- Performance benchmark suite, to tell us when we improve, when we lose, which is a pre-requirement for any perf work we do. We can't go and continue attacking perf in the dark where any subsequent work can invalidate what we spend weeks fixing.
- Perf improvements in compile/run/IDE time. NOT before we have a bench suite.
I reserve the right to add things to that list later ;)
Of course all of this is only out there for discussion.
--
Stéphane Épardaud