I should add: My previous post shouldn't necessarily be interpreted to
imply that I would currently be willing to work on such a project. It's
more of an off-the-cuff summary of the hurdles that would be hypothetically
involved.

--
Josh Tynjala
Bowler Hat LLC <https://bowlerhat.dev>


On Mon, Dec 9, 2024 at 10:50 AM Josh Tynjala <joshtynj...@bowlerhat.dev>
wrote:

> Back in 2021, someone asked me about supporting TypeScript in Royale. This
> was my response at the time:
>
> My gut feeling is that adding TypeScript support would be a pretty huge
>> job that would probably take at least a year of work (at my current
>> availability per month) to get to a reasonable minimal viable product (we
>> should definitely expect rough edges for a long while after that too).
>>
>> I don't think that we'd want to write a parser for TypeScript. We should
>> use the existing TypeScript compiler and the years of work put into it by
>> Microsoft already. We don't have the resources to keep up. Basically, I
>> want to see a way to compile MXML to TypeScript, and then let the
>> TypeScript compiler compile the final JS. That alone is a lot of of work,
>> but relatively straightforward.
>>
>> Things get tricky when trying to allow TS to use JS previously compiled
>> from AS3/MXML. The first step, I think, would be to have our compiler
>> generate .d.ts files alongside our generated .js files. ActionScript is
>> smaller in scope than TypeScript in many ways, so the .d.ts files should
>> not be very complex at all. That's only part of the job, though.
>>
>> Our generated JS uses goog.provide()/goog.require() modules, which isn't
>> really used in the TypeScript ecosystem, as far as I know. I have heard
>> that Google is using more and more TS internally these days, though, so
>> maybe there's a way to integrate TS and Closure that hasn't crossed my
>> radar. That would make things easier. Regardless of how well TS/Closure
>> work together, I would want to seriously consider having our AS3 compiler
>> output native ECMAScript modules instead of goog.provide()/goog.require()
>> modules. I know for sure that Google Closure compiler can consume
>> ECMAScript modules, so the AS3 workflow should not change much if we were
>> to switch. Additionally, it would allow our generated code to work better
>> with other JS bundlers, like Webpack/Rollup/Parcel/etc.
>>
>> Allowing AS3 to access TS type information somehow would be the most
>> difficult requirement, in my opinion. The best workflow for our users would
>> be to compile TS to SWC files that contain both JS and AS3 bytecode.
>> Basically, similar to what we have today with AS3/MXML for JS SWCs.
>> Generating that bytecode would be the challenge here. I don't have much
>> experience writing raw ABC bytecode. Maybe it could involve creating .as
>> stubs from .d.ts files and compiling them instead. I've been down that road
>> with dts2as, and it was hard to keep up with the more complex syntax of TS,
>> which was also constantly evolving. The simplest MVP might do something
>> like type every method/property in the bytecode as Object or * to start
>> out, which isn't ideal, but still better than nothing. Or maybe TS
>> generated libraries can't be used by AS3 to start out, and only AS3
>> generated libraries can be used by TS. Again, not ideal, but the smallest
>> scope possible seems important here.
>
>
> I still think that it would be a massive job, and I think over a year is
> still a reasonable estimate. Dropping AS3 and going pure TS could
> potentially make things easier from a compilation perspective, but that
> would basically require a full rewrite of everything on the framework side.
> Might as well start a brand new project that is similar to Royale, but can
> be its own different thing at that point.
>
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>
>
>
> On Mon, Dec 9, 2024 at 10:28 AM Hugo Ferreira <hferreira...@gmail.com>
> wrote:
>
>> Yes Josh, I saw that now and it works :)
>> Thanks :)
>> I've been using VS Code for a while now and probably I started before that
>> feature or I didn't notice.
>>
>> But the TypeScript and a new MXML extension would have an important impact
>> (not for me) but will be far easier to talk about Royale to other
>> developers out there.
>>
>> Dev: What language did you use to build this application ?
>> Hugo: Royale. Do you know ?
>> Dev: No. What is it ? How is the sintaxe ?
>> Hugo: MXML for UI and ActionScript for code.
>> Dev: MXML I don't know but ActionScript is not the language of the old
>> Flash e MX não tem haver com a Macromedia ?
>>
>> Do you understand what I mean ?
>>
>> Now, if the answer was TypeScript, there is a big chance that the "Dev
>> person", answer, yes I know or even, yes I work with it. I will try on a
>> test project !
>>
>> Many people ask me the same question and I know the answer upfront (every
>> single time) and it's always a dev that will not try Royale.
>>
>> You may say that is a marketing reason and it's true but it's a marketing
>> world and other frameworks compared to Royale, Royale would shade easily
>> are more popular because of that.
>>
>> This is my honest opinion.
>>
>> Best regards,
>> Hugo.
>>
>>
>> Josh Tynjala <joshtynj...@bowlerhat.dev> escreveu (segunda, 9/12/2024
>> à(s)
>> 16:41):
>>
>> > vscode-as3mxml provides an "ActionScript: Create New Project" command
>> that
>> > detects Royale SDKs and creates a simple Royale Basic project (Flex,
>> AIR,
>> > and Feathers SDKs are also detected with their own templates). VSCode's
>> > Explorer also supports custom views when no workspace folders are open,
>> and
>> > a while back, I added a button there to create a new ActionScript
>> project.
>> >
>> > --
>> > Josh Tynjala
>> > Bowler Hat LLC <https://bowlerhat.dev>
>> >
>> >
>> > On Mon, Dec 9, 2024 at 2:26 AM Hugo Ferreira <hferreira...@gmail.com>
>> > wrote:
>> >
>> > > Hi,
>> > >
>> > > These are probably crazy ideas that are unlikely to be implemented,
>> but I
>> > > would like to share them anyway:
>> > >
>> > > 1. One way to make Apache Royale more attractive to new blood is to
>> > provide
>> > > the compiler with not just 1 but 2 languages, that is, in addition to
>> > > ActionScript 3, support TypeScript.
>> > > New developers will never search for AS3 but instead for TS.
>> > > Also MXML should have another terminology.
>> > >
>> > > 2. Another suggestion is to somehow have aliases for the namespaces,
>> that
>> > > is, wherever the terms flash and adobe are still used.
>> > > I know in the past this could hurt sensibilities, but it has been many
>> > > years since Flash went extinct and its relationship with Adobe was
>> > severed.
>> > > This resolves some stigma that may still exist for new developers to
>> > come.
>> > >
>> > > 3. This suggestion is for VS Code: Make some kind of setup for VS Code
>> > that
>> > > helps create new projects for newcomers (templates out of the box).
>> > >
>> > > Best regards,
>> > > Hugo.
>> > >
>> >
>>
>

Reply via email to