GMOD / Apollo

Genome annotation editor with a Java Server backend and a Javascript client that runs in a web browser as a JBrowse plugin.
http://genomearchitect.readthedocs.io/
Other
128 stars 85 forks source link

Gradle update #2430

Open mictadlo opened 4 years ago

mictadlo commented 4 years ago

Hi, IntelliJ IDEA Ultimate appears to be expensive. Netbeans, on the other hand, is free and seems to support Groovy/Grails/Gradle. However, I ran into two problems with Netbeans. The first one could have been resolved by using OpenJDK-8.

The second problem caused in this IDE according to Netbeans developer is that:

..[Apollo] has really poor Gradle support. Created 4 years ago. I think the author saw more in Docker than providing a good build file. If you check the build.grade you see that there is no plugin applied just a bunch of code. That's why you can't actually do anything meaningful with the project in NetBeans.

Do you have any plans to upgrade the Gradle support?

I believe to have a free alternative to IntelliJ IDEA Ultimate, would allow more poeple to contibute to your project.

Best wishes

Michal

nathandunn commented 4 years ago

@mictadlo Not sure what the next major version of the Apollo stack will be other than that I will try to make the web services compatible.

To that end, allowing more contributions to the project for future releases is a major priority. The best way for us to accomplish this is to split the project up.

nathandunn commented 4 years ago

If we do stay with a JVM, this will get fixed as I will definitely use gradle.

mictadlo commented 4 years ago
  1. What alternatives to JVM do you consider?
  2. What do you mean by splitting the project up?
nathandunn commented 4 years ago

On Apr 4, 2020, at 5:07 PM, Michał T. Lorenc notifications@github.com wrote:

What alternatives to JVM do you consider?

Either a node.js stack (example) that uses sails.js or a python flask server. If it stays in JVM it will probably be Grails 4 (gradle compliant).

The real departure would be to use something like blaze graph to increase performance.

Reglardess I want to keep the API the same.

What do you mean by splitting the project up?

I want to build the server in a separate GitHub repo than the client. I think it will simplify things for developers and users alike.

Nathan

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/GMOD/Apollo/issues/2430#issuecomment-609107271, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXNKXZENT2MGHPWV7LEMDRK7DUJANCNFSM4L7D3OTQ.

mictadlo commented 4 years ago

I've never heard before of blaze graph database, but what would you think about elasticsearch database which comes with Full-Text search and could be used for example to find gene names in a similar fashion like google type search experience. Additionally, it comes with Kibana which lets you visualize your Elasticsearch data. Furthermore, Redis was good for fast caching.

In past, I used Python a lot but problems arise when the source codes in size grow. My problems were that I was used to static typing and a compiler. After my code ends up in multiple files I had constantly to check whether for example one of my methods requires a list or an integer. What is the return type? Missing a compiler caused that many of my errors such miss-spelling a variable name was only discovered during the execution of the code rather during compile type. Meanwhile, I use Python only for small scripts.

Sails.js supports TypeScript and for example on the client-side Angular could be used which seems to update code automatically to the newer release. Maybe React would be the other alternative and it seems to support TypeScript, too.

Recently, Dart has increased on popularity thanks to its Flutter framework which has been extended to Flutter for Web. On the server-side, Dart has angel and aqueduct.

If you decide to use Grails 4 then could only be static typing be used in order to increase the performance. Otherwise, if you could choose any statically typed language which works on client and server-side would make probably life easier.

What do you think?

nathandunn commented 4 years ago

On Apr 6, 2020, at 6:32 AM, Michał T. Lorenc notifications@github.com wrote:

I've never heard before of blaze graph database, but what would you think about elasticsearch database which comes with Full-Text search and could be used for example to find gene names in a similar fashion like google type search experience. Additionally, it comes with Kibana https://www.elastic.co/kibana which lets you visualize your Elasticsearch data. Furthermore, Redis was good for fast caching.

Elasticsearch and Redid are both great for what they are used for.

However, having a schema is really important for this type of application, either maintained at the software level or within the datastore.

Blazegraph is an open-source graph database (I also considered neo4j) that supports ref triples, sparql, tinker pop api) and is highly performant and has an enforceable schema. It has both a Java and a JavaScript API.

In past, I used Python a lot but problems arise when the source codes in size grow. My problems were that I was used to static typing and a compiler. After my code ends up in multiple files I had constantly to check whether for example one of my methods requires a list or an integer. What is the return type? Missing a compiler caused that many of my errors such miss-spelling a variable name was only discovered during the execution of the code rather during compile type. Meanwhile, I use Python only for small scripts.

