airlift / airline

Java annotation-based framework for parsing Git like command line structures
Apache License 2.0
847 stars 138 forks source link

update project to airbase #14

Closed codefromthecrypt closed 11 years ago

codefromthecrypt commented 11 years ago

updates to airbase as parent, fixing all the various findbugs, pmd, and license problems. Updated various plugin versions to get above working and current.

More notably updates to guava 14.01, which didn't need any changes.

codefromthecrypt commented 11 years ago

Ping

mhgrove commented 11 years ago

@adriancole i dont think this project is active anymore. we've got a fork that we're regularly updating that i've also merged the #4 into. if you're using airline regularly, we might think about breaking away from this project?

cowtowncoder commented 11 years ago

@mhgrove which fork is this? I am using airline for a project so I'd be interested in a supported version (although current one works just fine for me, no specific problems).

mhgrove commented 11 years ago

https://github.com/clarkparsia/airline

We've expanded the help output w/ a discussion & examples sections (both of which are optional) and added manpage-esque HTML output: http://stardog.com/docs/man/query-execute.html

codefromthecrypt commented 11 years ago

cool. I'd be interested in a more active place. particularly, I've noticed init time takes about 100ms on my laptop which we could improve on.

On Tue, Jun 11, 2013 at 10:59 AM, Michael Grove notifications@github.comwrote:

https://github.com/clarkparsia/airline

We've expanded the help output w/ a discussion & examples sections (both of which are optional) and added manpage-esque HTML output: http://stardog.com/docs/man/query-execute.html

— Reply to this email directly or view it on GitHubhttps://github.com/airlift/airline/pull/14#issuecomment-19280769 .

codefromthecrypt commented 11 years ago

are you publishing under io.airline from this fork?

On Tue, Jun 11, 2013 at 11:11 AM, Adrian Cole adrian.f.cole@gmail.comwrote:

cool. I'd be interested in a more active place. particularly, I've noticed init time takes about 100ms on my laptop which we could improve on.

On Tue, Jun 11, 2013 at 10:59 AM, Michael Grove notifications@github.comwrote:

https://github.com/clarkparsia/airline

We've expanded the help output w/ a discussion & examples sections (both of which are optional) and added manpage-esque HTML output: http://stardog.com/docs/man/query-execute.html

— Reply to this email directly or view it on GitHubhttps://github.com/airlift/airline/pull/14#issuecomment-19280769 .

mhgrove commented 11 years ago

re: startup, yes i noticed that too. i was debugging something and had put a print in the metadata loader and it printed thousands of times just creating the CLI. not sure were it goes off the rails, but getting guice to give you an instance of something, while useful, makes it more expensive. so there's some easy improvements there i think that would really help startup time.

re: publishing, yeah, we've been using io.airline. i'm not opposed to changing it to something else.

i'm also not sure what the procedure is for taking over an abandoned codebase. i dont think github makes it a one button kind of thing to un-fork and just copy something, but i could be mistaken

codefromthecrypt commented 11 years ago

hmm it is using guice? I must have missed that in the dep tree. If using any DI, I'd prefer dagger as this sort of thing doesn't need to be runtime resolved. Any interest?

On Tue, Jun 11, 2013 at 11:19 AM, Michael Grove notifications@github.comwrote:

re: startup, yes i noticed that too. i was debugging something and had put a print in the metadata loader and it printed thousands of times just creating the CLI. not sure were it goes off the rails, but getting guice to give you an instance of something, while useful, makes it more expensive. so there's some easy improvements there i think that would really help startup time.

re: publishing, yeah, we've been using io.airline. i'm not opposed to changing it to something else.

i'm also not sure what the procedure is for taking over an abandoned codebase. i dont think github makes it a one button kind of thing to un-fork and just copy something, but i could be mistaken

— Reply to this email directly or view it on GitHubhttps://github.com/airlift/airline/pull/14#issuecomment-19282010 .

