Plans for BOO?

Hi,

I know that the boo language is no longer documented and it is not officially supported, but as I found out Boo Scripts are running in the current version of unity. So are there any plans to keep Boo alive and am I save to write a game using Boo or are there plans to remove it in the next time (lets say in the next 2 years?)

Boo will remain for at least as long as UnityScript remains because UnityScript is actually written in Boo. Though with that said there is no real future for Boo and I strongly believe UnityScript will eventually be deprecated as well. You would be far better off simply learning C#.

1 Like

It’s dead, but not buried. You can AFAIK use it for Unity 5 and below.

It’s depreciated ish. Just not cut out. I guess it’ll get cut out when Unity get around to changing the version of net/mono they use. Just a guess. But there’s no future for Boo so you’ll eventually have to either stick with Unity 5 or port to C# when it finally does get removed.

Hopefully someone from Unity can chime in with an authoritative answer.

1 Like

Well technically, yes, the compiler for UnityScript is written in Boo. But that doesn’t force unity to continue keeping support for boo as a scripting language. Of course, there’s little effort to maintain it as long as the remain on the same version of Mono that they currently are, so one could expect it to technically remain while not being officially supported. But technically speaking, a new compiler could be written not in boo, though highly unlikely… why rewrite something that already exists.

But issues arise here:

  1. it’s not officially supported. This means getting assistance with the language in the context of Unity will be difficult.

  2. bugs that arise when using boo (though probably rare) won’t be as readily addressed

  3. community and official documentation/tutorials most likely won’t be in boo

  4. il2cpp isn’t guaranteed to be supported!

This last one is probably the biggest issue moving forward IMO. IL2Cpp is Unity’s primary focus currently, the mono runtime is wildly out of date and they’re not going to be upgrading it with Xamarin because of financial reasons. As IL2Cpp matures and newer mono/.Net features become accessible to us, there may be updates to unityscript as well to meet those needs (if they deem it necessary). Who knows how they’ll implement such a thing, if they do, and could be a situation where they do revamp the compiler heavily enough that it could possibly degrade support for boo even further.

Basically, Unity by officially dropping support of boo, no longer makes any guarantee that changes in the future will consider boo. A choice that MIGHT effect boo support won’t be avoided just because it hurts boo support. Who knows IF that choice will ever arise, but the possibility is there.

If I was a project manager on a project with boo in it I’d probably take a few actions:

  1. stop development in boo, why continue adding new source code that has potential to become obsolete.

  2. continue using existing boo scripts, why add labor to my development if the scripts currently work. Only replace if forced to by future changes.

IF you do decide to write new boo. You can be certain that in 2 years the version of Unity 5 you wrote for will still support. There just isn’t guarantee the Unity X that is most recent come that time will support it.

But we can’t read the future.

2 Likes

tl;dr

no, that’s what “no longer officially supported” means.

That statement was practically a direct copy and paste of the one made by @superpig (Richard Fine).

http://blogs.unity3d.com/2014/09/03/documentation-unity-scripting-languages-and-you/

I don’t understand why you think it wouldn’t be supported. The IL2CPP stage is simply taking the intermediate language code produced by the compiler and converting it to C++. About the only reason this would break anything, at least as far as I’m aware, is if the IL were to change considerably enough that it was no longer valid.

Where in that link does it say that it forces unity to continue support for boo. I only see mention that boo scripts remain working in Unity5.

And it says nothing about unityscript being written in boo.

Honestly, that doesn’t even make sense… a language isn’t written in another language. A language interpreter, or a compiler, or some other parsing tool may or may not be written in another language. But the language itself isn’t. And in this case, yes, the compiler for unityscript is written in ‘boo’. You can find it at: %ProgarmFiles%\Unity\MonoDevelop\Addins\MonoDevelop.Boo.UnityScript.Addins

I didn’t say I think it wouldn’t, I said we don’t know the possibilities.

I explained exactly what I meant.

I said:

