Questions & Answers

General questions

Is Marbles free software?

Yes. Tiny Marbles is released under the Apache License 2.0 and you can use it any software you write.

How do I get involved?

Join our forum! This is a great resource if you have a question, or just want to know how to get started. It is also the best place to find the Tiny Marbles developers and solve your doubts.

Also Submit Issues. Found a bug? Want a feature? Let us know! I think you will find the development team to be very responsive.

Where can I send a question?

On the bottom of every page in this website, or in our Blog. But since you asked, here's another link.

Are precompiled binaries available?

Yes, you can find them in our donwload session

How do you make money with Marbles?

Short answer: we don't. Long answer: we save time and costs on the projects we do on our day jobs. We can invest more resources on the GUI because the backend is so easy and thus deliver better products. Also, if a lot of people start using Tiny Marbles, other people will start following our philosophy and the world will get better. Besides, money isn't everything. We value our fun and not working saturdays too.

Marbles usage

Is Tiny Marbles a RAD tool?

No, it isn't. Marbles is focused on productivity, clarity and fun, but it is just a persistent repository. You could base your whole domain model on dynamic objects, but you will still have to develop the business logic and the view by yourself.

What projects work best with Tiny Marbles?

Projects that require a dynamic data model are great, as well as projects that need to define or modify persistent types at runtime. Projects for which you don't know the data model at the time you start, or where performance bottlenecks will appear, or what kind of data you will need to persist. These are also easier developed with Marbles. Last, projects that you want to develop at lightning-speed release cycles, increasing and modifying the functionality as you go also benefit from our user-centric API.

Where do I put the business logic?

Your behaviour must be separated from the actual data. In an ideal world, you would use duck typing for it. For instance, any object with an attribute called "lastModified" of type DateTime could be used in a logic that manipulates this attribute. We suggest that you use the Command pattern for of your logic whenever possible.

How can I combine my applications?

In Tiny Marbles all objects are instances of the PObject class. That means you can load "something" without caring what it is.
Here is the line of code that do that:

PObject someObject = getRepository.load(id);

Take a look: you just have to pass an id.
If you have several applications working with the same repository, they can share their data, load and change each others PObjects without the risk that the system crashes. You don't need to add any reference to new libraries.

The objective is to be able to combine different applications at will, modifying the structure of the persisted data while retaining the general contracts they are used in. Here’s an example: An address book application A declares a Contact type with, for example, first name, last name, e-mail, etc. I want to combine A with another application B, a great Meeting Planner that declares a Meeting type. That way the application B can read the Contacts from A and establish relationship from A Contacts to B Meetings without any problem.

Persistence details

How do you store the data?

Our metamodel is persisted using Hibernate. We use a Rich Domain Model to guarantee data consistency and the smart functionality present in the basic objects. See the javadoc for the package org.tinymarbles.model.

Can I give Marbles a Java Class and it will map it for me?

No. Tiny Marbles users should create their data model without thinking of classes. If you do want to map a real class, Hibernate already provides this functionality very well. You can add a mapping to the hibernate.cfg.xml file distributed with Marbles and proceed normally. It's even possible to add mappings between Marbles objects and plain old Java objects, just like any Hibernate mapping. Since Tiny Marbles 0.9, there's very little need for such work, though. It's possible that you'll never need them.

What is the difference between Tiny Marbles and Hibernate?

Marbles uses Hibernate internally to handle the persistence of the metamodel and querying. We believe that our querying API is more fun to use and produces cleaner code than Hibernate's Criteria API. You can use duck typing and evolve your model at runtime, something that Hibernate doesn't do (yet?). Finally, Tiny Marbles handles all as session and transaction clean-up for you, so you can focus on the business logic development.

Please send us comments, questions, criticism:

Please send us comments, questions, criticism!