Re: Introducing Blender, an annotation processor for Guice
Ping ? -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/97cdae9b-c781-4097-b003-a46a1ffc1e2a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Introducing Blender, an annotation processor for Guice
I followed up on the pull request: https://github.com/google/guice/pull/880#issuecomment-70591008 On Fri, Feb 27, 2015 at 11:15 PM Stéphane NICOLAS steff.nico...@gmail.com wrote: Ping ? -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/ msgid/google-guice/97cdae9b-c781-4097-b003-a46a1ffc1e2a%40googlegroups.com . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/CAJEBNUcJRRn4ipDTySEr9vPhCFYWAhZFXvWSDmffwk%3DJLX1pGw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Introducing Blender, an annotation processor for Guice
Hi Guice team, I am just knocking to see if you have had some time to consider our enhancement request. As we mentioned it, we are very open to enhance this work. The current implementation is in production inside RoboGuice 3 and already propels tens of apps used by millions of users and the system is stable and performs well. Regards, Stéphane On Wednesday, November 12, 2014 at 2:27:57 PM UTC-5, Stéphane NICOLAS wrote: The annotation processor document requested by the Guice team is ready for a first review. This is our first attempt to write such a document, I hope it will meet your expectations : https://docs.google.com/document/d/15JGpsTvVFeXKi6LNLX_B6577BU8RUXghAu5gxisWOQo/edit# On Tuesday, November 11, 2014 12:42:54 PM UTC-5, Stéphane NICOLAS wrote: Hi all, here is our first PR to demonstrate what blender is and what it changes in Guice : https://github.com/google/guice/pull/880 (sorry for the delay, we had some pending work and a few things to solve in blender). Stéphane On Wednesday, October 22, 2014 5:11:18 PM UTC-4, Sam Berlin wrote: One immediately useful thing that would be helpful is a doc that lists any new APIs, changed APIs, and removed APIs, along with rationale of each. Also if any implementation details are different, that would be useful to explain too. The slideshow linked earlier is nice for an end-user, but to know if it can be merged into Guice we'd need something a bit meatier. A pull request would also be useful, to see the actual code changes. sam On Wed, Oct 22, 2014 at 5:08 PM, Stéphane NICOLAS steff@gmail.com wrote: Thanks for this answer Christian. Let us know if we can help this review. 2014-10-22 16:30 GMT-04:00 Christian Gruber cgr...@google.com: Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff@gmail.com wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can
Re: Introducing Blender, an annotation processor for Guice
The annotation processor document requested by the Guice team is ready for a first review. This is our first attempt to write such a document, I hope it will meet your expectations : https://docs.google.com/document/d/15JGpsTvVFeXKi6LNLX_B6577BU8RUXghAu5gxisWOQo/edit# On Tuesday, November 11, 2014 12:42:54 PM UTC-5, Stéphane NICOLAS wrote: Hi all, here is our first PR to demonstrate what blender is and what it changes in Guice : https://github.com/google/guice/pull/880 (sorry for the delay, we had some pending work and a few things to solve in blender). Stéphane On Wednesday, October 22, 2014 5:11:18 PM UTC-4, Sam Berlin wrote: One immediately useful thing that would be helpful is a doc that lists any new APIs, changed APIs, and removed APIs, along with rationale of each. Also if any implementation details are different, that would be useful to explain too. The slideshow linked earlier is nice for an end-user, but to know if it can be merged into Guice we'd need something a bit meatier. A pull request would also be useful, to see the actual code changes. sam On Wed, Oct 22, 2014 at 5:08 PM, Stéphane NICOLAS steff@gmail.com wrote: Thanks for this answer Christian. Let us know if we can help this review. 2014-10-22 16:30 GMT-04:00 Christian Gruber cgr...@google.com: Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff@gmail.com wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgr...@google.com: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it
Re: Introducing Blender, an annotation processor for Guice
Hi all, here is our first PR to demonstrate what blender is and what it changes in Guice : https://github.com/google/guice/pull/880 (sorry for the delay, we had some pending work and a few things to solve in blender). Stéphane On Wednesday, October 22, 2014 5:11:18 PM UTC-4, Sam Berlin wrote: One immediately useful thing that would be helpful is a doc that lists any new APIs, changed APIs, and removed APIs, along with rationale of each. Also if any implementation details are different, that would be useful to explain too. The slideshow linked earlier is nice for an end-user, but to know if it can be merged into Guice we'd need something a bit meatier. A pull request would also be useful, to see the actual code changes. sam On Wed, Oct 22, 2014 at 5:08 PM, Stéphane NICOLAS steff@gmail.com javascript: wrote: Thanks for this answer Christian. Let us know if we can help this review. 2014-10-22 16:30 GMT-04:00 Christian Gruber cgr...@google.com javascript:: Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff@gmail.com javascript: wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgr...@google.com javascript:: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a
Re: Introducing Blender, an annotation processor for Guice
Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a compile-time annotation processor, though it still ended up being a sub-set of the GUICE total capability. I'm interested to hear of your experiences. I will say, I'm really glad people are experimenting with different approaches. Also, I should point out that we do have a validation annotation processor for Guice that we need to roll-out to help with earlier error validation, though that doesn't address performance constraints. It's been sitting for a bit, owing to prioritization, but I think that we should get it in shape and into Guice soon. (cc:ing colin about that) Christian. On Tue Oct 21 2014 at 2:18:15 PM Michael Burton m...@niskala.org wrote: We are aware of Dagger, but feel that Guice is more powerful and flexible. Which is why we are investing time in making Guice more performant for our use-case. We hope to make additional contributions in the future to further close that gap. On Tuesday, October 21, 2014 2:14:22 PM UTC-7, Stéphane NICOLAS wrote: No, we didn't compare them yet. For sure, RG + RoboBlender decrease the amount of processing needed to compute injection points, but still a good part of it is done at runtime. Nevertheless, we think it makes a good compromise in terms of simplicity and performance to use Guice + Blender on Android. S. On Tuesday, October 21, 2014 5:08:27 PM UTC-4, Sam Berlin wrote: This is interesting. Have you compared the results to Dagger (Dagger1 or Dagger2)? Dagger is explicitly built with Android in mind, and shifts the processing to compile time. sam On Tue, Oct 21, 2014 at 5:04 PM, Stéphane NICOLAS steff@gmail.com wrote: Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice(named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice-with- annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it : https://github.com/stephanenicolas/google-guice/tree/PR-blender (Please ask us where to get the latest version, we try to stick on guice 4 changes) We are very excited to submit Blender, and we are very open to modify our implementation to make it fit in Guice and we are eager to get feedback on it. Thanks in advance, Stéphane -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com. To post to this group, send email to google...@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/ msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31% 40googlegroups.com https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/67524038-b76f-4979-9bf9-27b1a04c3ce9%40googlegroups.com https://groups.google.com/d/msgid/google-guice/67524038-b76f-4979-9bf9-27b1a04c3ce9%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this
Re: Introducing Blender, an annotation processor for Guice
I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgru...@google.com: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a compile-time annotation processor, though it still ended up being a sub-set of the GUICE total capability. I'm interested to hear of your experiences. I will say, I'm really glad people are experimenting with different approaches. Also, I should point out that we do have a validation annotation processor for Guice that we need to roll-out to help with earlier error validation, though that doesn't address performance constraints. It's been sitting for a bit, owing to prioritization, but I think that we should get it in shape and into Guice soon. (cc:ing colin about that) Christian. On Tue Oct 21 2014 at 2:18:15 PM Michael Burton m...@niskala.org wrote: We are aware of Dagger, but feel that Guice is more powerful and flexible. Which is why we are investing time in making Guice more performant for our use-case. We hope to make additional contributions in the future to further close that gap. On Tuesday, October 21, 2014 2:14:22 PM UTC-7, Stéphane NICOLAS wrote: No, we didn't compare them yet. For sure, RG + RoboBlender decrease the amount of processing needed to compute injection points, but still a good part of it is done at runtime. Nevertheless, we think it makes a good compromise in terms of simplicity and performance to use Guice + Blender on Android. S. On Tuesday, October 21, 2014 5:08:27 PM UTC-4, Sam Berlin wrote: This is interesting. Have you compared the results to Dagger (Dagger1 or Dagger2)? Dagger is explicitly built with Android in mind, and shifts the processing to compile time. sam On Tue, Oct 21, 2014 at 5:04 PM, Stéphane NICOLAS steff@gmail.com wrote: Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice(named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice-with- annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it :
Re: Introducing Blender, an annotation processor for Guice
Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff.nico...@gmail.com wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgru...@google.com: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a compile-time annotation processor, though it still ended up being a sub-set of the GUICE total capability. I'm interested to hear of your experiences. I will say, I'm really glad people are experimenting with different approaches. Also, I should point out that we do have a validation annotation processor for Guice that we need to roll-out to help with earlier error validation, though that doesn't address performance constraints. It's been sitting for a bit, owing to prioritization, but I think that we should get it in shape and into Guice soon. (cc:ing colin about that) Christian. On Tue Oct 21 2014 at 2:18:15 PM Michael Burton m...@niskala.org wrote: We are aware of Dagger, but feel that Guice is more powerful and flexible. Which is why we are investing time in making Guice more performant for our use-case. We hope to make additional contributions in the future to further close that gap. On Tuesday, October 21, 2014 2:14:22 PM UTC-7, Stéphane NICOLAS wrote: No, we didn't compare them yet. For sure, RG + RoboBlender decrease the amount of processing needed to compute
Re: Introducing Blender, an annotation processor for Guice
Thanks for this answer Christian. Let us know if we can help this review. 2014-10-22 16:30 GMT-04:00 Christian Gruber cgru...@google.com: Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff.nico...@gmail.com wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgru...@google.com: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a compile-time annotation processor, though it still ended up being a sub-set of the GUICE total capability. I'm interested to hear of your experiences. I will say, I'm really glad people are experimenting with different approaches. Also, I should point out that we do have a validation annotation processor for Guice that we need to roll-out to help with earlier error validation, though that doesn't address performance constraints. It's been sitting for a bit, owing to prioritization, but I think that we should get it in shape and into Guice soon. (cc:ing colin about that) Christian. On Tue Oct 21 2014 at 2:18:15 PM Michael Burton m...@niskala.org wrote: We are aware of Dagger, but feel that Guice is more powerful and flexible. Which is why we are investing time in making Guice more performant for our use-case. We hope to make additional contributions in the future to further close that gap. On Tuesday, October 21,
Re: Introducing Blender, an annotation processor for Guice
One immediately useful thing that would be helpful is a doc that lists any new APIs, changed APIs, and removed APIs, along with rationale of each. Also if any implementation details are different, that would be useful to explain too. The slideshow linked earlier is nice for an end-user, but to know if it can be merged into Guice we'd need something a bit meatier. A pull request would also be useful, to see the actual code changes. sam On Wed, Oct 22, 2014 at 5:08 PM, Stéphane NICOLAS steff.nico...@gmail.com wrote: Thanks for this answer Christian. Let us know if we can help this review. 2014-10-22 16:30 GMT-04:00 Christian Gruber cgru...@google.com: Always happy to meet folks and share experiences. As to whether we would consider merging Blender into Guice, that's an easy and a hard question to answer. The simple answer is - we'll consider any great improvements. But how it turns out is obviously a combination of API review, implementation review, licensing (no issues if it's Apache 2.0), performance implications in cases other than what the code was intended to solve (side effects), whether the chances change the scope of the Guice project in ways we wouldn't prefer, etc. That said, I don't know that it's necessary. If it's a fork, you can, ultimately, release it to maven with a different artifact. As long as you properly manage dependencies so no one is pulling in conflicting symbols, it's not an issue. We have a few guice forks out there doing interesting things. But starting the conversation here is definitely a great place to start helping us see what you're trying to achieve. Thanks! We want to encourage folks to try new things, or re-try things in new ways, but I don't want to unrealistically imply any particular likelihood of incorporating it. We'll just have to look at the details to figure that sort of question out. c. On Wed Oct 22 2014 at 12:20:33 PM Stéphane NICOLAS steff.nico...@gmail.com wrote: I will let Mike answer your question Christian, as it is more oriented to his previous post. My personal point of view is that a lot of people already use RG, and for this reason itself, its worth trying to update it and make it the best it can. From a technological point of view, I really like RG as it way simpler to use than Dagger. I am not super familiar with Dagger, though I really love DI as it made me a better dev, but I really like how Guice is simple, and well known also for Android devs from the Java world. I like the fact that you add injections super easily, without having to define a module in the most simple cases, no need to say when the module is being used, by who, etc. I saw the video about Dagger 2 and chances are that this release will make Dagger close to RG in terms of simplicity. But I must say that up to now I have not been convinced by the Dagger tutorial and find it harder to use. Also, when we started to work on Blender, I have been keeping wondering if Guice was being discarded for the good reasons : namely speed and memory consumption. With Blender we could already re-gain some ground on that field, and I am pretty sure Guice could be even more optimized and deliver super decent performance results. I have been a bit sad to see that Google itself discourages using Guice on Android. Though, I agree that a lot of advanced features of Guice are too costly for Android, like the TypeLitteral stuff. But still, in that case, it could be enough for me to discourage people to use them on Android. So, to sum yes, I found it really both interesting and worth it to make Guice better so that we can use it on Android. Do you guys consider merging Blender into Guice ? It could be coded better, but we tried to minimize the changes so that you can more easily see the changes from master branch. Stéphane BTW, I am going to present Blender and RG 3 at AndevCon San Francisco, it would be glad to meet you or Sam there. 2014-10-22 12:38 GMT-04:00 Christian Gruber cgru...@google.com: Can you recommend what features of Guice you find you want that Dagger does not offer, and how these relate? The Dagger and Guice folks are in pretty regular discussion and are related projects, and it would be nice to know what we're missing. Absolutely Guice is more powerful and flexible across many dimensions - a deliberate decision to constrain APIs in order to encourage certain patterns, especially in Dagger 2. Google has some experience (with some good results) simulating the guice API in a compile-time annotation processor, though it still ended up being a sub-set of the GUICE total capability. I'm interested to hear of your experiences. I will say, I'm really glad people are experimenting with different approaches. Also, I should point out that we do have a validation annotation processor for Guice that we need to roll-out to help with earlier error validation, though that doesn't address
Introducing Blender, an annotation processor for Guice
Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice (named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice -with-annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it : https://github.com/stephanenicolas/google-guice/tree/PR-blender (Please ask us where to get the latest version, we try to stick on guice 4 changes) We are very excited to submit Blender, and we are very open to modify our implementation to make it fit in Guice and we are eager to get feedback on it. Thanks in advance, Stéphane -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Introducing Blender, an annotation processor for Guice
This is interesting. Have you compared the results to Dagger (Dagger1 or Dagger2)? Dagger is explicitly built with Android in mind, and shifts the processing to compile time. sam On Tue, Oct 21, 2014 at 5:04 PM, Stéphane NICOLAS steff.nico...@gmail.com wrote: Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice (named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice-with- annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it : https://github.com/stephanenicolas/google-guice/tree/PR-blender (Please ask us where to get the latest version, we try to stick on guice 4 changes) We are very excited to submit Blender, and we are very open to modify our implementation to make it fit in Guice and we are eager to get feedback on it. Thanks in advance, Stéphane -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/CAJEBNUfNgWw8OTW2O5-YenC6qTcLLAcv5%3DmtVwDuiLhUua5kSQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Introducing Blender, an annotation processor for Guice
No, we didn't compare them yet. For sure, RG + RoboBlender decrease the amount of processing needed to compute injection points, but still a good part of it is done at runtime. Nevertheless, we think it makes a good compromise in terms of simplicity and performance to use Guice + Blender on Android. S. On Tuesday, October 21, 2014 5:08:27 PM UTC-4, Sam Berlin wrote: This is interesting. Have you compared the results to Dagger (Dagger1 or Dagger2)? Dagger is explicitly built with Android in mind, and shifts the processing to compile time. sam On Tue, Oct 21, 2014 at 5:04 PM, Stéphane NICOLAS steff@gmail.com javascript: wrote: Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice (named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice-with- annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it : https://github.com/stephanenicolas/google-guice/tree/PR-blender (Please ask us where to get the latest version, we try to stick on guice 4 changes) We are very excited to submit Blender, and we are very open to modify our implementation to make it fit in Guice and we are eager to get feedback on it. Thanks in advance, Stéphane -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com javascript:. To post to this group, send email to google...@googlegroups.com javascript:. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/e94c6b7b-c929-4036-a45e-0203f15587de%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Introducing Blender, an annotation processor for Guice
We are aware of Dagger, but feel that Guice is more powerful and flexible. Which is why we are investing time in making Guice more performant for our use-case. We hope to make additional contributions in the future to further close that gap. On Tuesday, October 21, 2014 2:14:22 PM UTC-7, Stéphane NICOLAS wrote: No, we didn't compare them yet. For sure, RG + RoboBlender decrease the amount of processing needed to compute injection points, but still a good part of it is done at runtime. Nevertheless, we think it makes a good compromise in terms of simplicity and performance to use Guice + Blender on Android. S. On Tuesday, October 21, 2014 5:08:27 PM UTC-4, Sam Berlin wrote: This is interesting. Have you compared the results to Dagger (Dagger1 or Dagger2)? Dagger is explicitly built with Android in mind, and shifts the processing to compile time. sam On Tue, Oct 21, 2014 at 5:04 PM, Stéphane NICOLAS steff@gmail.com wrote: Hello all, Mike Burton (the author of RoboGuice https://github.com/roboguice/roboguice, a version of Guice adapted to Android) and I have been working on a new annotation processor for Guice (named Blender). We have been working hard on this and, in RoboGuice, we gain from 30 to 70% gain in speed and around 30% gain in memory footprint for our apps. *We would like to submit the idea of Blender to the community of Guice devs in order to have your feedback on this, and as we hope thatBlender can become part of the official Guice.* Here are some *slides* to explain why and how we did it : https://speakerdeck.com/stephanenicolas/blender-boosting-guice-with- annotation-processing We have currently *forked Guice* and tried to make something close to a *PR* for it : https://github.com/stephanenicolas/google-guice/tree/PR-blender (Please ask us where to get the latest version, we try to stick on guice 4 changes) We are very excited to submit Blender, and we are very open to modify our implementation to make it fit in Guice and we are eager to get feedback on it. Thanks in advance, Stéphane -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com. To post to this group, send email to google...@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com https://groups.google.com/d/msgid/google-guice/9cd1683f-0545-4687-b824-0a0cfd7a9f31%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups google-guice group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com. To post to this group, send email to google-guice@googlegroups.com. Visit this group at http://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/67524038-b76f-4979-9bf9-27b1a04c3ce9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.