Where is Haxe heading?

Hey guys,

please don’t take this message as a trolling attempt or a generic bashing on Haxe. I love a lot of things about Haxe, but I am worried about the current state and the direction it is heading and wanted to get some of your thoughts.

At the moment it feels like we basically only have one good back-end: JavaScript. Plus another one that is currently actively developed which is PHP7.
The C#/Java back-ends are pretty much dead: Outstanding issues don’t get addressed and at least the generated Java code looks less then optimal, I highly doubt it is memory efficient. Neko performance is limited. HashLink does not fully implement sys and seems to be developed primarily towards the needs of one specific game. The C++ target feels slower than necessary and I am not sure about the enterprise production readiness of it’s garbage collector. The Lua target is a nice PoC of how to add another language but I fail to see it’s usefulness, I am still constantly hitting the “too many local variables (limit is 200)” which arises because of how the code is generated. Oh, then there is the Flash target, which is excellent but well Flash is going to dying quickly.

Per target there only seem to be one active developer (if at all) and one of the reasons probably is that back-ends need to be written in OCaml.

On top of that, apparently the compiler guy got lost lately.

The statement on the Haxe site it has “a complete cross-platform standard library” isn’t entirely true, I just say “concurrency support” and “internationalization” (UTF).

So, do you think Haxe is a good choice for anything else than a JS/Flash-based browser/mobile game?

Regards,
Seb

Btw. I recently had a look at nim-lang which targets C,C++ and JS. While one can argue about the Python style syntax, they seem to have their priorities straight (compiler written in Nim itself, high performance, small binaries, cross-platform, working decentralized package manager) Features - Nim Programming Language

2 Likes

Hello,

I think that’s a very unfair and quite inaccurate view of the current status of Haxe targets.

  • JS and PHP targets are being worked on a regular basis
  • C++ target is widely used for many commercial applications, so it’s definitely enterprise production ready.
  • the new HashLink target is planned to be a Neko replacement and offers a lot of speedup. It is not “developed towards the needs of one specific game” (where did you read that?), and the sys implementation is quite complete, maybe only a few things are missing (such as multithread) but are planned
  • Java and C# indeed requires some additional work, but there are hasn’t been much community interest around those lately.
  • I can’t comment much on the Lua target, maybe someone else from the team will be able to tell you more
  • and you forgot the Python target, which is working very well and is regularly updated

The reason of the lack of contributors is maybe a little because of the back end is in OCaml (which is also the main reason the compiler is so fast), but IMHO it’s mostly because contributing fixes to a compiler is pretty hard!

Regarding concurrency and unicode support, that’s two things we are actively working on, see https://github.com/HaxeFoundation/haxe/pull/6748 and GitHub - nadako/haxe-coroutines

The only point we agree is that the Flash target doesn’t require much updates :slight_smile:

Now thank you for the constructive post, maybe next time you can instead spend the same amount of time to submit a pull request for one of the issues you want to see fixed :wink:

3 Likes

I’d like to mention that this game https://play.google.com/store/apps/details?id=com.bigblueparrot.pokerfriends is written in Haxe and compiled to C# for Android/iOS and to JS for Facebook.
So in my opinion Haxe/C# is also pretty much production ready.

hi Nicolas,

what I wrote is my current impression of Haxe. I do not proclaim the objective truth. I want some feedback if others see similar issues or not. I am currently questioning if I/we should invest more resources into Haxe - not only for games. I have been using Haxe for two years now, I enjoy the language’s power and spend quite some time on creating Haxe Github issues and PRs. I am still waiting for over six month for a very simple fix Reverse logic of finding mono compiler when no version is specified by sebthom · Pull Request #33 · HaxeFoundation/hxcs · GitHub to be merged. These kind of things worry me.

It may help if HF updates the Haxe roadmap https://haxe.org/community/roadmap.html and lays out to where the journey goes.

Cheers,
Seb

p.s. I find a comment by the language creator that says “shut-up and create PRs” a tad offending.

4 Likes

Looks really good!

In general I think you should look beyond what’s happening Haxe but look at programming world in general. Lot of people start to use JavaScript, you can do virtually anything with it; build websites, mobile/desktop applications, make commandline tools, build servers applications with it (nodejs etc). With Haxe you can do the same because you can do anything in Haxe :slight_smile: I personally like you don’t need the JavaScript ecosystem (I don’t want to install 10k npm modules to do build/bundle your project), but you can still use everything needed. The Haxe/JavaScript is really good(!), so having full support for it is really what you want. I think if there will be more interest in another backend, that will get also more attention. But in general most targets nowadays are usable in production, don’t hestitate to give feedback on actual experience.

