Visit the forum instructions to learn how to post to the forum, enable email notifications, subscribe to a category to receive emails when there are new discussions (like a mailing list), bookmark discussions and to see other tips to get the most out of our forum!
Open Source Permaculture Software
  • Has anyone started off on this proposal for permaculture open source software listed on wiki?


    Is there anyone who is actually involved in permaculture project on the ground and has some hands on experience?

    I have been thinking about this proposal and have some modest goals in mind for some sort of basic minimalist tool that could be improved and scaled up or replicated on web in iterations. Would be interested to hear from others.
     
  • 18 Comments sorted by
  • I hadn't even seen that idea before. Sounds like something worth doing if all the relevant variables can be defined without several years of trial and error in each location.
     
  • I personally have no hands on experience with Permaculture design. But i think i will go ahead and try to help with technology piece. I wasn't able to find anything online. There is a project on sourceforge but it seems to have some really lofty goals and i haven't seen any progress besides the initial feature outline. Most people seem to be using different tools in combination (Adobe illustrator, Sketchup, Office tools etc).I think my main purpose here is to fiddle with technical software questions (development platforms, UI features etc) and share my experiences for later iterations perhaps involving actual Permaculture designers. 

    Technology Platform:
    I think a web based tool that has a golden copy of permaculture database and exposes design interface to user via a browser would be the ideal solution. Perhaps that can also be taken offline. A good example is Chrome web apps that can be hosted or run as standalone packages. Unfortunately i have very little or no experience with web apps. I had created a small extension for Chrome and it was extremely painful process. I have had some experience with Microsoft development studio and i love C#. It can also be made cross platform via mono but again i have very little or no experience with mono. So i decided to stick with the devil (JAVA) that i know from college times and which could be deployed and used in similar fashion(and looks equally bad? :P ) on Windows and Linux. 

    Setup for application development:
    1) Ubuntu Linux 11.10 with Gnome Shell 3.0.

    2) Eclipse 3.7 (Indigo) with WindowBuilder - Downloaded and extracted Eclipse in my Home directory not from Ubuntu software center. Installed WindowBuilder from Help->Install New Software. WindowBuilder (bought and opensourced by Google) is a form designer that lets you do WYSIWYG drag and drop application interface design.

    3) Sun Java JDK 1.6 - Downloaded using Ubuntu Software Center and then switched default Java system wide to Sun Java from Open JDK by using (sudo update-alternatives --config java)  Here is more

    4) HSQLDB Java based embedded database for the application. You can visit their home page or download the latest stable release from here. Download it and extract it on your machine. All that you need from the extracted folder is hsqldb.jar under <directory where you extracted>/hsqldb-2.2.8/hsqldb/lib. This jar contains the whole database functionality in the form of java class files. If you execute it, it will open up a UI and then you can create your database/schemas/tables etc and run queries. At the same time you can add this hsqldb.jar to your build class path in eclipse to access database programatically.  The whole concept of embedding tiny database into application is new to me and i find it fascinating having exclusively worked with huge db servers at work. I started researching derby from apache and then came across hsqldb(also used in LibreOffice) and finally settled on it. 

    Next i will start discussing how i envision the application to be setup and deployed. Then i will discuss how i am laying out the UI of the application based on my very limited understanding of the Perma design workflow.

     
  • I'm Django programmer, maybe I could give a help with the Agile programming on there. I stopped programming in Java long ago because the time it takes to setup and the thousands of lines needed to start doing useful stuff.

    hafeez , maybe we can discuss more details about the webapp (although my freetime is not great since I'm looking for a job now), contact me at jabber: capiscuas AT gmail.com
     
  • Regarding #4: You could consider using H2 instead of HSQLDB - it's usually faster and uses less memory (see this performance comparison).
     
  • Thanks for the replies guys!

    capiscuas, Using windowbuilder has really helped me cut down on writing a lot of code. I can share my eclipse solution with you if you want to get set up. However if you think you can replicate the tool/functionality on web that would be even better. Unfortunately i am completely clueless on that count you'd have to take initiative on that. I will keep posting my experiences and any new developments so feel free to replicate them.

    elifarley, I did evaluate H2 as well and saw that performance comparison. H2 is being developed by the same guy who started HSQLDB. HSQLDB i believe is more mature has release cycles and exists in real world applications like OpenOffice/LibreOffice. There is good documentation/tutorials on web as well and eclipse plugin if one wishes to go that route.
     
  • Application setup and Deployment:

    The application will be deployed in the form of a runnable jar file. Basically, on any machine with java runtime(JRE) you could double click on a jar file and execute the application. Eclipse makes creating a runnable jar file very painless process with 'Export' menu item under Files. You can choose to put your dependencies inside your application jar. For example my application depends on hsqldb.jar so i could ship hsqldb.jar packaged inside my application jar. However i decided against it and will keep hsqldb.jar separate from original application jar for greater flexibility in upgrading database for future releases or/and replacing the database with another database if need be (for example if elifarley wants to replace hsqldb with h2 , they can simply modify data access layer class and use a different database) . This also gives tech savvy users, access to hsqldb UI independent of the application(just click on hsqldb.jar and good to go) if they want to fiddle with data directly instead of incorporating that functionality in the application. 

     
    Attachments
    ApplicationLayout.png 32K
  • Now i will touch a little on the database setup

    Database Setup:

    As i have already mentioned the database is hsqldb which is an embedded java db for applications. I have described in my first post how to get the hsqldb.jar file which encompasses everything we need for our purposes. You can get the entire distribution zip file from their hsqldb.org download section and extract the hsqldb.jar file from under the 'lib' folder. 

    Since i have two Java runtimes installed on my machine i right click on the hsqldb.jar file and click on 'Open with Sun Java 6 Runtime'. This brings up the login screen. I have attached the screenshot of login screen.
     
    1)You can give a name to your login settings so that next time you don't have to specify them. 

    2)Type: HSQL Database Engine Stand Alone. We are not using in memory database which will lose all data when application closes.

    3)URL is very important. Use absolute path to the folder in which you want to create your database. I created my database in the same folder as the hsqldb.jar and application jar folder. So the path looks something like this
    <absolute path to the folder that contains hsqldb.jar>/database/<name of the database you will be using, in my case Permadb>

    I have attached hsqldb.jar and database folder in a zip file for folks who would like to play around with it.

    Once you have logged in, you will find some tables that i have created under 'Perma' schema. The database comes with few schemas, i renamed 'public' schema to 'Perma' and dropped the tables in it to make way for our application tables. If you run the command 'Script' it will show you all the sql queries required to create the tables that are in place. The tables that i have created are:

    1) SpeciesType
    2) Species
    3) Element
    4) SpeciesElement_Input
    5) SpeciesElement_Output

    I am still weighing the option of storing images related to species in the database that will result in one more table. Anyone interested in the table structures, datatypes, Key relationships can view the database tables in Permadb.zip attached to this post.

    Next i will talk a little about Application UI and workflow that i have in mind. I will also attach my Eclipse Solution folder for anyone interested in dissecting the code or whatever they want to do with it :) 




     
    Attachments
    RunwithSunJava.png 45K
    hsqldblogin.png 52K
    Permadb.png 75K
    Permadb.zip 1M
  • Vote Up0Vote Down
    Jason
     
    February 20
    It seems this software program is more or less a big database. I think that a web-based program would be the best in this situation because you could leverage a large group of people to add in things that are proven for their local area. This could be aggregated to build a database. Once that is created, a standalone version could be created.

    I'd personally go with python. It's got good web frameworks (someone mentioned Django, there's also flask). I learned java in school too....but I use because python its really nice. If you learned it you could take advantage of this tool as well:
    http://forum.opensourceecology.org/discussion/comment/3116
     
  • @hafeez
    I like your motivation for the app and I think we can cooperate without replicating code, most of the work in a app(wheter is desktop or webapp) is the arquitecture of the entities that conform the database. I agree with Jason that a webapp fits better since it's a management idea (permaculture) and you don't need to treat big files or hardware from the local computers. Also a mobile app could be done afterwards to be able to take pictures and data ON THE FIELD directly.

    So let's have some sort of meeting with this, I work much better within a team and using SCRUM agile development technics (check the WIKISPEED team that Marcin pointed out in the blog yesterday).

    Best Regards.
     
  • A lot of information related to species already exists online. In my humble opinion this application is a little more than just database. I would strongly recommend that anyone trying to understand this design process must download and read "permaculture a designers manual bill mollison.pdf". Chapter#3 is a must. I believe there is a link on wiki.

    The way i understand it the workflow goes like this:

    1) User needs to establish ecology. Which is pretty much mapping input attributes of one perma species to ouput attributes of another. I tend to think of these inputs and outputs as elements. Excess elements can be taken out of the whole process/cycle and be sold/traded and they represent the process "yield". 

    2) This design exercise also seems to include site layout design. This involves surveying a landscape and deciding how to arrange your ecology on top of the chosen site. 

    3) Then comes the part where you combine these two(ecology and site layouts) and apply modeling principals to simulate and calculate yields over a time to find out viablity of your Permaculture design. These models can have many variables that involve quantifying ecology, elements, layout dimensions and other outside factors like weather, soil quality etc.

    I am implementing these three parts as a tabbed application with one tab for each phase. I will share screen shots of what i have done, plan to do and my ideas on each phase when i get more time or make more progress.

     
  • capiscuas,

    I appreciate your kind words. I agree with you we should discuss more on the actual problem which is defining permaculture design and what it entails. Once we have that nailed i think anyone willing to code and implement can do it weather on web or desktop. I am just more comfortable with desktop app and didn't want to waste my energies doing hello world type of programming in other languages instead of actually scratching the surface of the problem that needs to be brain stormed and solved. Currently i have some down time from work but it won't stay the same so i am trying to at least put together something tangible to give others a starting point and some motivation while i am away.

    Please feel free to share your thoughts about the frame work you have in mind for this application. There is this very interesting video that might give you some ideas on how to design the workflow:

    Hope you will keep participating here :)
     
  • Hi folks,

    I've been working on some (presently) closed source permaculture software. I'm not necessarily adverse to open sourcing it. My approach is a little different to some of the ideas here in that I'm trying to steer clear of the mapping/spacial stuff, an instead focus more on managing, implementing and living with the permaculture design. Very early days yet, the app is up at:


    As part of that, I hit a wall that there was no single global permaculture database (of species, guilds, patterns, etc). I've started building one, not hosted anywhere yet. This app will definately be free and open source, even if habitatmanager is not. This app, working title "permapedia", although that's probably a rather popular name, is a little different from "plants for the future" and other similar databases in that I'm not maintaining a single record to be considered as the truth for each species. In fact the wikipedia metaphor inherent in the name isn't quite right. Instead, the idea is to allow everyone to post data against a single species, and that data is annotated with their location, and reference sources (if any). Then, each field for the species essentially has a range of data available, and I'll try and display a sensible aggregate. This will probably take the form of balancing popularity (ie; you can upvote/downvote your favourite description of the plant's leaves, etc) with locality (see the fruiting times as listed by people in your hemisphere and ideally bioregion).

    So, this permapedia project is public, open source (currently the default Rails app MIT licence, but I'd be happy with GPL too), and when hosted the content itself will be CC licenced. You can see my code, and contact me about participating here:


    The habitatmanager project is not currently open source. I'd like a chance to make a living selling subscriptions for advanced features. That business model is not incompatible with open sourcing the codebase, although it usually requires a certain critical mass of users first. I'd be happy with the idea that people could install their own hosted versions of habitatmanager and use it for free, but if they wanted to join in the hugely popular (hehe) hosted app then they might need to pay. I'm happy to have others try to convince me to do it differently though. Suggestions of good open source business models welcome. Also, business partners for habitatmanager would be very welcome.

    I'll read this thread, but feel free to contact me privately too if you have any suggestions (contact details at www.craigambrose.com).

    cheers,

    Craig
     
  • Vote Up0Vote Down
    Jason
     
    February 22
    @hafeez I just came across this: http://www.udacity.com/
    It's a free 7 week course that just started two days ago. It assumes no previous programming experience and by the end your supposed to know enough to write an entire search engine in python.

     
  • Greetings all,

    Great to see motivated folks talking about Permaculture. I'd love to join the discussion as a permaculture designer and software developer. More about me here: http://opensourceecology.org/wiki/Simon_Walter-Hansen

    @hafeez: Thanks for the proposal. You've got some good ideas. If you haven't already, I would recommend picking up a book on permaculture, like Intro to Permaculture or Gaia's Garden and getting familiar with the scope of the design process.

    Permaculture design process typically follows the following schedule:
    SurveyAnalysisDesignImplementationMaintenanceEvaluate
    Here is a bit more detail on the process a permaculture designer goes through: http://www.self-willed-land.org.uk/permaculture/design_process.htm

    Defining which parts of this process the software will support will be critical. Places where computers are great tools are in tabulating data, multi-variable calculations, graphical plotting.

    Some areas that could use computer support in permaculture design:
    • GIS mapping of land features
    • Sector analysis
    • Zone analysis
    • Analog climate analysis
    • Guild compendium
    It looks to me like the software being proposed is mainly focused on guild building, which is an important consideration in any permaculture design. This is a highly-variable and subjective process and would be cool to have a software that "suggests" plant guilds, but also a crowd-sourced portion where people can input their own and rate particular succeses or failures. Collecting both success and failure is critically important for learning. As suggested, http://pfaf.org/ is a good resource for plant data. They used to have an awesome data search query, but it has been simplified to make it more accessible to casual users.

    I think it is important to note that western culture has become very accustomed to having access to food from around the world, relying heavily on a handful of domesticated plants. It is good to know what you like and what you want to eat; this should definitely be part of the selection process. It would also be valuable to know what grows well and not so well or not at all in a particular climate/bio-region and suggest accordingly. Some form of ranking system for plant selection and an option for greenhouse cultivation in the software evaluation. I might choose to grow some sweet corn, even though yield is low where I live, because I like to eat it; yet the software might suggest growing potatoes for a significantly higher caloric return per area planted.

    Fun Facts: 
    There are a lot of components that go into a permaculture design, it'd be great to see a development process that allows development at the component level and a way to combine or have the components inter-operate. I definitely see an online database component being a valuable tool, as we want to be continually collecting data points from around the world and refining our understand of the interactions at work in nature. Being able to have a local store of relevant data is highly desirable for many reasons. Being able to select for an offline version of a specific bio-region would allow a smaller database to be loaded. Lets also think about a cross-platform version that could be run directly from a DVD, complete with how-to videos on horticultural best-practices, grafting, pruning, animal care, plant propagation, seed saving, etc. There are plenty of books on the subject, but seems like a great opportunity to open-source the necessary knowledge for growing food and put it on a DVD, too!

    Cheers!
    -Simon
     
  • @capiscuas: Scrum works for me.
    @craigambrose: Thanks for sharing your source!

    Recommend using github as source repository for the project.
     
  • @Jason,
    Thanks for the link, but i think i am already knee deep into the app i am developing. How are your web programming skills? Would you like to take initiative on this?

    I am glad we have someone who practices Permaculture design here. Thanks for your tips and yes i am already consulting a book that i mentioned earlier. As for the purpose of the application i am working on, i am mainly concentrating on design and analysis side. I definitely have  GIS  and mapping on my mind but will need to evaluate my options when i get there. Can you please write something on the principles of Zone/Sector analysis? 
    Currently i am trying to get the search and data access functionality to work. Once that is done i will share my results (code, application and screen shots). After that i will be working on mapping functionality(mapping species based on input/output). I have been evaluating Java 2D, Draw2D and JavaGraph for mapping purposes.


    In the meanwhile , some screen shots of the UI and actual eclipse solution with code :)





     
    Attachments
    MainAppWindow.png 545K
    EcologyDesigner.png 196K
    Search.png 220K
    SearchMoreOptions.png 76K
    PermacultureEclipseSolution.zip 2M
  • Vote Up0Vote Down
    Jason
     
    February 23
    @hafeez I've got too many other priorities right now to help you out on this. I'm just offering some friendly suggestions. (The only reason I'm commenting is because I think it would be a good idea if the OSE kind of standardized on a language for these types of things...there will probably end up being lots of software generated for the overall project. It would be pretty cool if you could learn one language and be able to work with all of it.)
     
  • There have been a few projects here and there in Python. The CAD software that may end up being the default choice has extensive Python APIs (FreeCAD).

    It seems to me that Python is generally pretty popular for hardware projects.
     

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook Sign In with Google Sign In with OpenID Sign In with Twitter

In this Discussion

Loading