JAnnotation originated from a personal need of having some kind of system to organise everything that went through my mind so that I could go back to it exactly when I needed to and exactly what I needed at each moment. I, as many other people, have ideas pop on my mind on the strangest and most difficult moments, have long-term ideas that we, some day, want to execute and have a strange and heterogene agenda which is at times hard to remember with a bad memory for appointments. Conventional agendas or regular annotation systems, such as post-its, would not fill my expectatives. Conventional agendas are too time-based, and, as regular annotation systems, they require you to browse through all the annotations to find what you're looking for at a specific moment. Sure thing, you can cathegorise, order and repeat annotations, but this is both tedious to do and inefficient when the complexity of the annotations reaches a certain level, such as annotations being able to be "sorted" by their urgency, by the time at which they occur, if they are time-bound, by the type of annotation it is (an idea, an appointment, simply something hard to remember that you want to note down like passwords, etc), and another thousand ways.
This is what JAnnotation offers, the ability to organise in many different ways, all in one place, by simply specifying what properties each annotation has and using criteria to obtain exactly those annotations you are looking for, depending on the properties you previously explicitated about them.
After thinking about it for some weeks and starting designing it, I quickly realised that what I was really thinking about is nothing but a database paradigm, applied to annotations. However, using these ideas for databases have other implications, such as volume of the data, efficiency of the queries, etc. Thus, I left this generalisation for future considerations and developed the actual annotation engine.
Since the initial motivation to develop JAnnotation is for personal use, I created a command-line interface which is easier and faster to develop, more efficient to use for someone who knows how to, and comfortable enough for myself. I am however aware that a graphic user interface is a much more attractive and usable interface for 95% of the potential users, and have plans to eventually develop such, even though at the moment I prefer to spend my development efforts on improving the engine so that it is more powerful and it brings new ideas. Another point to make regarding this is that the command-line syntax can and will be used as a networking protocol to allow for centralised through-the-net usage of the engine, sharing of agendas and the like, so it is not a wasted effort at all.
Regarding the actual syntax chosen for the command-line interface, ever since I learned Common Lisp, even though the actual language wasn't what I most liked in the world, I loved the simplicity, power and efficiency of the syntax, which became very natural and regular to use once you earned some experience with it. That is the reason that, at some point during the development of the command-line interface, I decided to switch to LISP-like syntax.
With this, I believe I have summarised pretty much everything that is behind the development of JAnnotation as of now. The reason to write this down is both to gather the attention of people with similar organisation problems, software development interests and to explain what is behind all to focus the conversation and discussion on possible improvements and changes to JAnnotation around the actual idea, and not something remotely related.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
JAnnotation originated from a personal need of having some kind of system to organise everything that went through my mind so that I could go back to it exactly when I needed to and exactly what I needed at each moment. I, as many other people, have ideas pop on my mind on the strangest and most difficult moments, have long-term ideas that we, some day, want to execute and have a strange and heterogene agenda which is at times hard to remember with a bad memory for appointments. Conventional agendas or regular annotation systems, such as post-its, would not fill my expectatives. Conventional agendas are too time-based, and, as regular annotation systems, they require you to browse through all the annotations to find what you're looking for at a specific moment. Sure thing, you can cathegorise, order and repeat annotations, but this is both tedious to do and inefficient when the complexity of the annotations reaches a certain level, such as annotations being able to be "sorted" by their urgency, by the time at which they occur, if they are time-bound, by the type of annotation it is (an idea, an appointment, simply something hard to remember that you want to note down like passwords, etc), and another thousand ways.
This is what JAnnotation offers, the ability to organise in many different ways, all in one place, by simply specifying what properties each annotation has and using criteria to obtain exactly those annotations you are looking for, depending on the properties you previously explicitated about them.
After thinking about it for some weeks and starting designing it, I quickly realised that what I was really thinking about is nothing but a database paradigm, applied to annotations. However, using these ideas for databases have other implications, such as volume of the data, efficiency of the queries, etc. Thus, I left this generalisation for future considerations and developed the actual annotation engine.
Since the initial motivation to develop JAnnotation is for personal use, I created a command-line interface which is easier and faster to develop, more efficient to use for someone who knows how to, and comfortable enough for myself. I am however aware that a graphic user interface is a much more attractive and usable interface for 95% of the potential users, and have plans to eventually develop such, even though at the moment I prefer to spend my development efforts on improving the engine so that it is more powerful and it brings new ideas. Another point to make regarding this is that the command-line syntax can and will be used as a networking protocol to allow for centralised through-the-net usage of the engine, sharing of agendas and the like, so it is not a wasted effort at all.
Regarding the actual syntax chosen for the command-line interface, ever since I learned Common Lisp, even though the actual language wasn't what I most liked in the world, I loved the simplicity, power and efficiency of the syntax, which became very natural and regular to use once you earned some experience with it. That is the reason that, at some point during the development of the command-line interface, I decided to switch to LISP-like syntax.
With this, I believe I have summarised pretty much everything that is behind the development of JAnnotation as of now. The reason to write this down is both to gather the attention of people with similar organisation problems, software development interests and to explain what is behind all to focus the conversation and discussion on possible improvements and changes to JAnnotation around the actual idea, and not something remotely related.