What are we going to do about mobile?

Joakim via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 7 02:34:16 PDT 2017


On Thursday, 6 April 2017 at 05:32:41 UTC, rikki cattermole wrote:
> IMO there is two things that need to be done to get D for 
> mobile:
>
> 1: ldc needs to natively target and distribute binaries for 
> Android (MIPS, ARM, at least).

I'm not sure what you mean by "natively target."  Do you mean 
that the shipping ldc compiler should come with Android/ARM 
target support built in?  That can be done, but it's useless 
without a stdlib cross-compiled for the target and ldc doesn't 
provide the cross-compiler scripts/toolchain with its releases 
that would allow you to easily start cross-compiling, even though 
the compiler itself is capable.  Instead, I provide a 
cross-compiler for linux/x64 that comes with a cross-compiled 
stdlib for Android/ARM, and link to instructions on how to use it 
with the Android NDK toolchain.

If you mean a native ldc compiler, that's already been done and 
provided in the link above, ie a native ldc that you can run _on_ 
your Android device.  That's what I use, since my development 
hardware is an Android/ARM tablet (I have not used an x86 or x64 
device in more than a year, instead renting out an x64 vps 
recently to build the cross-compiler).

As for Android/MIPS, nobody uses it, just like Android/x86 now 
that Intel has pulled out of the mobile market.  No point.

> 2: extern(JNI) seriously, its a pain to work with Java over JNI 
> otherwise. It would be worse then not having extern(Obj-C).

I don't think it's that bad, but sure, we could always make it 
easier.