Hmm . . . having an IDE (like PyCharm) will help immensely with this type of thing, but I also think your points about static compiling help. Sails.js supports TypeScript and for example on the client-side Angular could be used which seems to update code automatically to the newer release. Maybe React would be the other alternative and it seems to support TypeScript https://www.typescriptlang.org/docs/handbook/jsx.html, too.

We will definitely be using TypeScript as much as possible on the front-end. JBrowse 2 will use React.js, so we will be using that primarily (though, of course they will work together). Recently, Dart has increased on popularity thanks to its Flutter framework which has been extended to Flutter for Web https://flutter.dev/docs/get-started/web. On the server-side, Dart has angel https://angel-dart.dev/ and aqueduct https://aqueduct.io/.

If you decide to use Grails 4 then could only be static typing be used in order to increase the performance https://www.linkedin.com/pulse/how-make-groovy-fast-java-david-e-jones. Otherwise, if you could choose any statically typed language which works on client and server-side would make probably life easier.

Grails supports multiple JVM languages. Additionally there is a static typing option and the ability to type things as you feel necessary. What do you think?

I think this is all very helpful. As the front-end has already been chosen (React.js with a mixture of typescript and JavaScript), I think it really boils down to what datastore works well.

I would also strongly advise spending the money on an IDE if necessary. The time-savings are entirely worth it, but I usually get work to pay / make it open-source / or via an educator license.

Nathan

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/GMOD/Apollo/issues/2430#issuecomment-609796358, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXNKQHJQIN35BLCCEENLDRLHKVFANCNFSM4L7D3OTQ.

mictadlo commented 4 years ago

Good news, thanks to the Netbeans developer it is possible to use also OpenJDK-13 with Grandle and Groovy within Netbeans.

I like Pycharm and kite extension but they work for simple thinks but if things get more complicated they failing.

Another alternative on the server-side could be nest which is a progressive Node.js framework on top of TypeScript. I think TypeScript has very good support in VS code.

One reason to use Neo4j is that they have been already BioInformationcs databases such as:

I understand it is hard to choose a full stack but another consideration could be how easy it would migrate to the next framework/library release.

nathandunn commented 4 years ago

On Apr 16, 2020, at 4:53 AM, Michał T. Lorenc notifications@github.com wrote:

Good news, thanks to the Netbeans developer https://issues.apache.org/jira/browse/NETBEANS-4124 it is possible to use also OpenJDK-13 with Grandle and Groovy within Netbeans.

I like Pycharm and kite https://kite.com/ extension but they work for simple thinks but if things get more complicated they failing.

Another alternative on the server-side could be nest https://github.com/nestjs/nest which is a progressive Node.js framework on top of TypeScript. I think TypeScript has very good support in VS code.

Yeah, TypeScript is really nice, but so is groovy. I thought Nest looked reasonable.

One reason to use Neo4j is that they have been already BioInformationcs databases such as:

https://neo4j.com/blog/integrating-biology-public-neo4j-database https://neo4j.com/blog/integrating-biology-public-neo4j-database https://github.com/bio4j/bio4j https://github.com/bio4j/bio4j This would be my first choice, except that Transaction Management is something you have to pay for in Neo4j, which kind of kills the open-source distribution model. I understand it is hard to choose a full stack but another consideration could be how easy it would migrate to the next framework/library release.

Once you know where you’re going, its not too bad.

Nathan

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/GMOD/Apollo/issues/2430#issuecomment-614605595, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXNKQEWO5OV73NWWZKD5LRM3WU7ANCNFSM4L7D3OTQ.

mictadlo commented 4 years ago

By any chance, do you know when will you make your final decision about the future of this project?

nathandunn commented 4 years ago

I’m going to start prototyping in the next few weeks. I’m hoping we’ll start working on a new front-end but the summer. When anything will get into production I couldn’t say.

What is the context of your question? Are you just wanting to start working on features, or are there specific features you want? I would probably concentrate on the current Apollo from now since we’ll be maintaining that for several years to come.

On Apr 16, 2020, at 4:25 PM, Michał T. Lorenc notifications@github.com wrote:

By any chance, do you know when will you make your final decision about the future of this project?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/GMOD/Apollo/issues/2430#issuecomment-614947089, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFXNKXC6WOPUTGOYOFUCYTRM6HXTANCNFSM4L7D3OTQ.