tags:

views:

2023

answers:

20

We all know the drill: You have a (small) model, you need to persist it, you need a UI for it (web, desktop, mobile, some of the former, all of them).

This is such a repetitive process that I can't help but wonder why we are still stuck with POJOs, OR mappers, and coding UIs from hand (since most UI "designers" don't even know about inheritance and you need to build every OK/cancel dialog with more than one field from scratch). RAD tools/platforms promise to fix that but I haven't seen anything real, yet. The idea of this wiki is to collect all the tools which allow you to flesh out an idea in a few minutes and build from there. Simple things (like creating a simple UI for your model or saving it in a database) should be simple. Attaching a fairly complex object to a dialog to edit it should take one line of code or less ;)

So here comes the challenge: What RAD tools are out there which allow to build a small app within, say, 8 hours. To give you an idea what it should be able to do, here is the spec:

  • You have "knowledge" nodes. Each such node has name and a long description attached to it (single line and multi line string)

  • Each knowledge node can have any number of knowledge nodes as children (1:* sorted parent/child relation). Child nodes need to maintain order (i.e. use a list, not a set)

  • Each knowledge node can have any number of tags attached to it (1:* unordered relation between different types)

  • Any two knowledge nodes can be connected with any number of relations (n:m relation)

  • It should be possible to load/save the model from/as XML and from/in a database with little effort

  • Users expect undo/redo today

The UI should offer the standard operations: Create, reorder and delete knowledge nodes. Reordering should use drag'n'drop. It should allow to add/remove tags from the knowledge nodes. There should be a simple way to connect two knowledge nodes by a relation (say by dragging one node on the other in a special mode).

The UI should also allow to search for nodes with certains tags or relations. For bonus points, it should offer a simple way to navigate the relation graph.

Anything up the challenge? As usual, OSS preferred.

Background: I'm developing software for more than 25 years, now. Still, this simple application takes several weeks if not months to code in any language which I've encountered so far: Groovy, Java, Python, Tcl/Tk, Grails, OpenOffice, MS Access, TreeLine, [TurboGears][10], [Enthought Traits][11], .net.

Some feedback on the contenders. Note that I try to highlight the main point in a single sentence, so take the next section with a grain of salt, OK?

Groovy Nice language, compact code. Close but lacking in the UI department. They are working on it but just not there. For persistence, only Java serialization out of the box.

Java Java was great when it came out ten years ago but it hasn't evolved that much. It's an aging language with a vast set of libraries but you just need too much code to get things done and each line of code takes time to write.

Python Got almost all what it needs but for some reason, it never really became as mainstream as, say, Java. Got a nice UI set with PyQt4, a cool OR mapper with SQLAlchemy but still, we don't see it kicking the throttle to full speed an pull ahead. Only with the advent of unit testing, it became feasible to write bigger projects. Too low level for the task.

Tcl/Tk Nice widget set but the language sucks when the code size grows past a certain point. Shows its age by now.

OpenOffice Since 2.0, OO comes with a built in database and an "Access-like" tool. It's in its infancy but they'll get there ... eventually. Couldn't handle parent/child relations because the UI doesn't allow to specify them (see bug). Fixed in 3.1. With 3.1, you can create the model but the UI would still take a lot of time writing.

MS Access Almost anything we'd need but the UI options are pretty limited. Frustrating.