My point being that “we don’t know”, there’s no way to know. Unity themselves probably don’t know because they haven’t had to deal with it yet.

But when a company states they no longer officially support something, that means that in the future WHEN such a consideration has to be made, the unsupported things aren’t considered important in the decision process.

Sure they MIGHT consider it. It all depends on the necessity of it.

But if some growth in the product comes to a road-pass where a development choice has to be made that may hurt support for ‘boo’, and maintaining support for ‘boo’ takes more work then is budgeted for, because it’s considered unsupported… it’s very likely they won’t do the extra work.

I merely mention il2cpp, because il2cpp is all about compiling code.

Unity is heading towards FULL il2cpp compilation in the future. il2cpp isn’t some new fangle thing to get the webplayer up and running on a new standard. Nor is it just got to do with AOT compiling to iOS.

It’s all about getting out from underneath the Xamarin licensing for the mono version. Why do you think we’re still on such a grossly outdated version of mono? It’s all to do with licensing fees with Xamarin, Unity doesn’t want to pay the license fee to upgrade to the latest version.

So instead they devised their own tool that converts CIL to C++ code. This way they can start converting newer versions of CIL, which results in support for the more recent mono/.net frameworks.

That’s a VERY complicated tool!

And if they come to a road-pass in developing it that may or may not hurt ‘boo’ support. Means that ‘boo’ may or may not get the shit end of the stick.

Furthermore you say:

Yeah, and your argument that boo will remain supported is because as long as untyscript was written in boo, they’d have to keep support for boo. But why? That’s just the compiler for unityscript. Unityscript can still be compiled using the compiler code written in boo, while removing the boo compiler from the dev pipeline.

Unityscript compilation is not contingent on the boo compiler existing. It’s contingent on the unityscript compiler being there, which just happens to be written in boo.

1 Like

I was basically referring to the following comment. I may have misinterpreted it though.

OK, so it was a comment left on the article from a Unity employee. I’m not sure exactly who Richard Fine is, or his rule at Unity, or how much say he has in the engineering of the engine/il2cpp/etc.

Thing is, it’s not an official statement, and it’s ambiguous with it’s whole work aspect.

I would argue it leaves wiggle room for the unforeseeable possible future.

As I was saying in my original post… these sorts of unofficial possibilities aren’t anything I’d back my development process on. In the context of the OP’s question of if it will continue to be alive in 2+ years… there’s no way to say. Not officially supported means just that, there’s no plans.

I don’t know what will happen, I just know that weird things DO happen.

1 Like

FWIW, I was not actually a Unity employee when I said that. :slight_smile: (Didn’t start until November 2014).

That said, I stand by what I said then. Boo is (as of quite a few months ago) officially not supported - i.e. we will not help you use it, do not provide docs that use it, etc - but at the same time, given the way the scripting runtimes work, it is very difficult to envision a change that would break Boo without breaking UnityScript. So I expect it will continue to work just fine for as long as UnityScript is supported, and we have no concrete plans to retire UnityScript right now. (That’s not to say that it will never be retired, but removing it isn’t on anyone’s roadmap right now, AFAIK).

2 Likes

Just remember UnityScript is also on the same journey that Boo is on. It’s just not as far along.

It’s already tough to get community help on UnityScript. And the docs team isn’t producing any documentation for new features in the language. And the learn team isn’t releasing content for it.

So while no one is officially trying to get rid of UnityScript, no one is working to make sure it stays around either.

As to the OP and Boo it doesn’t really matter what language you use, as long as you can figure out a way to get it into IL, then unity will accept it.

2 Likes

Wow, so much discussion. It’s very interesting that the Unity Script is written in Boo, I didn’t know that!
So I think I will start with C# for most of my projects, but for quick Prototyping (or Game Jams) I will consider Boo (or for the fun of it maybe even Python: GitHub - cesardeazevedo/Unity3D-Python-Editor: Python editor based on IronPython for Unity3D ).

Smart move :slight_smile: