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
  • Vote Up0Vote Down
    February 2012
    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.
  • 27 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.
  • Vote Up0Vote Down
    February 2012
    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
  • Regarding #4: You could consider using H2 instead of HSQLDB - it's usually faster and uses less memory (see this performance comparison).
  • Vote Up0Vote Down
    February 2012
    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.
  • Vote Up0Vote Down
    February 2012
    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. 

    ApplicationLayout.png 32K
  • Vote Up0Vote Down
    February 2012
    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 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 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 :) 

    RunwithSunJava.png 45K
    hsqldblogin.png 52K
    Permadb.png 75K 1M
  • Vote Up0Vote Down
    February 2012
    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:
  • @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.
  • Vote Up0Vote Down
    February 2012
    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.

  • Vote Up0Vote Down
    February 2012

    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


  • Vote Up0Vote Down
    February 2012
    @hafeez I just came across this:
    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.

  • Vote Up0Vote Down February 2012
    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:

    @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:
    Here is a bit more detail on the process a permaculture designer goes through:

    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, 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!

  • Vote Up0Vote Down February 2012
    @capiscuas: Scrum works for me.
    @craigambrose: Thanks for sharing your source!

    Recommend using github as source repository for the project.
  • Vote Up0Vote Down
    February 2012
    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 :)

    MainAppWindow.png 545K
    EcologyDesigner.png 196K
    Search.png 220K
    SearchMoreOptions.png 76K 2M
  • Vote Up0Vote Down
    February 2012
    @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.)
  • Vote Up0Vote Down February 2012
    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.
  • Vote Up0Vote Down
    October 2012
    Hello all,

    Many thanks for your contributions on this exciting concept. I believe that this will be a major step in the development of a truely open source permaculture methodology. 

    I'm an ecologist and permaculture designer. For a while I have been conceptualising an opensource software that would largely automate the process of permaculture design, empowering individuals and communities to take immediate action within their landscapes without intervention by external specialists.

    My area of focus is ecologically, socially and economically impoverished landscapes in the Amazon bioregion (currently the Ucayali watershed in Amazonian Peru). The implementation of multistrata agroforestry systems has proven highly successful at enhancing regional eco-social resilience, however, the implementation of such systems at macro scale with the required economies of scope and within meaningful timescales is an ongoing challenge.  

    An Automated Regenerative Ecosocial Design System

    I envision an info-rich opensource software which would allow users to supplement broad GIS data (geographical, ecological, limnological, hydrological, cartographical etc) with location specific on-the-ground information such as ethnocultural, sociological and economical data (including community land management goals, limiting factors, traditional knowledge, management practices etc). Once synthesized this data will allow for the classification of land-types (sectors and zones) depending upon specific ecosocial conditions and will generate, through a opensource CAD plugin the required system archetypes for that particular region (RPTreemaker, a fractal tree design tool will, I am sure, prove invaluable in this process). A comprehensive plant database will provide system elements (guilds) based upon local conditions and species availability. A timeline will be generated which will provide a framework for directed succession. Weblinks to opensource wikis/videos will detail the techniques for all stages of systems implementation and maintenance. Feedback from users will allow increasing efficiency and scope. By linking the central database with bioregional seed sharing networks crop diversification could be boosted and production costs reduced so as to further enhance resilience and well-being.  A materials marketing platform could then be integrated establishing strong feedback loops between producers and eco-ethically minded buyers and determine guaranteed marketability for the products to be cultivated. 

    I have GIS and some CAD experience but lack knowledge of opensource applications and the required programming knowledge to bring the aforementioned coupled GIS-CAD system to fruition. It is vital that such a system be entirely opensource and user-friendly for those with very limited experience  (such as campesinos or forest dwelling peoples). Using a standardized programming language like Python and GitHub to provide a collaborative working environment seems to me very prudent. 

    I would be very interested to hear all your suggestions and discuss opportunities for collaboration.

  • Vote Up0Vote Down
    November 2012

    I started this thread a while ago. I got distracted due to professional obligations but haven't completely abandoned this effort. I was initially trying to implement something in Java but most people on this thread were  interested in something that is based on web technology. So i discarded my Java plans and have been working (at snail's pace) on a web application that uses html, css and javascript. I had to start from scratch and i am working on a web application that can work completely offline and does not require a complex server setup. 

    I think what you are suggesting is a massive undertaking and without a dedicated community it will be impossible to bring to fruition something like this. In my very humble opinion what is required is an application that starts with very rudimentary capabilities but is completely open to hacking so that it can modified and extended by interested people. 

    Here is what i have so far:
    I have pretty much identified the entire set of development technology requirements for what i am trying to accomplish.
    I am using Aptana Studio 3(free opensource, you can download too) for coding but since it is all html,js and css anyone can open any part of the application in any editor and make changes to it without the need for compilation like in other application languages. You can modify the code, save it and reopen it in browser and voila.
    I am targeting Chrome and Firefox latest versions.
    For data storage i plan on using indexeddb which is supported by both aforementioned browsers.
    I am currently using JQuery and JQuery UI  javascript libraries for more mature higher level programming. I had to learn from scratch and am still a beginner , learning more every single day.
    I have currently implemented some very rudimentary UI and am working on Guild workbench which would allow users to lookup species and then map their inputs/outputs. I have implemented mapping functionality in JSPlumb library which works on top of JQuery. There is a lot that needs to be done and i am making painfully slow progress but definitely moving forward. I am also investigating next steps for future so that when the time arrives i have sufficient knowledge to start implementing.

    These days i am looking at OpenLayers for exactly the kind of GIS functionality that you have described in your post.  However full fledged CAD type functionality is in my humble opinion a moonshot at this point. I am looking more at the capability to get GIS Map from online server(google, mapquest, openstreet etc) and then drawing layers with polygons to come up with a site layout (Layout Workbench) . At this moment i don't have a single line of code to show for this functionality and whatever i am writing is based on my internet research. I am pretty much sold on using OpenLayers for this purpose. Once a 2d functionality is in place then *maybe* we can talk about 3d.

    I want to make it clear that i am not a permaculture practitioner and having someone who can answer questions that arise in my mind regarding useful features can greatly help. But even more than that i would love to work with someone who can program in html,css,javascript or is willing to learn and code. Even doing small things that come bundled with something like Java is taking me forever  :P

    In short, we absolutely need a body of people who know how to code in html,css and js. And some people with knowledge on subject of permaculture.

    I was not going to post in this thread until i had something to show but since you posted i thought i might as well reply to see if i can get some help :)
  • Vote Up0Vote Down
    December 2012
    Here is what i have so far. 

    Any volunteers who know html,css and javascript?
    Attachments 675K
  • I am very interested in the ideas on this thread, and it coincides with some ideas I had previously.

    I have a decent grasp of javascript and python as well as django, and some experience with openlayers. I would be particularly interested in back end stuff and learning more about openlayers.

    I am doing a bit of research into software and projects along these lines that already exist, and will, in the next few days, submit a more lengthy post summing my thoughts on how a project like this could succeed and what features would (in my opinion) be worth focusing on first

  • Vote Up0Vote Down
    December 2012
    Hello farmerjack,
    Glad to hear from someone who is willing to get their hands dirty with some coding :)
    I have also uploaded the code i have done so far on github. If you are interested we can exchange our contact information and have a more detailed conversation for this project. Let me know what would be a good way to communicate for you.

  • Vote Up0Vote Down
    January 2013
    Hello hafeez,

    plant companionships might be stored in databases, most likely for your region, climate, soil, etc. you have no data and have to develop your own. There are some applications on sourceforge, but their interfaces could be better. Only equipped with a smartphone you go on a search to map wild plant companions by taking photos and let those analyse from your phone or with a more capable processor.

    Camera based plant recognition

    I like the idea to rely on JavaScript wherever it is possible. The following application does simple shape recognition.

    By use of image recognition, from the popular ImageJ pattern can be selected by hand. Once a pattern is developed it can be reused for plants which differ in colour and number of presence in the field. -->

    Data input by hand

    I like discrete interfaces like the following sample:

    Software like is that type offered around since 30 years and those packages are the reason farmers hate working with computers. As permaculturists, gardeners and farmers deal constantly with different metabolisms, model the relationships between different organisms and their material interactions. We need something which s more intuitive, interface ergonomics should concentrate on hands free computer interaction, meaning that we use in- and outdoor geolocation services, like in and speech/ sound recognition as well as camera input, which fits best on a kind of helmet or glasses.

    On farms we have his continuos material flow and fermentation and conversion processes, in regard to plant companions we have obviously plans and many unknown factors like mycorrhiza, history f soil building and what not, which leads to particular ensembles in the wild. To get new insights of new companionships the already working relationships observation, even due to environmental changes or neophytes, is king.

    Imagine lists of items and relationships which can be modelled with such kind of interface. Yes, I would like to have it stored as xml organized data to make it reusable if there is not already a standard available.

    Visual programming technics or programming by oberservation and software training wth neural networks will be an aim, instead of typing in each single information.

    The overview of databases for biologists is still not clear, where to plug in. Obviously it would help us to reuse already existing taxonomies of plants, that might connect that database to description of plants, which has already done Linne, Humboldt,...

    So, I have to leave here to my meeting of the workplan for next week on the farm.

  • Vote Up0Vote Down
    January 2013
    Biggest problem is, we don't have anyone willing to code or do some implementation work. We have enough ideas to begin with but there have been no volunteers who want to code.
  • Agile distributed's successes are testimony to the
    fact that we have always contributed to our clients achieving the final
    out come. We emphasize on collaboration and a perfect toolset to make agile software development and it's testing simpler , easier and better for you. Thus we give you a comprehensive solution for all your agile need.
  • For a plant data repository to refer to in any FLOSS, see Practical Plants, who have taken the database of Plants For A Future and turned it into a Wiki with permission, in a hope that collaboration can give more globally relevant information, as the current dataset is quite Anglo-centric (cool-temperate based).

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