TreeLine No way to implement relations and too restricted for most other use cases (you simply can't do much else with it)

.net I have no experience with this one, mainly because it's Windows only. I think that this one could be pretty close but let's face it: What is the point of locking out a quarter of mankind?

+1  A: 

Magic uniPaas: used it at my very first job to develop GUI's. It's a no nonsense RAD Tool, where everything is table based. It also provides a runtime environment. Back then it was called Magic eDeveloper.

Gerrie Schenck
Can you do a desktop only app with it? (i.e. no server needed)
Aaron Digulla
I tried to follow the online course (which you can download from their web site) but it requires MSSQL Server 2000 or later.
Aaron Digulla
+6  A: 

It depends on who your market is. I can tell you one thing, your market will never consist of the whole of mankind. So that fact that maybe 25% of the people on the planet don't use Windows shouldn't really matter to you.

What matters to you is how many people in your market use whatever OS? If you're writing a business/financial application and you only develop for Windows, then you're probably only leaving out about .05% of your market (because when is the last time you heard of an Accountant that uses Macs or Linux?).

However, if you're writing a program for producing music (like FruityLoops) and you write Windows only then you're probably leaving out more like 50% of your market.

wizlb
I agree with your thoughts, but that's a different story. If I don't have the tool, I can't deliver. So I'd like to keep the market question out here.
Aaron Digulla
@Aaron Digulla: If you don't have the tool, then your best bet is to get the tool. Visual Studio Express for .NET is free.
George Stocker
A: 

This answer isn't directly related to your question, but is similar. For my projects, the closest thing that I've used is NEsper, which is an open-source complex event processing framework (CEP). Over the last two evenings I've built a backtester for a trading system that I'm putting together, and it's been NEsper that has made it so quick - I imagine that I did it within your 8 hour target.

endian
Do you have a link?
Aaron Digulla
Sure: http://esper.codehaus.org/about/nesper/nesper.html
endian
A: 

REALbasic's a RAD tool tool - its compiler produces native executables. And it's a cross-compiler as well, which means you can build from any platform for any platform.

Full database access is only supported in the Professional Edition (at EUR 400). The personal version comes at EUR 75 and can connect to REALSQLDatabase (which also from the RealSoft guys).

Unlike with Hibernate or SQLAlchemy, you must write the DB layer yourself.

Galwegian
I agree that it's RAD - but can you write the app I spec out in under 8 hours, incl. database persistence?
Aaron Digulla
+8  A: 

Delphi RAD Studio and Lazarus IDE for pascal/delphi language.

dmajkic
Is Delphi still Windows only? There once was a Linux version. Is that still available?
Aaron Digulla
In which language is the Lazarus IDE written? I ask because the site says "chose your own UI" and the IDE doesn't look like any UI which I recognize.
Aaron Digulla
Kylix (Delphi for Linux) no longer exists. There is Delphi Prism now which is Delphi for Windows, Linux and Mac but the IDE is Visual Studio and thus Windows only.
Robert MacLean
@Robert MacLean: Can you please post a link to an application created with Delphi Prism that looks and feels Mac-like? I doubt that those exist, but am really curious and happy to be proven wrong.
mghie
Lazarus is written in Free Pascal. You can find source URL on site. Free Pascal Compiler is native cross-platform compiler, supporting Linux, Mac, 64bits, Delphi syntax and so on.
dmajkic
@mghie Delphi Prism APP http://dn.codegear.com/article/images/39017/03000005.pngFull articlehttp://dn.codegear.com/article/39017
Cesar Romero
@dmajkic: What library do they use for the UI? Delphi's? Is there an overview of the widget set? I couldn't find anything but the screenshots on the website.
Aaron Digulla
+2  A: 

I guess that WinDev follows the RAD idea,too.

Note: Runs only on Windows, prices start at EUR 990. Comes with a wide range of tools.

BloodySmartie
I agree with WinDev. It is very easy to build an app esp with DB. I hate its proprietary DB though. And it seems to support two way communication between its UML only if we use its proprietary DB.
Yogi Yang 007
+1  A: 

Netbeans's Matisse visual editor is great for Swing development .

Geo
That's hardly RAD :) What about the DB layer? Quickly creating a UI for a model? Creating a model which supports undo/redo, spell checking, etc. etc.?
Aaron Digulla
+2  A: 

Visual Studio - Hands down the best RAD studio there is. If you think that it is not only used for Microsoft's development tools, Delphi Prism uses it, and the SQL Management tools for SQL Server all use it you get an idea of the flexibility of it. It's also free (The RAD tool/IDE - not the development tool).

Robert MacLean
Is SQL Server also free? If not, I have a RAD tool without a database ... :/ How well does it work with other DBs, like MySQL? Is it possible to create the app outlined above and sell the result without paying royalties to MS?
Aaron Digulla
Part 1: Some editions of SQL Server are free (express and developer for instance). The SQL Server management tools are for SQL Server only, but the Visual Studio IDE could be extended to other DB's if wanted.
Robert MacLean
Part 2: It is possible to either create the application using the Visual Studio development tools or to extend the redistributable version of Visual studio to do what is described and sell it without paying royalties.
Robert MacLean
-1 For RAD you want an object image like smalltalk.
Stephan Eggermont
A: 

Grails is a framework to quickly build web applications. It's based on Groovy. You define the model, run two commands from the command line and you're set with a simple CRUD UI where you can edit your model in a web browser.

Web only, a lot of nice ideas but you can't have parent/child relations because of this bug which will hopefully be fixed in 1.0.5 release. For serious development, you will need one of the AJAX/Rich Client plugins because Grails doesn't come with very powerful widgets.

Aaron Digulla
A: 

TurboGears is a framework to quickly build a web application using Python. Main features: You define the model, TG creates everything else which can then adjust to your needs. Changes in the model need a restart of the development server, everything else happens at the next reload in the web browser (TG will let you knew when you need to restart).

A big step forward, especially the 2.0 release (which should come out "real soon, now" - no offense, guys, I know you're hard working on this for several years ... but no TG 2.0 for me for several years, either :( ) Web only, though. So we'd have to implement all the drag'n'drop ourselves, find a way to paint a navigable graph. Frustratingly close.

Aaron Digulla
A: 

Enthought Traits is a great framework to build a default UI from a model. Easy to use, powerful, the default case is the one you want most of the time and it does what you expect

But there is no database persistence. In fact, no persistence at all. You have to write the code to save/load your model yourself. Doing that for XML is pretty simple (there is an abstract API which works for any object in your model), so you just need to write one class with, say, 50 lines of code, no matter how complex your model is.

The UI controls are not easy to extend, so if you need something which doesn't come with it, good luck.

The model mentioned above can be implemented in under one hour, another hour to read/write it from/to XML. The graph navigation for the relation will take a couple of days using the canvas widget from Qt.

Aaron Digulla
A: 

Boa Constructor is a cross platform Python IDE and wxPython GUI Builder.

It's listed as a cross platform RAD on Wikipedia but my guess is that it's more an IDE (instead of something where you can build the app outlined above in a few hours).

Aaron Digulla
A: 

Panther (and it's OSS version POSSL) seems to be a framework to build web apps. I couldn't get it to install since it only comes with a Unix shell script as installer. Has anyone else experience with this? Please edit this entry then.

Aaron Digulla
A: 

I think nbandroid is worth to be mentioned. Its a RAD tool for developing Google Android Software using NetBeans IDE.

BloodySmartie
+1  A: 

Clarion (http://clarionfolk.com, http://softvelocity.com).

I could/can get a demo banged together for a project like this in a matter of hours.

One perspective deficiency is that it creates Win32 executables. Of course, this can be solved by creating a web system with it.

Another is that Clarion is definitely not open source. Which would put a lot of folk off.


Okay. My last comment was about 2 hours ago. So in that time, here's what I managed to get done in Clarion.

http://125.214.67.190:5824/

I'm not writing this to brag. I honestly believe Clarion can do amazing things in a very short period of time.

The "Knowledge" system is very much a demo. You can only add Tags and Relations to the parent Nodes. There isn't a proper Tag/Relation search (only singular). No images or decent graphic design or UI.

But the framework, the foundation is there.

Stu Andrews
Can you please delete this and add it to the Clarion entry instead? This way, we have one item per RAD tool :)
Aaron Digulla
And I wish more people would do this to show off their RAD tools. I mean they are meant to make this a snap, aren't they? :)
Aaron Digulla
Aaron, heh heh Yup! They are meant to make this in a snap :)
Stu Andrews
A: 

Lazarus LCL is a Delphi like VCL over existing widget sets.

It can be GTK1, GTK2, QT, Win32/64, WinCE and Carbon. There are others (like a COCOA bridge) but those are mostly only in their initial stages.

Marco van de Voort
A: 

Visual DataFlex is a great RAD tool that we use. It's specifically target at creating database driven business applications. It's unfortunately not free, but it is a great environment/language and Data Access gives good support.

Anders Öhrt
It has personal edition which is free. Check it out.
Yogi Yang 007
A: 

Qt Toolkit, found at: http://qt.nokia.com/products, for C++ cross-platform GUI development is also excellent for desktop and mobile application building.

Israel ANY
Wait. You have just used RAD and C++ in the same sentence? :)
Marek
+1  A: 

Microsoft Lightswitch. It is hard to imagine anything "more rapid".

Marek
So how long did it take to implement the project outlined above?
Aaron Digulla
A: 

DragonRAD was just announced for Blackberry App development. In closed beta right now.

sp0rus