signalpoint / DrupalGap

An application development kit for Drupal websites.
https://www.drupalgap.org
GNU General Public License v2.0
234 stars 186 forks source link

DrupalGap 8 Status #963

Open signalpoint opened 7 years ago

signalpoint commented 7 years ago

Thank you to @Nicolas-Bouteille for raising these questions, here are answers from @signalpoint below:

I was wondering what you meant by DrupalGap 8 not being ready for production yet. Could you elaborate on what exactly is missing and when could it be ready ? Can the missing things be done easily manually or am I going to be stuck or waste a lot of time if I go wit DG8 instead of another solution ? Ionic for example ?

The number one reason that DrupalGap 8 hasn't been released yet is that the documentation is incomplete and still has references to DG7 and jQuery Mobile in spots. I'd want folks to easily be able to get started before making a push to the masses here. I think it's getting extremely close (thank you for your efforts here).

The DrupalGap 8 SDK is well into beta IMO (I just haven't been strict about tagging, and communication). I don't anticipate any drastic changes to the developer's experience, but I personally want to take more advantage of prototypes within the DG8 Forms API to make it more powerful. But the DG8 SDK theme,region,block,widget,router,etc are very stable.

The DrupalGap 8 Drupal module has a set of features (DrupalGap Display Mode) that I would like to take out and stick into a contrib module, e.g. drupalgap_entity. Once that is out of there, and hopefully clean automated update hook(s) for easy Drupal 8 module upgrades, otherwise simply uninstalling the DrupalGap 8 Drupal module and installing the future 8.x-1.0 module will be the way to go. This feature also is smushed into the DG8 SDK Core, and I'd like to take it out of there too, and make a DG8 contrib module to handle this (this feature set is the bread and butter of DrupalGap 7, and I learned a lot along the way start this fresh and make it even better in DG8).

So even though things are tagged in alpha, things feel quite stable and in beta to me without any key features missing, I just need to be (and welcome the help) more strict with release cycles and communication.

I also plan to make this all npm based so it's much easier to get started and add modules.

I sure hope DG8 won't be a waste of time for you, please continue to point out any deficiencies and we can look to fix it up.

How would you compare DrupalGap and Angular ? I have the feeling that maybe if I use DrupalGap, then I won’t really need Angular… but I also have a contradictory feeling that tells me that Angular could bring me complimentary stuff on the side of DrupalGap.

Some back story... I originally built DG8 (a very old version) on top of Angular. After using it a bit, I felt like DG8 was going to follow the fate of DG7 vs. jQueryMobile, and that was "to be stuck dependent on something else" and get trapped in a small niche, which really limited the true scope of what DG8 can and hopes to accomplish, i.e. DG8 can be used alongside any framework(s), or stand alone with plain old HTML/CSS/JS.

In theory one could use DG8 to inject Angular components into a DG8 front end, or on the flip side one could use an Angular front end to inject DG8 Widgets. (If Angular was handling the routing, we'd need to pull out dg.router.inc into a dg8 core module that could be disabled).

I think I want to learn them both because Angular is very popular.

I think learning Angular (and/or any other popular framework) is a wise maneuver, each have huge communities and contributions going into them, so they must be doing something right ;)

But I like the idea of doing decoupling with a JS syntax close to the Drupal syntax like jDrupal & Drupal do it. Heads up for this idea by the way. DrupalGap and jDrupal are so promising that I wonder why we don’t hear about them more often?

Thank you. This whole idea stemmed from an old blog post of mine from 2011, and it has changed my life dramatically. DG7 did (and continues to do) quite well for many organizations in production and I am very thankful to all the people who have tried it, contributed through bug reports, discussions and code contributions. DG8 will provide so much more and has fixed so many of DG7's short comings (by starting over completely with Vanilla JS). DrupalGap and jDrupal have always been a tiny niche in the Drupal ecosystem, and hope to share more with the community.

I’ve seen that you created a 2.0 version of jDrupal and / or DrupalGap based on Angular, and I’ve also seen your project called angular-drupal. But it looks like its development has stoped two years ago. So this leaves me with the feeling that I don’t know what to focus on. Could you tell me more about the possible relation between DrupalGap, jDrupal and Angular?

The code for jDrupal originally was stuffed into DG7 and was the REST layer that was easily convertible into Vanilla JS. When trying to build an app for Ripple watches some odd years ago, they had a JS kit, and I thought about integrating with Drupal, and then thought about ripping the REST layer out of DG7, and that was the birth of jDrupal. DG7 continued onward with jQueryMobile as a strict dependency, and still does to this day.

Then here comes hype for Drupal 8 (this was now 3-4 years ago), and its REST in core, and headless/decoupled chat all over the place, big frameworks like Angular, React, Ember, etc are coming into play. jDrupal has always been there and useful for any of these frameworks, so I wondered where best to take DrupalGap 8 into the future. I'm not sure how I arrived at choosing Angular to be the original dependency (attending DrupalCons, BOFS, Camps, Meetups) it seemed to ring the loudest with the most potential. So with minimal experience, I took the dive with Angular (right around the time I think Angular 2 was on the horizon, and lots of people were freaking out about the tough API changes, so I think all of my code for DG8+Angular was on Angular 1.)

After a while, I felt the what I had put together with DG8 on top of Angular was just spaghetti sloppy, and just kind of said to myself, we need a simple router, an html layer, a forms api and a rest layer, so I'll just go lean and mean, and make a new mini DG8 SDK out of plain old javascript. jDrupal 8 has evolved along side of it, and DG8 will always have jDrupal 8 as a dependency. Now folks can easily toss on a CSS framework into the mix (i.e. bootstrap/foundation) and be on their way to building a headless/decoupled web application and/or mobile applications for Drupal 8 based websites.

The angular-drupal project is now simply a very tiny wrapper around the jDrupal 8 library, so that Angular projects can utilize jDrupal (thanks to @kentr for this one).

Do you think I should learn both DrupalGap and Angular?

I think you should learn both. I didn't make it much farther than the Hello World in Angular, and I was off trying to smash DG7 into it and call it DG8, so I set myself up for failure there (hindsight is great). Angular is probably a more employable skill set, and if you're vested in Drupal as the backend/cloud to your Angular app, I'd ask folks to consider trying out DG8 to see if it's coding experience is more inline with their Drupal needs. My answer is of course very bias, I love Drupal (have for 10+ years), and I sure love DrupalGap.

I guess the reason why I’m contacting you is so that you can give me some reassurance. Because I really like the idea behind DrupalGap and jDrupal and I would love to dive deeper into them, but I’m scared to make a bad decision and choose a framework that is not ready yet and does not stand a chance in front of the Angular & React hype and big frameworks like Ionic…

That's a valid concern indeed, and I don't want to give you any false assurances. My experience has been this, DrupalGap/jDrupal has done well for small business, start up apps, hobbyists, since it's meant to bridge the "gap" between someone's Drupal site, and the applications they want to run off of it. That was all DG7, DG8 under the hood is much better under the hood (leaner/cleaner/financially-sponsored).

DrupalGap/jDrupal will indeed never compete with the big frameworks, and it is there to fill a focused niche of application developers powered by Drupal.

So anything you can tell me to convince me that DrupalGap 8 is pretty much ready, is awesome and has nothing to envy to Angular, please tell me :)

