Re: Adventures in Apache Isis...
Hi Deacon, many thanks for this write-up; read it through with a lot of interest; and impressed/heartened by the fact that you got in there and was able to put together a couple of your own Wicket components, great stuff. But of all the positive stuff you said, the best thing (for me) was when you sad it was "lots of fun" to write the app. Yeah, that's what we think too. With respect to the various "not-so-great" points you made (all feedback welcomed, by the way): I think the code base is still quite dynamic, which is good in a way > because it gets actively developed (does Dan ever sleep? ;)) but it's also > difficult for a noob to jump in. I happened to work with the sources right > before the 1.12.2 release which had some annoying "surface" bugs and in > 1.13-SNAPSHOT some subtleties of the Isis-components implementation already > changed. It's probably worth qualifying your comment here: the public programming API is very stable, so code written against one version of the framework by-and-large should just work in the next version. But under the covers there are continual refactorings as I strive to modernize a codebase, some of which was written back in the Java 1.1 days. There were a particularly large number of internal refactorings from 1.12.x to 1.13.0, and that might have been what you observed. (With respect to the Wicket components, I don't consider that a formal public API - perhaps one day it will become so). I18ln: > There are lots of labels hard-coded in English (I'm looking at you: > bookmarks-display, list pager, signin fields, excel download etc.) which > can be a real show stopper for certain clients in certain locales (France, > Germany, ...). Plus, if you want to fix these kinds of errors you need to > understand the Wicket-way of doing this plus the way Isis goes about it as > well. And then do it for the contribs also. Surprisingly complex for a > beginner even if they are by themselves all just small trivial fixes. Through using this stuff it'll improve. As Martin says, please raise tickets and then we can get the fixes in. Documentation: > All in all the documentation is great and better than much of the other > stuff out there, but a lot of details are missing to really understand the > concepts behind value objects, enum types, facets, objects not originating > from a database and the like. I guess all I can say is PRs gratefully received. All the docs are written in Asciidoc, so are easy to update and to preview locally. Furthermore, there is not a lot of info or "hand holding" about how to take > an application from prototyping to production. I had to spend a lot of time > figuring out how to get a jetty runner working with an "uberjar" in > headless mode as a service with "external" configuration (the internal Isis > Server didn't work for me at all, but that might also just due to my > inexperience). Ditto, I suppose; if you have any notes on how you went about creating an "uberjar" then jot them down (eg in the description/text of a JIRA ticket), and then that can get converted into appropriate dcumentation. Re: your struggles with our embedded jetty server, not sure what the problem there is. There are screencasts on using jetty server, and it works really nicely in IntelliJ, but I haven't tried it on other IDEs for a year or two now, so I rely on others to flag issues if there are any? Wish list: > - Better out-of-the-box handling of the display of external/static > resources (Images, IFrames(!) etc.) > - A component for pageable display of entity collections in a grid > - A tree component By all means raise tickets,with as much detail as you can as to what you want and how you see it looking/working (including any ideas you might have for extending the programming model, eg new attributes of existing annotations). For new components, probably developing as Isis addons is the way to go; easier to iterate on. I recommend using the template [1] as a starting point. Speaking of which, yes, it'd be great to get your openstreetmap component as a new addon, as well as your static URL component. Let me know if I can help at all. Thanks again for the feedback/experience report; great stuff and really valuable. Cheers Dan [1] https://github.com/isisaddons/template On 15 July 2016 at 17:11, Deacon Frost wrote: > I successfully delivered my first "real" Apache Isis application today -- > YAY!! -- and would like to share my experience. > > My background: I am a reasonably experienced developer proficient in custom > application development in C#, Java, Javascript, Python etc. but never > touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java chops > are a bit rusty and I am a complete Maven noob. > > I have been following NakedObjects since the early 2000's and am quite > intrigued by its philosophy and promises but never mad the "plunge" to > actually implement a project for a client with it. I checked out Apache > Isi
Re: Adventures in Apache Isis...
Thanks Deacon and Cesar for sharing your adventures. I agree that it can be a bumpy road sometimes but good to hear the framework will take you places. Your contributions can smoothen the path for future explorers. Cheers, Jeroen On 15 July 2016 at 19:32, Andre Venter wrote: > Well done Deacon! > > On Fri, Jul 15, 2016 at 7:27 PM, César Camilo Lugo Marcos < > cesar.l...@sisorg.com.mx> wrote: > > > Deacon, > > > > What a great summary, congratulations! > > > > I want to take the opportunity to add some stuff: > > > > More great stuff: > > - We have tested our Apache ISIS application in an AWS cloud load > > balanced environment including some level of volume concurrency testing. > > So far so good. We are expecting to have millions of users, and so far > > it looks like, with proper load balancing and fail-over, it will do the > > job. > > > > - We are using it in conjunction with mobile applications leveraging the > > flexibility and automation of N.O. restful services. It's just amazing > > how it simplifies RESTful services consumption in a mobile environment, > > particularly the ability to "join" results with the xo prefix. > > > > More wish list: > > - Mutable collections grids in the wicket viewer. > > - Image collections shown as images. > > - Configurable UI filters by domain entities, allowing to filter by > > multiple attributes, with multiple types of filters (radio, range, > > boolean condition). > > - More business needs oriented add-ons, particularly if they follow > > industry-standards through the use of ontologies. So far the ones > > available are more technical, and they do a great job, like maps, audit > > and multi-tenant. > > > > I think the RO domain model and the restful services are quite mature > > and powerful, and the wicket viewer is a little behind but evolving in > > the right direction. Also, Dan mentioned that eventually they will add > > some more powerful viewers, which sounds quite exciting!. > > > > César. > > > > On Fri, 2016-07-15 at 18:11 +0200, Deacon Frost wrote: > > > I successfully delivered my first "real" Apache Isis application today > -- > > > YAY!! -- and would like to share my experience. > > > > > > My background: I am a reasonably experienced developer proficient in > > custom > > > application development in C#, Java, Javascript, Python etc. but never > > > touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java > > chops > > > are a bit rusty and I am a complete Maven noob. > > > > > > I have been following NakedObjects since the early 2000's and am quite > > > intrigued by its philosophy and promises but never mad the "plunge" to > > > actually implement a project for a client with it. I checked out Apache > > > Isis on and off (hey, I even bought and enjoyed Dan's book in 2009 or > so) > > > but - without wanting to sound blasé - the UI was never quite up to my > > > taste (the .NET-Version was even worse). But the recent changes to the > > look > > > and feel of the Bootstrap Wicket interface made me confident to finally > > be > > > able to "sell" it to clients. > > > > > > The target application is - in a nutshell - an internal web-application > > for > > > a government department to define and configure traffic webcams > (~1000), > > > locate them interactively on a map, display their latest images, link > > them > > > to their road network data etc. Nothing too complex but the right size > to > > > try something new, I guess. > > > > > > The great: > > > I implemented a working prototype of the application in under a > week(!), > > > which already looked very polished and had lots of "bells and > whistles", > > > like a Google Maps interface, display of live images, Excel-export, > > > auditing-service, REST-interface etc.. The client was positively > > surprised > > > by the polished looks and richness of features and went for it. So, > > within > > > two weeks after that I was able to implement the complete application, > > > reusing most of the work implemented in the prototype. > > > > > > I had to implement two Isis wicket components: > > > - Display of a map (Locatable) based on OpenStreetMap: > > > I had trouble getting the Google map interface to work in the client's > > > environment. It kept complaining about application keys etc. and wasn't > > > usable at all. Thanks to the "wicket stuff" implementation of > openlayers3 > > > and a shameless "raid" of Dan's gmap3-isis-component I was able to > build > > an > > > openlayers3-isis-component myself, despite my utter isis/wicket > > noob-ness. > > > - Display of static image resources: > > > The "standard" Blob-interface didn't cut it for me because it only > > > displays a thumbnail image (which was even of a bigger byte size and > > lower > > > resolution than the original) of an image resource from memory/db. I > was > > > able to build an Isis ExternalImageUrl-component by copying much of the > > > Blob/Clob-component but using static URLs, which works flawlessly
Re: Adventures in Apache Isis...
Well done Deacon! On Fri, Jul 15, 2016 at 7:27 PM, César Camilo Lugo Marcos < cesar.l...@sisorg.com.mx> wrote: > Deacon, > > What a great summary, congratulations! > > I want to take the opportunity to add some stuff: > > More great stuff: > - We have tested our Apache ISIS application in an AWS cloud load > balanced environment including some level of volume concurrency testing. > So far so good. We are expecting to have millions of users, and so far > it looks like, with proper load balancing and fail-over, it will do the > job. > > - We are using it in conjunction with mobile applications leveraging the > flexibility and automation of N.O. restful services. It's just amazing > how it simplifies RESTful services consumption in a mobile environment, > particularly the ability to "join" results with the xo prefix. > > More wish list: > - Mutable collections grids in the wicket viewer. > - Image collections shown as images. > - Configurable UI filters by domain entities, allowing to filter by > multiple attributes, with multiple types of filters (radio, range, > boolean condition). > - More business needs oriented add-ons, particularly if they follow > industry-standards through the use of ontologies. So far the ones > available are more technical, and they do a great job, like maps, audit > and multi-tenant. > > I think the RO domain model and the restful services are quite mature > and powerful, and the wicket viewer is a little behind but evolving in > the right direction. Also, Dan mentioned that eventually they will add > some more powerful viewers, which sounds quite exciting!. > > César. > > On Fri, 2016-07-15 at 18:11 +0200, Deacon Frost wrote: > > I successfully delivered my first "real" Apache Isis application today -- > > YAY!! -- and would like to share my experience. > > > > My background: I am a reasonably experienced developer proficient in > custom > > application development in C#, Java, Javascript, Python etc. but never > > touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java > chops > > are a bit rusty and I am a complete Maven noob. > > > > I have been following NakedObjects since the early 2000's and am quite > > intrigued by its philosophy and promises but never mad the "plunge" to > > actually implement a project for a client with it. I checked out Apache > > Isis on and off (hey, I even bought and enjoyed Dan's book in 2009 or so) > > but - without wanting to sound blasé - the UI was never quite up to my > > taste (the .NET-Version was even worse). But the recent changes to the > look > > and feel of the Bootstrap Wicket interface made me confident to finally > be > > able to "sell" it to clients. > > > > The target application is - in a nutshell - an internal web-application > for > > a government department to define and configure traffic webcams (~1000), > > locate them interactively on a map, display their latest images, link > them > > to their road network data etc. Nothing too complex but the right size to > > try something new, I guess. > > > > The great: > > I implemented a working prototype of the application in under a week(!), > > which already looked very polished and had lots of "bells and whistles", > > like a Google Maps interface, display of live images, Excel-export, > > auditing-service, REST-interface etc.. The client was positively > surprised > > by the polished looks and richness of features and went for it. So, > within > > two weeks after that I was able to implement the complete application, > > reusing most of the work implemented in the prototype. > > > > I had to implement two Isis wicket components: > > - Display of a map (Locatable) based on OpenStreetMap: > > I had trouble getting the Google map interface to work in the client's > > environment. It kept complaining about application keys etc. and wasn't > > usable at all. Thanks to the "wicket stuff" implementation of openlayers3 > > and a shameless "raid" of Dan's gmap3-isis-component I was able to build > an > > openlayers3-isis-component myself, despite my utter isis/wicket > noob-ness. > > - Display of static image resources: > > The "standard" Blob-interface didn't cut it for me because it only > > displays a thumbnail image (which was even of a bigger byte size and > lower > > resolution than the original) of an image resource from memory/db. I was > > able to build an Isis ExternalImageUrl-component by copying much of the > > Blob/Clob-component but using static URLs, which works flawlessly for > > displaying the original images based on an "ExternalImageUrl"-Property of > > the entity. > > > > (Once the dust has settled I want to contribute the openlayers3- and > static > > image components. Maybe one of you guys can provide me with a little > > guidance how to set that up...) > > > > I had some minor questions that got answered instantly by Dan and Co on > the > > mailing list. Thanks again! > > > > The ability to define aspects of the interface in the XML-layout files is
Re: Adventures in Apache Isis...
Deacon, What a great summary, congratulations! I want to take the opportunity to add some stuff: More great stuff: - We have tested our Apache ISIS application in an AWS cloud load balanced environment including some level of volume concurrency testing. So far so good. We are expecting to have millions of users, and so far it looks like, with proper load balancing and fail-over, it will do the job. - We are using it in conjunction with mobile applications leveraging the flexibility and automation of N.O. restful services. It's just amazing how it simplifies RESTful services consumption in a mobile environment, particularly the ability to "join" results with the xo prefix. More wish list: - Mutable collections grids in the wicket viewer. - Image collections shown as images. - Configurable UI filters by domain entities, allowing to filter by multiple attributes, with multiple types of filters (radio, range, boolean condition). - More business needs oriented add-ons, particularly if they follow industry-standards through the use of ontologies. So far the ones available are more technical, and they do a great job, like maps, audit and multi-tenant. I think the RO domain model and the restful services are quite mature and powerful, and the wicket viewer is a little behind but evolving in the right direction. Also, Dan mentioned that eventually they will add some more powerful viewers, which sounds quite exciting!. César. On Fri, 2016-07-15 at 18:11 +0200, Deacon Frost wrote: > I successfully delivered my first "real" Apache Isis application today -- > YAY!! -- and would like to share my experience. > > My background: I am a reasonably experienced developer proficient in custom > application development in C#, Java, Javascript, Python etc. but never > touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java chops > are a bit rusty and I am a complete Maven noob. > > I have been following NakedObjects since the early 2000's and am quite > intrigued by its philosophy and promises but never mad the "plunge" to > actually implement a project for a client with it. I checked out Apache > Isis on and off (hey, I even bought and enjoyed Dan's book in 2009 or so) > but - without wanting to sound blasé - the UI was never quite up to my > taste (the .NET-Version was even worse). But the recent changes to the look > and feel of the Bootstrap Wicket interface made me confident to finally be > able to "sell" it to clients. > > The target application is - in a nutshell - an internal web-application for > a government department to define and configure traffic webcams (~1000), > locate them interactively on a map, display their latest images, link them > to their road network data etc. Nothing too complex but the right size to > try something new, I guess. > > The great: > I implemented a working prototype of the application in under a week(!), > which already looked very polished and had lots of "bells and whistles", > like a Google Maps interface, display of live images, Excel-export, > auditing-service, REST-interface etc.. The client was positively surprised > by the polished looks and richness of features and went for it. So, within > two weeks after that I was able to implement the complete application, > reusing most of the work implemented in the prototype. > > I had to implement two Isis wicket components: > - Display of a map (Locatable) based on OpenStreetMap: > I had trouble getting the Google map interface to work in the client's > environment. It kept complaining about application keys etc. and wasn't > usable at all. Thanks to the "wicket stuff" implementation of openlayers3 > and a shameless "raid" of Dan's gmap3-isis-component I was able to build an > openlayers3-isis-component myself, despite my utter isis/wicket noob-ness. > - Display of static image resources: > The "standard" Blob-interface didn't cut it for me because it only > displays a thumbnail image (which was even of a bigger byte size and lower > resolution than the original) of an image resource from memory/db. I was > able to build an Isis ExternalImageUrl-component by copying much of the > Blob/Clob-component but using static URLs, which works flawlessly for > displaying the original images based on an "ExternalImageUrl"-Property of > the entity. > > (Once the dust has settled I want to contribute the openlayers3- and static > image components. Maybe one of you guys can provide me with a little > guidance how to set that up...) > > I had some minor questions that got answered instantly by Dan and Co on the > mailing list. Thanks again! > > The ability to define aspects of the interface in the XML-layout files is > great (despite some minor quirks with the translation)! Studying the > TodoApp helps a lot in this regard. > > The not-so-great: > > I think the code base is still quite dynamic, which is good in a way > because it gets actively developed (does Dan ever sleep? ;)) but it's also > difficult for a noob to
Re: Adventures in Apache Isis...
Hi Deacon, It is a pleasure to read your success story! I am especially glad about the Wicket part of it! I don't remember questions about Wicket(Stuff) from you neither in Isis nor in Wicket forums, so it seems you did it all by yourself! This is great! On Fri, Jul 15, 2016 at 6:11 PM, Deacon Frost wrote: > I successfully delivered my first "real" Apache Isis application today -- > YAY!! -- and would like to share my experience. > > My background: I am a reasonably experienced developer proficient in custom > application development in C#, Java, Javascript, Python etc. but never > touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java chops > are a bit rusty and I am a complete Maven noob. > > I have been following NakedObjects since the early 2000's and am quite > intrigued by its philosophy and promises but never mad the "plunge" to > actually implement a project for a client with it. I checked out Apache > Isis on and off (hey, I even bought and enjoyed Dan's book in 2009 or so) > but - without wanting to sound blasé - the UI was never quite up to my > taste (the .NET-Version was even worse). But the recent changes to the look > and feel of the Bootstrap Wicket interface made me confident to finally be > able to "sell" it to clients. > Yes, reworking Isis to be based on Bootstrap was a good investment! > > The target application is - in a nutshell - an internal web-application for > a government department to define and configure traffic webcams (~1000), > locate them interactively on a map, display their latest images, link them > to their road network data etc. Nothing too complex but the right size to > try something new, I guess. > > The great: > I implemented a working prototype of the application in under a week(!), > which already looked very polished and had lots of "bells and whistles", > like a Google Maps interface, display of live images, Excel-export, > auditing-service, REST-interface etc.. The client was positively surprised > by the polished looks and richness of features and went for it. So, within > two weeks after that I was able to implement the complete application, > reusing most of the work implemented in the prototype. > > I had to implement two Isis wicket components: > - Display of a map (Locatable) based on OpenStreetMap: > I had trouble getting the Google map interface to work in the client's > environment. It kept complaining about application keys etc. and wasn't > usable at all. Thanks to the "wicket stuff" implementation of openlayers3 > and a shameless "raid" of Dan's gmap3-isis-component I was able to build an > openlayers3-isis-component myself, despite my utter isis/wicket noob-ness. > - Display of static image resources: > The "standard" Blob-interface didn't cut it for me because it only > displays a thumbnail image (which was even of a bigger byte size and lower > resolution than the original) of an image resource from memory/db. I was > able to build an Isis ExternalImageUrl-component by copying much of the > Blob/Clob-component but using static URLs, which works flawlessly for > displaying the original images based on an "ExternalImageUrl"-Property of > the entity. > > (Once the dust has settled I want to contribute the openlayers3- and static > image components. Maybe one of you guys can provide me with a little > guidance how to set that up...) > For OSM I think the best would be to create a new project similar to GMaps3 component at Isis Addons. For the image components - I guess the best would be to put them in Apache Isis itself. > > I had some minor questions that got answered instantly by Dan and Co on the > mailing list. Thanks again! > > The ability to define aspects of the interface in the XML-layout files is > great (despite some minor quirks with the translation)! Studying the > TodoApp helps a lot in this regard. > > The not-so-great: > > I think the code base is still quite dynamic, which is good in a way > because it gets actively developed (does Dan ever sleep? ;)) but it's also > difficult for a noob to jump in. I happened to work with the sources right > before the 1.12.2 release which had some annoying "surface" bugs and in > 1.13-SNAPSHOT some subtleties of the Isis-components implementation already > changed. > I18ln: > There are lots of labels hard-coded in English (I'm looking at you: > bookmarks-display, list pager, signin fields, excel download etc.) which > can be a real show stopper for certain clients in certain locales (France, > Germany, ...). Plus, if you want to fix these kinds of errors you need to > Please create tickets for all such problems. If we are not aware of the issues we won't fix them! > understand the Wicket-way of doing this plus the way Isis goes about it as > well. And then do it for the contribs also. Surprisingly complex for a > beginner even if they are by themselves all just small trivial fixes. > Documentation: > All in all the documentation is great and better than much of the
Adventures in Apache Isis...
I successfully delivered my first "real" Apache Isis application today -- YAY!! -- and would like to share my experience. My background: I am a reasonably experienced developer proficient in custom application development in C#, Java, Javascript, Python etc. but never touched Apache Isis nor Apache Wicket nor DataNucleus before, my Java chops are a bit rusty and I am a complete Maven noob. I have been following NakedObjects since the early 2000's and am quite intrigued by its philosophy and promises but never mad the "plunge" to actually implement a project for a client with it. I checked out Apache Isis on and off (hey, I even bought and enjoyed Dan's book in 2009 or so) but - without wanting to sound blasé - the UI was never quite up to my taste (the .NET-Version was even worse). But the recent changes to the look and feel of the Bootstrap Wicket interface made me confident to finally be able to "sell" it to clients. The target application is - in a nutshell - an internal web-application for a government department to define and configure traffic webcams (~1000), locate them interactively on a map, display their latest images, link them to their road network data etc. Nothing too complex but the right size to try something new, I guess. The great: I implemented a working prototype of the application in under a week(!), which already looked very polished and had lots of "bells and whistles", like a Google Maps interface, display of live images, Excel-export, auditing-service, REST-interface etc.. The client was positively surprised by the polished looks and richness of features and went for it. So, within two weeks after that I was able to implement the complete application, reusing most of the work implemented in the prototype. I had to implement two Isis wicket components: - Display of a map (Locatable) based on OpenStreetMap: I had trouble getting the Google map interface to work in the client's environment. It kept complaining about application keys etc. and wasn't usable at all. Thanks to the "wicket stuff" implementation of openlayers3 and a shameless "raid" of Dan's gmap3-isis-component I was able to build an openlayers3-isis-component myself, despite my utter isis/wicket noob-ness. - Display of static image resources: The "standard" Blob-interface didn't cut it for me because it only displays a thumbnail image (which was even of a bigger byte size and lower resolution than the original) of an image resource from memory/db. I was able to build an Isis ExternalImageUrl-component by copying much of the Blob/Clob-component but using static URLs, which works flawlessly for displaying the original images based on an "ExternalImageUrl"-Property of the entity. (Once the dust has settled I want to contribute the openlayers3- and static image components. Maybe one of you guys can provide me with a little guidance how to set that up...) I had some minor questions that got answered instantly by Dan and Co on the mailing list. Thanks again! The ability to define aspects of the interface in the XML-layout files is great (despite some minor quirks with the translation)! Studying the TodoApp helps a lot in this regard. The not-so-great: I think the code base is still quite dynamic, which is good in a way because it gets actively developed (does Dan ever sleep? ;)) but it's also difficult for a noob to jump in. I happened to work with the sources right before the 1.12.2 release which had some annoying "surface" bugs and in 1.13-SNAPSHOT some subtleties of the Isis-components implementation already changed. I18ln: There are lots of labels hard-coded in English (I'm looking at you: bookmarks-display, list pager, signin fields, excel download etc.) which can be a real show stopper for certain clients in certain locales (France, Germany, ...). Plus, if you want to fix these kinds of errors you need to understand the Wicket-way of doing this plus the way Isis goes about it as well. And then do it for the contribs also. Surprisingly complex for a beginner even if they are by themselves all just small trivial fixes. Documentation: All in all the documentation is great and better than much of the other stuff out there, but a lot of details are missing to really understand the concepts behind value objects, enum types, facets, objects not originating from a database and the like. Furthermore, there is not a lot of info or "hand holding" about how to take an application from prototyping to production. I had to spend a lot of time figuring out how to get a jetty runner working with an "uberjar" in headless mode as a service with "external" configuration (the internal Isis Server didn't work for me at all, but that might also just due to my inexperience). Wish list: - Better out-of-the-box handling of the display of external/static resources (Images, IFrames(!) etc.) - A component for pageable display of entity collections in a grid - A tree component All in all I definitely see Apache Isis as a great and clean