On Thursday, 6 April 2017 at 09:39:05 UTC, kinke wrote:
>> More than anything else, we need the community to try building 
>> mobile libraries and apps, because compiler support is largely 
>> done.
>
> What LDC would primarily need is a CI platform supporting ARM 
> (and ideally AArch64) in order to make it a true first-class 
> target. We don't know of a free CI platform, so ARM isn't 
> tested automatically, and it's currently mostly up to poor you 
> to check for regressions. ;(

Circle seems to have some Android support, though I don't know if 
it's free, as Petar says:

https://circleci.com/docs/1.0/android/

I haven't been too inclined to look at this, as I've never messed 
with these CI services and it's not a big deal to run the tests 
myself occasionally.  We should add CI for Android at some point 
though, just one of the handful of tasks that it'd be nice if the 
community would chip in with.

On Thursday, 6 April 2017 at 11:59:42 UTC, aberba wrote:
> On Thursday, 6 April 2017 at 05:24:07 UTC, Joakim wrote:
>
>> That means this tidal wave of mobile swamping PCs is only 
>> going to get worse:
> That remains to be seen.

Notice the decline in PC sales since mobile took off on its 
hockey stick curve?  Now that they're even offering desktop-style 
multiwindow on mobile, what makes you think it doesn't get worse? 
  I've predicted a collapse.  Even Microsoft is selling the S8, a 
flagship Android device (!), because they want to get their 
office suite on Android:

https://www.thurrott.com/mobile/android/108140/microsoft-offering-customized-samsung-galaxy-s8-preorder

>> Even Microsoft has announced that they're taking another shot 
>> at ARM, ie Windows is coming to ARM again, this time with x86 
>> emulation for old Win32 apps:
>>
>> http://www.theverge.com/2016/12/7/13866936/microsoft-windows-10-arm-desktop-apps-support-qualcomm
> ARM is *rising*, that's true. But there is no factual evidence 
> in their decision (that you seem to know) backing your point.

Did you bother to read the article?  The head of Windows, Terry 
Myerson, specifically says, "Customers are asking for devices 
with better battery life, with cellular connectivity. That's why 
we've invested in this, and we're pretty excited to be announcing 
it this week.”  I'm not sure what other "factual evidence" you're 
looking for.

> Microsoft, Apple, Google, ... all invest in projects they end 
> up abandoning.

Are you suggesting that they will abandon Android or the iPhone 
or just their desktop-on-mobile efforts?  It is true that 
multiwindow UIs on mobile is a nascent effort, and like anything 
new may not go anywhere, but I wouldn't bet against it.  In fact, 
this entire thread argues that D should bet on it.

>> More than anything else, we need the community to try building 
>> mobile libraries and apps, because compiler support is largely 
>> done.  We need to integrate mobile into our plans, rather than 
>> it just being a sideline.
> IoT, Cloud

IoT has not gone anywhere, while D already supports cloud.

>> The latter may seem far-fetched given D has not done that well 
>> in desktop GUI apps, but mobile is still a new market and D 
>> could do well.  D is uniquely well-suited to mobile, because 
>> it's nicer than Java or Obj-C while more efficient than the 
>> former, and it could make it easier to go cross-platform.
>>
>> Vadim has done some nice work building DLangUI on Android, 
>> including a Tetris app that I spent half an hour playing on my 
>> phone:
> Any unpolished GUI toolkit (even when polished) will not sell 
> on android-iOS except for Games with custom drawn elements. C++ 
> is in that same position. Google is busy pushing Java, Apple is 
> busy pushing Swift. DlangUI could work but will not land you a 
> big share in usage.

I'm not looking for big share, just a first step.  Small share on 
mobile is a lot bigger than big share on IoT/cloud.

>> I realize D is never going to have a polished devkit for 
>> mobile unless a company steps up and charges for that work.  
>> But we can do a lot better than the complacency from the 
>> community we have now.
>
> With the *rising* market for IoT and Cloud, the effort invested 
> in ARM should be geared towards these areas with much 
> potential. Canonical just gave up their Ubuntu Touch (Mobile 
> OS) and Unity 8 DE to invest their resources in Cloud and IoT. 
> Fighting for mobile apps market (except for WebGL/OpenGL/Vulkan 
> games), which big corporates like Microsoft are also in 
> fighting but losing doesn't seem like a good idea.

Irrelevant, as they were pushing entirely different mobile OS 
platforms, while we're just talking about getting a language on 
the currently dominant mobile platforms.  The latter is much 
easier.

> IoT and Cloud entails ML, AI, NLP, embedded programming, bots, 
> microservices, containerization, robotics... which mir, vibe.d, 
> mqtt, and its projects are implementing some in bits.

The latter fields are mostly orthogonal to the first two 
platforms you list, ie you can run any of those on most any 
platform.

> Thats what you can say has potential cus they are actually 
> *rising*

I am skeptical of IoT taking off anytime soon- witness the recent 
DDoS from IoT devices- while we're already focused on cloud.

I think mobile needs focus because it dwarfs all those other 
platforms in size, so even some small chunk of that moving to D 
could be huge.

On Thursday, 6 April 2017 at 12:52:01 UTC, Adam D. Ruppe wrote:
> On Thursday, 6 April 2017 at 05:24:07 UTC, Joakim wrote:
>> There are only two devs working on mobile, Dan and me, I don't 
>> think anybody on the core team has even tried our work.
>
> I don't even own a mobile device and don't see that changing 
> any time soon (they are really expensive, slow, and just 
> generally hard to use*). I do own a raspberry pi, but never 
> actually use anyway so I have no need to develop for it.
>
> If I actually used one of these things, I'd probably join you 
> in hacking together stuff the way I've done web and desktop 
> libs, but I just don't use the hardware....

You're probably fairly unique in this even in this forum, but 
unfortunately your comment does paint a picture of D devs being 
disconnected from major current tech trends.

On Thursday, 6 April 2017 at 16:06:55 UTC, Radu wrote:
> I think mobile would be nice, but there needs to be a good full 
> stack (game lib, UI lib, maybe both) packaged with the compiler 
> and runtime in order to get people attention.

We could probably put together a mobile devkit with DlangUI and 
our other gamedev libraries.  It's just going to take more than 
just me doing it.

> What I see as something that can be targeted from day one is 
> IoT, industrial controllers, cloud and other embedded/backend 
> platforms (I'm basically agreeing with aberba's post).

Others have tried D on embedded and reported problems with 
stripping the runtiem down to perhaps even more constrained 
hardware:

https://forum.dlang.org/post/ktqntaoewubgtbdgrxxf@forum.dlang.org

There is probably a niche of higher-powered embedded hardware 
that D would do well on right now, maybe including your 
situation, and as I noted in that thread, I don't know that it'd 
take that much effort to strip D down more.

Given the many issues in the embedded market generally and how C 
still dominates, I believe mobile is actually an easier sell, 
though I'd like to see both happen some day.

> I'm currently trying the armv5 platform, as you pointed out. 
> The possibilities are far more appealing for me to use the D 
> stack on Linux/Arm(Mips) as everything I know in the industrial 
> space uses this combination.
>
> Being able to create software with a nicer language using nicer 
> libraries would be the "killer app" for an entire industry.
>
> I think there is great potential and the proverbial 
> low-hanging-fruit here for getting stuff rolling.

I agree with you about D's potential in industrial use, though 
I'd separate out IoT as not having gone anywhere yet.

> Would be great if we could persuade the D foundation to sponsor 
> some Linux ARM/Mips CI infrastructure, I know I would pitch in 
> my 2 cents for the cause.
> This infrastructure could be used by LDC and GDC and be 
> extended in the future.

As I noted above, there may be free services for open-source 
projects that we're overlooking.

On Thursday, 6 April 2017 at 22:28:20 UTC, Dmitry Olshansky wrote:
> On 4/6/17 7:24 AM, Joakim wrote:
>> I have been saying for some time now that mobile is going to 
>> go after
>> the desktop next
>> (http://forum.dlang.org/thread/rionbqmtrwyenmhmmggx@forum.dlang.org),
>> Samsung just announced it, for a flagship device that will 
>> ship tens of
>> millions:
>>
> [snip]
>> The latter may seem far-fetched given D has not done that well 
>> in
>> desktop GUI apps, but mobile is still a new market and D could 
>> do well.
>> D is uniquely well-suited to mobile, because it's nicer than 
>> Java or
>> Obj-C while more efficient than the former, and it could make 
>> it easier
>> to go cross-platform.
>>
>
> Let's not forget Kotlin and Swift, things we'd really be 
> competing against - that is the other NEW stuff.

Kotlin runs on the JVM, so it's not going to be as efficient, 
while Swift has not been ported to Android.

> Also let's not forget the _legion_ of tools that let you do 
> cross-platform mobile app development in languages such as 
> JavaScript, Lua and e.g. C#.

Except for C# to some extent, only because they are now investing 
much more on mobile tooling, I would not call any of those as 
nice to use or as efficient as D.  Mobile is a big market with a 
lot of dev options, but I believe D could make a unique pitch.

>> Vadim has done some nice work building DLangUI on Android, 
>> including a
>> Tetris app that I spent half an hour playing on my phone:
>>
>> http://forum.dlang.org/thread/cdekkumjynhqoxvmgjze@forum.dlang.org
>>
>> I realize D is never going to have a polished devkit for 
>> mobile unless a
>> company steps up and charges for that work.  But we can do a 
>> lot better
>> than the complacency from the community we have now.
>
> Much as I like D I would admit that even Desktop/Server 
> developer experience is far from stellar. Now switching to 
> mobile the expectations of mobile developers are much higher - 
> they want a ready made development environment, full support of 
> platform APIs, thousands of examples, ready made GUI 
> components, tons of documentation, perfect support for all 
> manner of proprietary tools such as code signing, emulators, 
> you name it. Anything short of completely polished devkit is 
> not going to succeed.

In that case, even Apple and google's efforts have not succeeded, 
as I've heard lots of bitching on all those fronts for the 
official mobile devkits. ;) Take the Android NDK, which has long 
been neglected for everything you list, though that may be 
partially because they want to discourage its use, in favor of 
Java.

D is never going to attract the crowd that wants everything 
"ready made," but we can make a much better effort at attracting 
the mobile niches that want D's advantages.

> Most importantly though we would need to change the perception: 
> trying to be a D mobile app developer is doubly niche - first 
> because of D, second being an alien in mobile development.

Yes, D is niche, but niche efforts have to focus on small markets 
where they're uniquely suited or giant markets where they can 
attract some small share by being different, small share that is 
still worthwhile because it's a much larger market.  I'm 
suggesting mobile is the latter opportunity for D.

As for "being an alien," eh, we can make it fit.  As you yourself 
said, there are many other languages jockeying for position on 
mobile, it's not all just Java and Obj-C.


More information about the Digitalmars-d mailing list