Freetle is copyrighted by Lucas Bruand.
Freetle is a Open sourced toolbox to write high performance Data transformations. It can be used as an ETL, using specifically developed connectors. (For instance database connectors) Freetle is written in the Scala language and compiles to Java bytecode.
Freetle is progressing at a very good pace. A first release candidate is planned at the end of this year.
Freetle is a contraction of Free ETL. An ETL for Extract Transform and Load is a software tool used to transfer/transform datas (usually large chunks of it) from one system and one form to another system and another form.
Those who are dissatisfied with existing transformation tools like XSLT. Freetle hopes to bring both simplicity of programming with advanced performance and modularity. Freetle favors Agile programming : It put emphases on Testing, Refactoring, Tooling. Java programmers will feel at home and be immediately productive. Rather than selling bells and whistle in the form of a visual IDE and intuition, Freetle leverages existing knowledge, tools, methodology daily used by Java developers. It promotes simplicity, modularity, openness and established programming methodology to achieve your goals.
Because it relies on Scala, Freetle's design is oriented toward a tried and true approach of making software :
- Freetle boasts seamless integration with Java. Thus it is easy to package and reuse.
- Freetle transformations are developed in a Textfile oriented vanilla programming language rather than an exotic binary/XML programming language (Compare XSLT).
- Built-in plugin IDE support both for Eclipse and Intellij Idea with navigation both inside Freetle transformations and with Java code.
While bringing in major new ideas from the functional programming world :
- Combinators and DeSL
- Lazyness and Streaming
Ultimately, Freetle's goal is to stay forever :
- Free
- Open-Sourced (Apache 2.0 license)
- Scalable
- Robust (in the sense that it will be easy to debug, refactorable and change-proof)
Freetle is deeply indebted to giants:
- The Scala language being the most evident
- The Haskell language that triggered the scala effort
- HaXML for proposing XML transformation combinators.
Freetle Transformations are expressed in the Scala language with syntactic sugar from the Freetle library. In effect, transformations are expressed as algebra expressions of unitary transformations and operators. This bottom-top approach, called combinators, gives almost infinite expressivity while retaining simplicity. With Freetle, the basic concepts to understand are few, simple, already well established in the functional software industry. Moreover, this approach gives the ability to write meta processors that transform completely a transformation into another.
Freetle transformations are stream-oriented programming : Meaning that the XML document is viewed as a stream of (STAX) XML events. This goes contrary to most transformation systems in which Documents are viewed as trees. Stream oriented programming is theorized as being faster but harder to program. Thanks to Freetle's use of combinators, Freetle transformations are not harder to program than typically tree-oriented transformations such as XSL-T.
Freetle is bent to develop a set of connectors to technical systems such as :
- Databases (via JDBC)
- Message Oriented Middleware (via JMS)
- Content Management Systems.
Rather than redeveloping everything from scratch, Freetle is standing on the shoulders of giants : the Scala language. As a result, much of the tooling for development is pre existing:
Eclipse has scala-support in the form of the Scala IDE
Idea has scala-support in the form of the Scala Plugin for Intellij IDEA
HaXML is a collection of many utilities for parsing, filtering, transforming, and generating XML documents using Haskell. Freetle heavily draws on HaXML and combinators from Haskell.
XSLT is the w3c initiative to standardise a XML transformation langage. There are a number of quality and opensource implementations in the java world. The main problem of XSLT is that it is tree-oriented and thus it implies that one cannot transform large documents easily. The input document is effectively first loaded into memory. XSLT suffers from the use of XML programming language which makes develop awkward and difficult (it lacks a proper IDE etc...).
STX/Joost is an open source initiative to go beyond the large document problem inherent to XSLT. It is relatively slower than XSLT and lacks a number of features.(mainly a sort)
Keep in mind that :
- XSLTC does not transform documents of arbitrary size whereas Freetle does.
Freetle compares very well with STX/Joost. ( Measured in our benchmark at 4,13 Mb/s )
See the document Getting Started..
Freetle is licensed under the Apache License 2.0 (See attached).
Freetle is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.