codefromthecrypt commented 11 years ago

yeah there's no guice in here. but anyway, it would be cool to use an annotation processor to cut that 100ms dance (or at least move it to javac)

On Tue, Jun 11, 2013 at 11:50 AM, Adrian Cole adrian.f.cole@gmail.comwrote:

hmm it is using guice? I must have missed that in the dep tree. If using any DI, I'd prefer dagger as this sort of thing doesn't need to be runtime resolved. Any interest?

On Tue, Jun 11, 2013 at 11:19 AM, Michael Grove notifications@github.comwrote:

re: startup, yes i noticed that too. i was debugging something and had put a print in the metadata loader and it printed thousands of times just creating the CLI. not sure were it goes off the rails, but getting guice to give you an instance of something, while useful, makes it more expensive. so there's some easy improvements there i think that would really help startup time.

re: publishing, yeah, we've been using io.airline. i'm not opposed to changing it to something else.

i'm also not sure what the procedure is for taking over an abandoned codebase. i dont think github makes it a one button kind of thing to un-fork and just copy something, but i could be mistaken

— Reply to this email directly or view it on GitHubhttps://github.com/airlift/airline/pull/14#issuecomment-19282010 .

mhgrove commented 11 years ago

yeah, i was unclear. it doesn't use it directly, though MetadataLoader does a little reflection magic to be Guice/DI aware, but when I merged #4 into our fork, you can use Guice indirectly to instantiate commands, which was a requirement for us.

cowtowncoder commented 11 years ago

My main wish would actually to keep core airline minimal-dep, and that's why I wish Guava was not used. Having an add-on (or dynamic use) would be fine of course. Same goes for DI, although size-wise libs aren't quite as important.

codefromthecrypt commented 11 years ago

we could rewrite airline without using guava and probably in a fraction of the overhead (by using only a single annotation loop per class).. question is.. will we? :)

I can donate a day or two towards the cause.

On Tue, Jun 11, 2013 at 12:12 PM, Tatu Saloranta notifications@github.comwrote:

My main wish would actually to keep core airline minimal-dep, and that's why I wish Guava was not used. Having an add-on (or dynamic use) would be fine of course. Same goes for DI, although size-wise libs aren't quite as important.

— Reply to this email directly or view it on GitHubhttps://github.com/airlift/airline/pull/14#issuecomment-19285429 .

tatu-at-salesforce commented 11 years ago

I could definitely help as well. I like the library, find it useful, and would love to help make it even leaner with respect to dependencies pulled in.

mhgrove commented 11 years ago

airline isn't dependent on Guice. it's dependent on javax.inject, which is what it's always depended on. there's some reflect magic using Class.forName in MetadataLoader to make it more friendly to guice, but that safely fails if you're not using guice or something something else entirely (I had to add that to keep it from blowing up when paired with a real DI library).

The rub is that MetadataLoader seems to use some sort of homegrown half-assed injection for passing around state, rather than an actual DI framework.

where we use guice is via the CommandFactory interface; so airline is able to use our injector to get command instances instead of depending on Class.newInstance.

it's never been clear to me why the faux-DI stuff is involved in MetadataLoader in the first place, it seems to only be used in the test suite. we don't use it, our DI integration is restricted to a custom CommandFactory.

reflection is not cheap, there's probably a lot that could be done to cache some calls to reflect that'd help the loading situation.

dain commented 11 years ago

I assure this project is not abandoned. Github notifications seem to be broken since I'm not getting updates for these discussions. I'll take a look at these patches soon.

codefromthecrypt commented 11 years ago

closing this out as denominator no longer uses guava, so isn't concerned with this PR anymore (except the side-bar on 100ms reflection overhead).

cowtowncoder commented 11 years ago

One note I forgot to add: a lot of stuff from Guava is actively used, so it is probably not practical to try to replace usage, even if some of it would be easy to do.