Also, Simon (one of our compiler developers) might be quit, but he is still part of the team. We just don’t know if/when he comes back. I hope you don’t have the impression suddenly all development stopped; Haxe is an open-source community where many people working on several parts of Haxe; compiler backends, tools, ide integration, documentation, the websites, libraries and new features/bugfixes. That’s how open-source development works; it’s dependent of the community (aka you,me). The Haxe Foundation is now even able to search for even more people (The Haxe Foundation is Recruiting! - Haxe - The Cross-platform Toolkit). If Simon ever decides to comes back (which I still hope) then he would have even more time to focus on what he is really good at, but as commununity we have already lot of people working together making Haxe even greater too. We move along. Things will work out one way or the other, we will make new steps.

I’m looking forward to Haxe 4, which will have even more nice language features, integration (new haxelib maybe[?]) and what not :smiley:

I use Haxe on daily basis (full-time), I understand that seeing some PRs/issues not getting touched is annoying but just ping it once in a while and hopefully the right person answers.
Where do you use Haxe for?

1 Like

C# is not dead at all, we use it quite successfully for our games. While there are some issues and some of the generated code could be better performance-wise, it’s “production-ready” enough. C++ is the main output target for all OpenFL apps/games and the GC in particular is constantly evolving. And the recent-ish rework to CPP AST improved generated code a lot too. Lua target is actually even used by KING for some of their games. HashLink is the hot stuff right now too - more people is getting involved (I myself explore using HL+Heaps for mobiles lately). Python target can be seen as it has little use, but I actually found it very handy to have for my work: I easily provided a library for our QA automation people that is autogenerated using data structures and some logic from our main game.

All in all, Haxe is a pragmatic tool which are often used silently without much hype.

1 Like

This is all valid concerns, and there is certainly a (known) lack of visibility in what happens - other stacks have evangelists and companies fighting for attention…

Haxe-JS may appear stronger, because more people communicate about it!

4 Likes

I understand @seb’s feelings, and I think questions like this are fine and to be expected. It’s really hard to get a picture of where Haxe is heading or the overall state of it.

The official channels are rarely updated, blog posts come twice or thrice a year and don’t get follow-ups, issues and PRs on GitHub are left untouched for months and some even years, so it’s natural that someone who cares about Haxe might think something is wrong. To be honest, sometimes I even forget there’s the Haxe Foundation.

Also, Simon (one of our compiler developers) might be quit, but he is still part of the team. We just don’t know if/when he comes back.

That was really strange. One would at least expect a brief announcement somewhere. It seems nobody knows why Simon left. Another example of how badly HF communicates with the community.

All in all, Haxe is a pragmatic tool which are often used silently without much hype.

And here lies another problem. In my opinion - and I’m sure everyone else here will agree - there should be hype about Haxe. It’s a very exciting tool and we should be spreading the word explaining why it is awesome and should be used and making it easier to welcome people into the community.

In sum, I’d expect milestones to be announced every so often either here or in the website, I’d expect important features like the UTF and co-routines to be known by most in the community. I had no idea there was work being done to implement co-routines support, for example.

It may help if HF updates the Haxe roadmap https://haxe.org/community/roadmap.html3 and lays out to where the journey goes.

Which goes to show how inactive the HF is. The roadmap is clearly outdated.

Yet another example are the evolution proposals, which was a step in the right direction and put some order into the chaos that was the feature suggestions sent to the mailing list, which would often result in flames. I like the discussions we have there. However, they have been hanging there for months and I think only one of them has been followed-up, worked on, and merged.

Also, lack of documentation is a big problem. I don’t have a lot of time to spend reverse-engineering stuff. Other people like it and do it and get great results from investing the time and energy, but I don’t. I’m mostly talking about contributions to the compiler. The problem being lack of documentation. For example, we got the ML plugin API but it was never documented.

Don’t get me wrong and take these as constructive criticisms. I’m grateful for Haxe and everyone who has put time and effort into it. We have a great community and the gitter chats are a great place to hang out and get help. But we clearly have issues to solve and things to improve. Part of the solution is acknowledging them and having an active and transparent HF that coordinates everything. Another is to get more people into the community, which is currently small, partly because of the issues we have and the lack of PR for Haxe.

6 Likes

Fully agree with @fullofcaffeine. I love Haxe and want it to succeed. I think we need to be realistic about how it’s doing and what problems we need to focus on.

Haxe job results on Indeed: 5 results
Typescript job results on Indeed: 2000+ results

