A general thought on a clear vision

Community Forums/Monkey2 Talk/A general thought on a clear vision

Raph(Posted 2015) [#1]
I have somewhat mixed feelings about the new developments on Monkey2, and particularly the discussion threads I see active, full as they are of debates on lambdas and inlining. I thought I'd air them just so they can maybe be a helpful discussion.

What I am not seeing is a clear expression of what this language is *for*.

Lambdas and the rest are all wonderful, and there are both intellectually stimulating reasons to pursue implementing these features, and some direct applicable problems they can solve.

But I worry a bit that there's more interest in implementing nifty new language features and less on "what problems can this language solve for people."

Because of this, I am much happier to see "pixmaps are possible!" or "delegates!" than I am to see some of the other features and ideas. Pixmaps enable a set of features that many of us have missed *for deeply practical reasons* from other Blitz languages. Delegates unlocks better GUI systems.

But stuff like the loss of HTML5 (massive potential lost distribution channel that is unquestionably the wave of the future for web gaming, even if not yet mature) makes me wonder what the *goals* are. The decision seems to have been taken based on the fact that HTML5 was blocking access to nifty features on the other platforms, which seems to me not to necessarily be a valid objection (put all the nifty features in an optional module? I don't know.).

Similarly, I think that if we went back through questions like "what are the main reasons why you don't use MonkeyX?" we'd arrive at a somewhat different list of priorities.

Is there a singular vision statement for "why use Monkey2?" A target product that it intends to nail? A specific razor used for features that keeps cool but not directly applicable features out? Is "crossplatform 2d games" its target, is it "general purpose crossplatform language" or what?

In short, what is it that Monkey2 is aiming at knocking out of the park?


skid(Posted 2015) [#2]
1. faster more modern iterators - ones that don't create objects

2. multithreading - monkey desktop projects can only use 12.5%-25% of modern CPU power

3. elegance - the name monkey has been retained because it represents nicest human friendly language available in my book, extra language bits being discussed are not that significant compared to current style and uniformity baseline


marksibly(Posted 2015) [#3]
The basic idea is for monkey2 to combine an improved version of monkey1's language, with the low level grunt and flexibility of blitzmax.

Ditching html5 means I can 'go nuts' and add a ton of stuff that just wasn't possible in monkey1 - threads, sockets, OS access, decent 'extern' system, decent build system etc.

With html5 in the mix, huge questions marks are raised over all these features, to the point where the monkey2 would probably end up as 'just another game creator'. And there are ton of (cool, free) game creators for html5 around these days.

I'm not particularly aiming to 'knock anything out of the park', I just want to make it easier for people to write cool games and apps, primarily for desktop but also for ios and android.

Kind of boring, but I believe this is where my strengths really lie, and I think the continued sales of blitzmax prove there's still a demand for tools like this.


arawkins(Posted 2015) [#4]
*edit sorry I think this probably came across wrong...going to rethink it.


skid(Posted 2015) [#5]



arawkins(Posted 2015) [#6]
-


marksibly(Posted 2015) [#7]
@arawkins, I thought a lot of your post was quite relevant.

In particular, Monkey2 *will* need community support to succeed, and that's something I need to work on as I'm so used to working on my own.

But at this particular stage of development, all this scary 'technical/language talk' is absolutely necessary and I am finding all the weird and wonderful ideas people are throwing around most useful. People who think the language is becoming 'too complicated' may want to avoid this forum for a while, but please wait until V0.1 is out before deciding I've completely lost it!


PixelPaladin(Posted 2015) [#8]
It is true that everyone seems to discuss about language features and I think that this is the correct way because the monkey2 libraries cannot be written before the language is there. But maybe the native implementation of new features can be done earlier …

Here some 2d features that I have really missed in mojo:
- texturing for polygons (using texture coordinate arrays)
- more complex clipping using shapes (ovals, polygons, …) or image masks
- vector graphics (bezier paths and shapes, ...)

It would be also nice to have a gui-library (one that feels native on linux, too).

For the marketing it will be most important that people will know about monkey. There should be tutorials on pages like http://learnxinyminutes.com/.
An other thing that comes to mind is that the installation on linux should be easier. Monkey is open source and runs on linux natively – so if an ubuntu user just needs to type »sudo apt-get install monkey2« there would be lots of new users within a few weeks. Having monkey in the ubuntu software center and other market places on different operating systems would be even better.

There should be a better code editor, too (at the moment I am using a customized gedit for monkey development). Like others already suggested the monkey2 ide could be based on a free editor like atom (which looks pretty interesting).

It is a fact that not all of this can be done by one person in a short amount of time – so there could be community competitions, too (even for the ide).

Some other idea that I had a while back: could it be possible to get a monkey ide and compiler running on android and maybe ios? I don't know if there already are development tools for development ON mobile devices – but if not, this could be something revolutionary … we could write monkey modules while sitting in the train ^^

Edit: a tool for downloading and installing library-packages (like pip for python) would be awesome!


nullterm(Posted 2015) [#9]
Don't fear new features, you don't have to use them.

My two cents for those worried about features like lambdas or inlining.

As for HTML5 (a feature I still love), MX1 isn't disappearing. MX2 is something different that can go in another direction, and go further.

The new language features Mark is thinking about would bring MX2 up alongside more popular languages, and you may pull people away from MonoGame, Unity, C++, Java, etc who want/need modern programming language features. Or (like myself) programmers who already use Monkey, have used those same/similar features in other languages, and would love to have them in MX2 because we know how we can benefit.


impixi(Posted 2015) [#10]
For BASIC->HTML development I'd take a look at Spiderbasic (by the creators of Purebasic) or just use Monkey 1. There's also the emscripten route.

Re Monkey 2: I also have reservations about additional language "features", for various reasons. Here's a 2010 talk by Rob Pike (one of the Google "Go" creators) about modern programming languages' complexity:

https://www.youtube.com/watch?v=5kj5ApnhPAE

IMO, some very interesting comments, and I hope Monkey is not heading in the same direction as Java and C++ regarding syntactic and structural complexity. But given Mark's stated goal, I trust he'll be sensible about his design.


JoshKlint(Posted 2015) [#11]
I'm not particularly aiming to 'knock anything out of the park', I just want to make it easier for people to write cool games and apps, primarily for desktop but also for ios and android.

Kind of boring, but I believe this is where my strengths really lie, and I think the continued sales of blitzmax prove there's still a demand for tools like this.

Sounds good!


tiresius(Posted 2015) [#12]
It also sounds like new language will make including 3rd party C++ libraries easier than in Monkey-X1. Since Mark has already mentioned he will not be writing another 3D engine/library himself, this is our best bet to get 3D engine into Monkey Land.


skid(Posted 2015) [#13]
he said what???


Samah(Posted 2015) [#14]
Monkey 2 != Mojo 2.
To be honest I think we almost need two separate forums for these.
If Javascript can still be a valid target for all the language features, anyone could write an HTML5 target. In fact, if someone wants to fork Mojo 2 for HTML5, they're quite welcome to. But if the primary goal of Mojo 2 is to have modern features, HTML5 (for now) is just bringing it down.
If people are really crying for it, HTML5 support can be added in the future. For now it's out of scope of language design.
Stuff like pixmaps and shaders are also out of scope of the Monkey 2 core language. All these cool features for Mojo 2 could easily be backported to Monkey X if HTML5 is ignored, so I see no reason to tightly couple Monkey 2 and Mojo 2.


taumel(Posted 2015) [#15]
Everything which makes the language more elegant, easier, efficient and enjoyable, whilst staying consistent, is welcome. Features which don't serve such purposes shouldn't make it into Monkey 2. Less is more.

Whilst a well designed, fast and capable language is the basis, Mojo (and maybe other engines, Monkey 2's expandability) will have a huge impact on its success because at the end of the day most people will want to get things done. The less time you need to spend on bugs, language quirks, shortcomings of engines, the better.

I'm interested in Monkey 2 because i enjoy a nice language combined with a modern easy to use 2D, Sound and 3D functionality, targeting desktop. Regarding the editor, i rather prefer having perfect Sublime integration than some second class editor (proper docs and a reasonable debugger would be nice too).

Monkey 2 needs a good Mojo experience, otherwise quite some people will use other tools instead. You can code nice stuff in Ruby, Swift, ... access capable engines via Unity, UE4, ... BlitzMax once was about bringing it all together in a basic but pleasing experience. Monkey 2 should try to do the same. For some things i can see third party support working out, for others i don't. BlitzMax was around since a long time but there still doesn't exist pleasing 3D support ...


Shinkiro1(Posted 2015) [#16]
> impixi: Here's a 2010 talk by Rob Pike (one of the Google "Go" creators) about modern programming languages' complexity:

Nice video, I feel that his points are very true.

He mentioned fast compile times, which are especially important in game dev for iteration time.


therevills(Posted 2015) [#17]
With a HTML5 target, what about just targeting WebGL and using emscripten?


Sammy(Posted 2015) [#18]
I can't support a game coding language, no matter how sophisticated, that has no official support for 3D, sorry. 3rd party libs, may support this feature later, I may even have a go myself, who knows but for now I'm out.


JaviCervera(Posted 2015) [#19]
For BASIC->HTML development I'd take a look at Spiderbasic (by the creators of Purebasic) or just use Monkey 1.
I laughed out loud when I did read this on their website:
"SpiderBasic is not object oriented because we do believe that object oriented programs are very hard to maintain."

Apart from that, the language looks interesting.


ziggy(Posted 2015) [#20]
I laughed out loud when I did read this on their website:
"SpiderBasic is not object oriented because we do believe that object oriented programs are very hard to maintain."

Apart from that, the language looks interesting.

I've looked at its syntax and APIs design and found it honestly horrendous


JaviCervera(Posted 2015) [#21]
I've looked at its syntax and APIs design and found it honestly horrendous
Yeah, same as PureBasic. But I could live with that given that it allows to create HTML5 apps and comes with a nice set of GUI commands. But I can't understand why it doesn't come with support for the native WebGL API.


dmaz(Posted 2015) [#22]
He mentioned fast compile times, which are especially important in game dev for iteration time.
I trust Mark with that more than anyone else actually. Blitz since the first iteration on the Amiga has had some of the fastest compile times. Mark was a pioneer especially there.


Nobuyuki(Posted 2015) [#23]
+1 to separate this feature talk of mojo2 related stuff into its own forum. I very much want to see mx2 become a general purpose language, and while the game-related feature requests are nice, they're a bit of a distraction right now. We seem to have a few levels of users here, and some of us who want to participate but aren't versed in the lingo of programming languages may be trying to find something to say but end up not being able to contribute to the current discussion because of that. A subforum on feature requests for the standard libraries (mojo2/brl) may help.

The main argument against it, I suppose, is worrying that no one will use it because they feel like they're not being heard there... To me anyway, discussion is better than no discussion, but I'd hate to see good points lost in a cacaphony of low quality posts in every thread repeating the same old requests, grievances, or whatever, without input from the man himself to give the final word.

Edit: maybe we could tag our thread titles? [LANG] [BRL] [MOJO] etc...


evren(Posted 2015) [#24]
Was very happy to see Monkey 2 happening becuase Monkey 1 Mojo1 didn´t do what I was hoping for at all.
I´ve followed all along since Amiga Blitz 1, and what I liked most about it was it´s absolute smoothness.

And I don´t mean 60 fps with minor hickups every so often due to garbage collection or whatever.
Absolutely no hickups again please? It has been a while...

Actually Blitz3D does that in Windows8/10 using DirectX7, writepixelfast, and a bunch of fast dword/integer array handling.
Of course that´s called roleplaying today and is what a pixelshader should be doing. But accessing media graphics and sounds and fast 2d arrays are important for me.
All basic stuff you know, It really gets my juices flowing to have a great base I can rely on.


P.S. For the web I´ve found two amazing libs that beats all others in terms of flexibility and smoothness. I hope that Mojo2 will compare well to these :)
Pixie - http://www.pixijs.com/
WAB - http://www.wab.com/


MikeHart(Posted 2015) [#25]
Stuff like pixmaps and shaders are also out of scope of the Monkey 2 core language. All these cool features for Mojo 2 could easily be backported to Monkey X if HTML5 is ignored, so I see no reason to tightly couple Monkey 2 and Mojo 2.


Ehm, Pixmaps and shaders are already done by others in HTML5! :-)))


Samah(Posted 2015) [#26]
@MikeHart: Ehm, Pixmaps and shaders are already done by others in HTML5! :-)))

By "all" I was referring to any future features that might be added that HTML5 hinders. Not specifically those two. Poor wording on my part.


Raph(Posted 2015) [#27]
To be clear, I'm not "scared" of the complexity and the like. I just want Monkey2 to be successful, and in my experience, knowing what you want is really important. :) Basically, I'm just arguing for user-centered thinking, not to stop talking about lambdas.

"I just want to make it easier for people to write cool games and apps, primarily for desktop but also for ios and android," is actually a pretty solid statement, as far as I am concerned. It says to me that for any given language feature, the question should be "does it make it easier to write cool games and apps?" That should be the question asked of everything. It means you know who you want to use the language, and you should be working to meet their needs. So, Skid, I wouldn't phrase it as "multithreading and iterators that don't create objects" but as "faster and more efficient." Those two design features are means to the end.

I think it's also important to be very conscious of the fact that "make it easier to write cool games" absolutely puts you square in the contest with Unity, GameMaker, and a few others. It might be worth thinking about a more precise statement than "easier to make cool games" that differentiates.

"Make it easier" is also very different from the value proposition offered by Monkey, which was basically "write once across all platforms, you won't need to port ever!" This was a literally unique offering that nobody else had. So there's a reason why existing Monkey users who were here for that reason may not like aspects of the new direction.

I agree that mojo2 vs Monkey2 is confusing. I submit that is because basically no one uses one without the other. For all intents and purposes, they appear as the same tool to the end user. I would bet that the reason why pixmaps or render to texture keep coming up is *precisely* because "they make it easier to write cool games." :)


Samah(Posted 2015) [#28]
The problem is that Monkey 2 can theoretically exist without Mojo 2. Whether it would be useful or succeed is another thing entirely.
Although the two parts are (debatably) equally important, getting the language in a usable state is something that must happen before implementing pixmaps and shaders.
It's very important and valuable to discuss graphics features, but ultimately Monkey X (and Monkey 2) are cross-platform languages, not frameworks.

Let's at the very least separate the two parts (either figuratively or literally) so that graphics features don't obscure discussion of the core language, and inline/lambdas/etc. don't obscure the ultimate goal of "write cool cross-platform games".
Obviously the two are intertwined, but there are multiple target audiences, each of which may have experience or insight inclined toward one or the other.