On tools, CAB and EJB

Glenn Block has a post that does a lot to explain why the CAB is complex.

I just wanted to share the way I think about complexity, if you need a tool in order to effectively use a piece of software, then you are already in a losing position.

Print | posted on Monday, May 28, 2007 8:21 AM

Feedback


Gravatar

# re: On tools, CAB and EJB 5/28/2007 9:00 AM Glenn Block

Actually you don't NEED SCSF in order to effectively use CAB. SCSF simply makes CAB easier to approach, and takes care of some of the repetitive tasks involved with building a CAB application. The larger percentage of our customers that use CAB do NOT use SCSF. Mostly these are customers who have been using CAB since before SCSF existed.

As to the tooling, does not Monorails use tools? I seem to remember from a videocast that there are a bunch of nicely integrated IDE tools that allow you magically drag and drop your datasource in order to create your model. Is this tool "needed"?

Should we should also assume that Eclipse, JBuilder, Visual Studio are in a losing position as they all provide tools?


Gravatar

# re: On tools, CAB and EJB 5/28/2007 9:30 AM Ayende Rahien

I was called names because I evaluated CAB without the use of SCSF. I assume that this is because it significantly changes the experience of using it.

MR doesn't really have any tooling. There is a new project wizard, but that is it.
There is Active Writer, which is a DSL for Active Record, but it is not needed for model-first approach (recommended). For data-first approach, it can save a lot of time, but I often do this manually as well (I only ever inherit weird schemas :-) ).

I mentioned EJB in the title, but forgot to mention it in the post body itself. That is the embodiment of "let us cover the ugliness with tools" approach that didn't work.I definitely think that the tooling provided by the IDE sometimes tries to hide ugliness underneath. Entity Framework is a good example for VS, EJB for Eclipse & JBuilder.

I write applications in notepad + command line, I am weird, I know, but I feel that I should be able to do this without wanting to gnaw body parts as a result of the frustration. (BTW, that is also a reason why I don't really like C# without an IDE, and why I can do Boo in notepad.)

> takes care of some of the repetitive tasks

Is there a reason that the framework can take care of this? (True question, not a jab.)


Gravatar

# re: On tools, CAB and EJB 5/28/2007 10:20 AM Glenn Block

"I assume this is because it signficantly changes the experience of using it"

It makes things simpler and means you need less knowledge of the API to get off the ground and running.

"There is Active Writer, which is a DSL for Active Record, but it is not neeced for model-first approach (recommended)"

In the same way our tooling is not needed, though recommended :)

"let us cover the ugliness with tools"

I am not a fan of this approach as someone ends up maintaining the code that the "tool" spits out.

"Is there a reason that the framework can take care of this? (True question, not a jab.) "

Sure, the framework (Application blocks) does a lot of this already. In SCSF / WCSF, the codegen is NOT the framework, the codegen basically creates skeletal projects and classes in a standardized fashion. The classes do not have a lot of code. At the end of the day regardless of how rich a framework is, you usually still end up having to write some starter classes that implement certain interfaces or perhaps inherit from base classes, or you need to implement certain patterns of method invocation, etc. You also may have some wiring to do by hand. Most of this is repetitive stuff that’s just part of using a framework. The recipes in our factories simply go a bit further and help you to build this “stuff”.

But again, it’s not a requirement that you use them. For example all of our quickstarts and RIs were not created using the recipes. We simply call CAB and CWAB directly.






 re: On tools, CAB and EJB 5/28/2007 3:03 PM Mike D

@Oren

Why did you write a configuration tool for your build scripts?

"If you are a developr and you have some pain points, fix them, it will be well worth it. "

Is xml mapping in nHibernate not a pain point? Why not have a great tool in this space to reduce the pain, I would also argue that attribute declarations are another pain point that deserve at good tool.

DSL Tools are perfect for both in both of these spaces, you get a nice visual overview of the model and can incorporate validation and other funtionality that reduces pain as needed.

Software Factories on the other hand, are very intrusive as they generate entire solutions, but with a DSL it's very specific and you can edit save and your done.

None of these tools exist in any usable form yet, but I would suggest that if the Agile approach were applied to the development of these tools they would appear and evolve quickly.

ActiveWriter is the best example so far of a DSL Tool in the nHibernate/ActiveRecord arena. It just dawned on me yesterday that ActiveWriter is a tool under development for Agile software, that is being developed with a less-than-agile approach. No offense intended here it's simply an observation, get the core running and evolve one feature at a time.


Gravatar

# re: On tools, CAB and EJB 5/28/2007 4:37 PM Ayende Rahien

@Mike D,
> Why did you write a configuration tool for your build scripts?

Notice that the scope of the took is extremely limited (by design), it is merely there to help me, and it is utterly useless to someone that wouldn't follow the same conventions as I do.
It is also not something that can be used to build the build scripts.

> Is xml mapping in nHibernate not a pain point?

Somewhat, depending on exactly what you are doing.

>I would also argue that attribute declarations are another pain point that deserve at good tool.

I would argue otherwise, that having attributes is freeing me from having the pain of dealing with a tool, and that it make the code / database easy to refactor and work with.

> ActiveWriter is the best example so far of a DSL Tool in the nHibernate/ActiveRecord arena. I

AW is very very cool, but it doesn't really fit the way I work for most projects. I like one-way code gen features, not two ways.

Comments have been closed on this topic.