I'd say to use your gut instinct here. I don't know enough about Angular to give a technical opinion, and I suspect some form of Angular is used to power all of Google's wonderful applications, so it is surely a force to be reckoned with.

I will also say that DrupalGap 8 is awesome, and hope it will be of use to many. Thank you, and happy coding.

signalpoint commented 7 years ago

This is a good indication of the status too: https://www.drupal.org/project/usage/drupalgap

As you can see DG7 has peaked, and a DG8 launch should hopefully send the chart the other direction..

signalpoint commented 7 years ago

Oh, one huge thing I forgot to mention:

The DrupalGap 8 SDK works with Drupal 7 Websites too

There aren't any docs on this yet (contact me or submit an issue if anyone is curious), but with the help of a mini DG8 module, we can communicate to a Drupal 7 website, and utilize all the benefits of the DrupalGap 8 SDK. This essentially means, the DG7 version of the SDK will get a huge performance/feature boost for those sites/companies (myself included time and time again), that aren't ready to make the jump to Drupal 8.

Nicolas-Bouteille commented 7 years ago

Thank you so much for this detailed answer. This is exactly what I needed.

I have decided that I would be exploring, learning and experimenting DrupalGap, Angular and Ionic, all three. And when I understand better what they can do and what their advantages are, I’ll choose my dream team! I wanted to choose the framework before I start my app, but I will actually use my app as a testing tool to try them all out.

Funny thing is Angular’s documentation is also not quite up-to-date of version 5 (very fresh, few errors) so I am helping them on it as well. And it’s quite motivating to know that while I learn both GrupalGap and Angular, I can help making the doc better.

I don’t want to make false promises, especially since I don’t know if I’ll find the time to do so, but I’ve never really contributed back to the Drupal community so far, years pass and I never really find the time to do it and I just want to say that DrupalGap is the kind of project that I would be glad to help grow faster. So we’ll see if I can make it…

kopeboy commented 1 year ago

Updates/suggestions?