This is the main reason for the lack of contributions to Haxe. It’s not that compilers are hard (Typescript, Rust and Nim are also compilers, and vastly outstrip Haxe in number of contributors and rate of contributions.) Haxe lacks mindshare, it’s not being used very broadly, people can’t get paid to work on it, so fewer people are in the pipeline to learn it or contribute to it.

There are a couple examples of large companies that use Haxe for some set of projects, but next to any of the above mentioned languages, it’s not very impressive.

I don’t think this is a technical problem, it’s a PR and community problem. What are we doing about this? What can we do?

I think questions like this are important because, not being part of HF, it sometimes seems like no one is trying at all to address this, but just continues to work on technical improvements in a vacuum instead. As an example, I suggested Google Summer of Code, which I’ve mentored before, and volunteered to helpHF put in an application. There was basically no response.

4 Likes

2 posts were split to a new topic: C# target for android and iOS

I love Haxe, @ncannasse and many other people in the community are doing an impressive technical work about it, but unfortunately, not everything can be solved by making pull requests.

I wanted to complain here as well (hey, who’s next?) but stopped myself to do so.

Instead, all I will say is: I do hope the recent call for full time jobs in Haxe Foundation will have good results, and that one of these full time persons will give life again to the various unfollowed attempts to manage Haxe future on the non-technical side of things :pray:

And, I will transform magically my complaints into issues on this unused hidden gem.

2 Likes

I feel that there is a lot of potential for Haxe if we can solve how to use it as an intermediate build step in a clean and standard way.

What if you could generate SWC, JAR, DLL or CommonJS libraries cleanly for Flash, Java, C/C++, JS environments using Haxe? Consumers don’t have to use Haxe, but library authors can.

5 Likes

True, that’s an excellent use-case for Haxe. There are a few examples out there, including yours (OpenFL) and GitHub - paulfitz/daff: align and compare tables. There might be more.

When Haxe-in-Haxe becomes a reality, adding new targets will be easier, so the potential of this use-case will be even greater.

generate swc library that can used by AS3 / flash ,
looks like it’s targeting HTML5 now ,don’t know if it can be used by JS

I think this is quite a lot of complaint don’t you agree? :slight_smile:

We did 7 releases last year. We work in parallel to create Haxe 4; It will have more awesome features. We improved IDE support a lot. (vshaxe · GitHub GitHub - HaxeFoundation/intellij-haxe: Haxe plugin for IntelliJ Platform based IDEs (IDEA, Android-Studio) Commits · fdorg/flashdevelop · GitHub)
We organized Haxe summit in Amsterdam, next year we will have even two summits :rocket: We have a brand new forum and chat on gittr for improved communication. We have very stable frameworks like OpenFL, Kha, NME, Heaps which all made lot of progression last year and there are so much more awesome free libraries available at All Haxelibs. I also get excited seeing this being made with Haxe http://armory3d.org/ (even though I didnt try it)

When I say “we”, I mean we as the community, can’t repeat this enough. Most of us work on their spare time on Haxe. We post on regular basis on twitter/facebook, the blog is used for very offical posts. We know you never have enough documentation, but you expect features from a preview build already to be documented, good luck with that :slight_smile: Anyway, if you want to write your own ML plugin, here is your sample plugin: haxe/std/eval/vm/Context.hx at development · HaxeFoundation/haxe · GitHub

When you want to know about the CEO search / direction where Haxe is going, check Nicolas’ video on YouTube https://www.youtube.com/watch?v=ssjZnSYDRbU

Most of the future features (evolution) not only requires lot of thinking, but sometimes lot of manpower / will to make it actual. We have a impressive amount of compiler backends to maintain, it takes effort to get idea converted to something future proof. There are also requests that may be needed but are also annoying/boring tasks if you get what I mean. We know there is still a lot of to do’s, but we are not done yet :smiley: Communication can be approved, everything indeed is a bit scattered, that’s why we now look for this fulltime “evangelist” and more developers to do the heavy lifting. Things only improve.

:love_you_gesture:

I wonder if it will be easier :slight_smile: It requires the same amount of work, its only in a more familiar language. Also about expectations; Haxe in Haxe is an experiment.

This is also up to you, the community. To everyone who read this post; I challenge you. Write one article a month on your favorite channels (Medium, blogs, reddit, …etc) spread it over the internet. Anyone with keyboard can share his/her Haxe experience. Make/share libraries, contribute to Haxe and help writing documentation :stuck_out_tongue_winking_eye: (pick one here Issues · HaxeFoundation/HaxeManual · GitHub and Issues · HaxeFoundation/code-cookbook · GitHub). Make great tools, help fixing issues.

