Turning your Android device into a VERY powerful graphing calculator. Usable by anyone, useful to everyone. Octave+gnuplot+Android.
Now that its over:
Despite not meeting our collective goal, the work will continue. Please consider providing funds more directly to the project by going here:
The money will be used for the same purpose. I will continue to provide rewards based on the same reward structure with these exceptions. No rewards requiring funds to generate. Specifically, no t-shirts will be provided (I will figure out a way for people to buy them at a reasonable cost later through someone else). Also, anyone who contributes any amount of code or $$ will get listed as a contributor... no minimum.
Ready more about the campaign wrap up here:
In short, it will make Android devices like VERY powerful graphing calculators, but really there is so much more. Simple enough to be usable by anyone and powerful enough to be useful to everyone. This being funded will allow this to become all that is promised and be free and open source for everyone forever.
Going to (more than) port Octave and gnuplot to Android, providing them for free and ad free through the Android Market. This will greatly benefit math, science and engineering students and professionals all over.
If you are not familiar with Octave, check this out: http://www.gnu.org/software/octave/
If you are not familiar with gnuplot, check this out: http://www.gnuplot.info/
Or, you can just watch the project video. If you don't see a play button above, you can go here: http://youtu.be/a21UJ5RMjus .
If you are wondering, a sombrero is the image you see as the project logo (not just a hat). It used to be the logo for Octave.
- Octave working on Android built with all required dependencies packaged as a free and ad free app in the Android Market.
- gnuplot working on Android built with all required dependencies packaged as a free and ad free app in the Android Market.
- Source code published openly.
- Push changes back as patches to Octave and gnuplot development teams after they are stable and debugged.
- Basic touch interface that looks like a terminal for Octave port. Basic m-file editor.
- Basic touch interface that looks like a terminal with additional plot windows for gnuplot port. Plot windows are not interactive at this stage.
- Octave and gnuplot ports hooked together through a socket (of sorts).
- Support, bug fixes and feature requests (won't grant all feature requests of course).
- All optional dependencies built into Octave port that are built into Octave releases.
- All optional dependencies built into gnuplot port that are built into gnuplot releases.
- All packages built into Octave port that are built as part of Octave-Forge releases. Reasonable way to add packages to device.
- Better touch interface for Octave port. Including fully debugged customized keyboard, significantly enhanced m-file editor, variable viewer/editor and history viewer. Various settings/preferences that will allow you to customize the look and behavior of the app.
- Better touch interface for gnuplot port. Including intuitive zoom, pan, etc.
- Prove interfaces across a range of screen sizes and other device parameters.
- Provide intents for other applications to take advantage of the capabilities provided. Meaning other apps can use these as their plot or math engines.
- Put all libraries and executables that this project is dependent on in an easy place for other developers to grab.
- Provide the standalone toolchain necessary for repeating this work by others. It is the NDK toolchain with modifications.
- Provide scripts that make updating which version of Octave is used under the hood is used easier.
- Blog about interesting issues encountered or lessons learned along the way.
- Port upcoming Octave use of OpenGL for plotting to Android.
- The sky is the limit...
If we get past the funding limit, exciting features will be added like reading sensor data for use.... Think of all the fun physics experiments you could perform.
When do I plan on getting there:
Fall 2012 - Octave, gnuplot mostly ported with basic interface in place.
Fall 2013 - all deliverables.
How obtainable this is and how quickly this actually occurs depends a lot on you.
How do I plan on getting there:
As mentioned in the project videos, I already have a release proof of concept of Octave running on Android. It can be enabled from the Settings->Preferences->Enable Experimental Interpreter option in the app called Addi, https://play.google.com/store/search?q=pname:com.addi . I also have a proof of concept of gnuplot built for Android running locally (there is some work to do on the interface before that can be released). But, going from a proof of concept to a finished application with all the deliverables listed being met is not a small task. Now that I have the proof of concepts finished, along with some other experiments I have done to prove feasibility, I can focus on driving towards completing the deliverables listed. The rate depending on the funding received, I will focus time and work through the list, providing releases at key points in development. Time will be set a side for support, bug fixes and some feature requests.
Why $50,000 dollars:
The reality is I am working on this project anyway. I am passionate about it and will achieve many of the deliverables over time regardless. What the money allows me to do, is to make some work/life changes to make this happen at a much accelerate rate, with higher quality and better support. Kickstarter is also an all-or-nothing program. If you don't meet your goal, no money is transferred. So, $50,000 is the minimum necessary for me to make changes that will noticeably improve the trajectory of the project. Ideally, we will hit a number that is much higher than this, which will allow this to become something truly awesome. Anything above the goal will be used for this project. Nearly all money will be used to pay for development time. I hope people find as much value in this as they have for funding some recent games on kickstarter, if so, this will be something truly great.
Android is the fastest growing market and is not slowing down. Also, Android is used increasingly in education, especially in developing counties. If we want free software to have maximal impact, especially with students, then we should get it on Android.
You may be a user of my apps already and want to see this get the kickstart it needs to become something significantly better.
You may not have heard of my apps before, but want this capability available for you mobile device.
You may be a university or corporation that would like this for all of your students or employees.
Maybe you are a user of Android and could see how this could be used by other apps to make them better.
Maybe you are a fan of free software and want to see a big win for free software, because this will be better than anything that is out their for Android and Android is the fastest growing market.
Maybe you are just a kind person who sees how this will help others out.
Students and professionals in math, science and engineering. I know some have said it would not be interesting to program without a keyboard or on a smaller device, but people are already doing it and have positive feedback. I understand this is and will be a challenge and to that end improving the GUI will remain a priority throughout the project to mitigate this. Also, for not a small number of the users, a cheap Android device is their only device. So, if you are a student in India and the Aakash tablet is all you have, this is very useful.
Give money, but you probably already figured that one out.
Tell other individuals, Google+, Facebook, twitter, email etc.
Tell the appropriate people at your company or university.
Tell blogs, slashdot, reddit, etc.
Tell the company that benefits most from this... http://support.google.com/contact/bin/request.py…
Use the app over time and provide feedback/bug reports/feature requests.
Contribute code. This doesn't help with the Kickstarter campaign, but it will help in the long run. The goal is to get this to be a community run open source project, like the rest of Octave and gnuplot.
There will be very little overhead (I don't need hosting, I don't have staff, I don't need an office etc), so really all the money is to buy my time away for other requirements. I am not looking to get paid for work already done and I am not looking to get rich off the work I am going to do. I just want to be able to put the time into it that is required to do what I have promised and reality requires some funding for that.
I am just one person and this is not my focus. The largest barrier to porting to iOS is Apple not allowing GNU licensed applications. If they change this rule, then later, this would be a good project to undertake. Also, see my answer to "Why bring this to Android?"
I have thought about solely using the terminal emulator or similar, but there are problems with this.
a) Much of the work has to still be done.
b) Creating appropriate cross compiled releases for the two ARM architectures used by Android devices currently and x86 Android in the future. Updating them when new releases of Octave or gnuplot come out.
c) Providing an installer on the Android Market to easily get this to users.
d) If you dynamically link against bionic (the libc used by Android) as opposed to statically link against the standard libc, you have additional work to go through, because these are not the same.
e) Depending on which tool chain you use, you may have to overcome various issues with it. For example the default NDK tool chain does not support fortran.
f) Octave expects Android to be Linux, but it is different. The directory structure is different so, for example, /tmp is not there. This causes issues with Octave and other programs. Also, Octave expects various system command to work like "ls -C". Android has "ls", but not "ls -C".
g) The use of OpenGL in future version of Octave needs to get ported to use OpenGL ES so it will work on Android.
h) Since there are changes there will be bug fixing and support.
i) You can make peoples interaction much better when working with a small screen by doing something custom.
j) You can do other nice things, like support multi-touch gestures, custom keyboards etc.
k) I would like to also add some simple items that Matlab has in their GUI that Octave does not.
l) Did I mention support?
This is only the surface. I have done quite a bit of poking here and solved many of the issues and there is still more to do, but the feasibility study is done. If funded, this will be achieved as promised.
With the blog posts that will be created and the source code, other developers be able to more easily port other complex programs to Android. Also, there will be various handles (intents is the Android word) for other applications to use the capability found in Octave and gnuplot. For example, the can use these apps to plot data for them or do some calculation and return a result.