Posted by felipegaucho
on June 13, 2007 at 5:07 AM PDT
Imagine you are starting a new project and you can adopt anything you want to produce a web-application or a desktop client. What kind of technology would you prefer? Why?
The core of the Footprint Project is alive, and during the next few days I will be organizing
a minimum documentation in order to publish the first stable release. The current snapshot is
able to generate and sign PDF documents through a concise code - a very good beginning considering
the scarce resources of the project. Now it is time to check the outlook and to start discussing
the more advanced and valuable features of the project, as follows:
- To generate a web-service for validating the generated certificates.
- To generate a client to the web-service
- a web-application
- a desktop or rich-client application
I am here playing this fortune teller role in order to guess the chances of the new technologies
to survive along the time. My crystal ball is displaying a mix of old labels and novelties like jMaki, JavaFX,
Netbeans, Glassfish or EJB3 for example. Some of these technologies are already materialized in
the software market, other ones are just whispering good features, prospective ideas waiting a chance
to be adopted.
We all play these mind games some times, and we know every Open Source project based on pure
collaboration - no financial support and very small teams -
need some kind of special attraction to be noticed by the Java community. So, our task now is to
check the horizon and bet on the winners.
The early adoption of new technologies is a strategy to give the project a chance to survive along the
time and also a better
chance to be adopted in real world scenarios. My past experiences taught me this strategy works, but
it is also very risky and several good ideas suffer premature death due to the excess of effort
required by the learning curve and the absence of mind share around the new concepts.
In the other hand, it is not worth basing a project with medium marketing appeal in old and stable
technologies because it ends like a scholar work: beauty, nice tailored but extremely boring. That kind
of project everyone knows how to do but nobody has time to do, so your project is just something easy to
be done and it will probably be overlapped by other project with the same nature - eventually with more
resources or just a better pedigree.
The innovation dilemma
Now we have to think about the classical dilemma in software design:
How to design a software that will be innovative, useful by
its robustness and easy to maintain with scarce resources?
I will leave the answer for you, I have my own concepts about that but I prefer to wait your thoughts
to not influence your suggestions.