5 Likes

I’m all for acknowledging the shortcomings we’re having in terms of organization, but you have to realize that HF runs on a very small budget that didn’t allow up to recently to have full time people working on these things, and we had better spent the money we have on the technology itself.

I can understand from the outside things seems to go slower than on some “concurrent” technologies such as Typescript or Swift but you to have realize again: we don’t have a full time team working on it. We are not backed by any tech giant pouring money into the project. And every complain about our lack of something - even if perfectly valid - hurts us because there is no much we can do without more involvement from dedicated people.

So yes it’s a chicken-and-egg problem. We have managed to reach a level when we can at last think about hiring two full time people, one for development and one for communication, see The Haxe Foundation is Recruiting! - Haxe - The Cross-platform Toolkit

And if you think how much we did in the past years with so much limited investment, praise for the work done would be more suitable than complains imho :wink:

9 Likes

@bendmorris regarding mindshare etc.

You can image we have tried many things in the past. But because Haxe is not one of these technologies that solves a problem everyone have, but is instead something to be understood before being able to put to a good use (which is reusable code across various platforms) it is very hard to market Haxe with a single “success story usage”. Not impossible, but way more difficult.

Regarding the google summer of code, we have already applied as an organization several times in the past and we have always been refused by google, so we have decided not to be anymore efforts into there because of the waste of time involved every time.

5 Likes

Before I say anything else: Thank you all for bringing this up and for participating in this discussion. Thank you for caring enough to speak up. Just, thank you.

A big part of staying involved in a community is the energy you put in and the energy you get back. Feeling heard and acknowledged, having an ongoing exchange and working together towards a common goal are very important factors in keeping that energy up. You have days where you care so much that you could move mountains for this. Other days you really need some positive vibes from somewhere that keep you going. Both of these states are normal, as are the many states in between.

From a community perspective, an unresponsive core-team, few updates and a lack of communication is demoralizing. From the core team’s perspective, ongoing complaints are not helping, they are pulling energy out of us. We are both right. We are also both wrong.

What both of us have to figure out is how to get better at helping and how to get better at asking. In short, we both need to get better at communicating what we need and asking for help to get those needs met.

And doing that is really hard. You can give me a list of what should be better around here:

  • more communication
  • better PR
  • more blog posts
  • more attention
  • more everything good
  • less everything bad

I agree with you on all of those. However, none of these points help me actually do better. And that is what we really need from each other. We need to help each other do better.

The core team needs to get better at asking the community for help. The community, in turn, needs to get better at helping the core team do a better job of meeting the various community needs and chip in on those jobs.

There are a lot of positive things going on which do not get enough attention while the negative things are talked about. That is a very common bias we all have. The bad news is: it is always going to be there. The good news is: we can consciously work against it.

This is something we all need to work on together. It is something to keep in mind and something to think about before you engage in conversation. In that spirit, I would like to ask you all to ask yourself these three questions before you post requests or complaints (I am not asking you to not complain, btw…just include this with the complaint):

  1. What is the outcome you are hoping for?

  2. What can you do to help with this?

  3. Who can help you? What should they do?

I’ll start with something that would help me with Haxe right now:

  1. I want the US Haxe Summit to be successful and inspiring as it could be. Specifically, I Want to make sure there is enough buzz around the event and that a lot of people decide to give a talk, a workshop, or attend because I truly believe that the community will benefit from the energy exchange.

  2. I am doing my best reaching out to people and motivate speakers and sponsors. I’m also keeping an eye on regular announcements on twitter and facebook for this.

  3. I need more reach. So, if you know someone who would be interested in the event, tell them about it. If you know someone who would be a good speaker, introduce me to them. Help me cheer, retweet, repost, share. If you know any communities in the US, specifically around Seattle, who could be interested in the Summit, help me reach out to them. If you have any awesome ideas, tell me. If you know potential sponsors, introduce us as well.

Easiest actionable: Share the news and updates on the Summit. Retweet, repost, all of it.

Thank you so much.

Fiene

6 Likes

@mark.knol @ncannasse
It was not meant as an offensive thing, just an outburst. I’m liable for not contributing as much as I could, but I don’t use Haxe full-time yet. I did try introducing it the company I work for and it was really hard to do, I eventually failed.

I just wanted to raise awareness about the issues we have and not under-appreciate the work the HF and the core team members have done, which has been amazing. The main point is that it’s hard to know what’s going on.

1 Like