#this document is meant to catalog all possible entries in the autogenix #.agx file format, version 0.0.1 THIS WILL CHANGE #i will turn this into an xml schema or DTD as soon as i figure out how #apkg, the autogenix package manager, in combination with astream, keeps #track of the user's current "installation" which is the sum of all their #posessions and skills. it is also used to test various 'pretend' #scenarios, either manually or using agimme. #packages and streams may not have the same names as units. #agimme, (in analogy to apt-get) will test various trees of package #combinations in order to try to satisfy the requested functionality #(quantity*efficiency*quality), while still staying within the specified #cost envelope (money*labor*skill*time*hazard). the user can specify a #vector along which to minimize costs. the concept of capital does not #exist in this scenario, since one can either buy or make any required #infrastructure as necessary. #if the current installation has the capability to produce the desired #functionality or package, agimme runs the source code for each package #in the tree. this might send commands to a rapid prototyper, produce #a web page with plans for the user to follow, or simply dump cad files #to stdout. #explanation of syntax: #section: item, {item}, [[package:capability]] #items in {} are instances of whole sections being included. this means #anything that can be specified in the other section can be specified. #a single item from another section can be included with {section:item}, #but this is sloppy and is discouraged. #items in [[]]'s are capabilities of other packages being specified. #if you specify a package/capability, the other package is required for #the current mode. #for non-package (stream) requirements, the requirement is treated as a #unit. presumably each stream will have its own DTD/schema #mathematical operators <,>,=,*,/,^,- can be used when there is at least #one number or unit. capabilities and streams count as units. #multiple constraints are AND'ed together, unless separated by a comma or #logical operator #example (an unusual shucking machine that can use multiple power sources): # run-time: electricity 240V 3*phase >=35A*peak >5A*continuous | # compressed-air "3/8-NPT-F" 90psi 5scfm, [[human:attention]] 0.2 # provides: corn 0.5kg/corn-cob # this kinda sucks # teams-with: [[packaging]] >=5gal, conveyor123 #example (a plug-in-hybrid car - dont you love my mixed units?) # package-name: pollywag-car # provides: electricity 144VDC <100A NEMA-1234, electricity 12V <100A, # transportation peak 90mi/h 300kg 1m*length 0.5m*radius, # storage 1m*length 0.5m*radius, temp +25C | -10C, [[computer]], # transportation 50mile/(diesel gal) | electricity 0.1kWh/mi, # electricity 10kWh/charge, diesel 6gal, # run-time: diesel | electricity 144VDC NEMA-1234 | # electricity 240VAC*60Hz NEMA-4567 | # electricity 120VAC*60Hz IEC-632 #gets cross-referenced # road, human:attention 1*peak 0.3*continuous #road and human are packages # build-time: fiberglass 4oz*20m^2, epoxy 10ksi 3gal, # steel-4340:tubing 20mm*radius 3mm*thick 100ft*length, #hmm # Emotor-21, dieselengine-600, computer:embedded #etc. # recommends: road:paved # teams-with: solar-carport # storage: 3m*long 2m*wide 2m*high, temp >-15C <70C, 600kg #the idea is to specify as little as possible to enable unanticipated #combinations of packages and streams, but specify enough so that it's #guaranteed to work without hackery. the user can test various scenarios #by using apkg's ignore and pretend tools if they are so inclined. ====metadata==== package-name: foo-bar2 version: 2.7.183 date: 03/23/08 maintainer: donald duck email: homepage: , icon: /usr/share/icons/autogenix/foo.svgz #things that arent really capabilites or requirements, they just "are" ===properties=== #much of this can be got from MSDS databases and autogenerated hazard: #will limit what type of space the package can be used in env-impact, cleanliness, noise, moving-parts, {power}, [[MSDS]] cost: #normally only specified for bought'n components+materials purchase cost, environmental cost #TODO expand on this materials: {cost}, {transportation}, {hazard}, {storage}, fatigue, strength, elasticity, damping, chemical/wear resistance, surface-finish space: #space is a package that is really more like a stream. it must? be a package #because it provides a crude nesting/collision-detection unit test #for determining whether the requested object will fit in the space long, wide, high, radius, thick, volume #for more complex spaces ?? lighting, humidity, temperature, acceleration #TODO how to describe if something must stay right-side up? time: #much like space, but for units of time cycles, time-units complexity: #this was supposed to gauge the amount of human effort required to #inventory something, for example a cube would be less complex than a #tangly spider-web. i might just use [[human:attention]]/cycle in #the storage section instead bits #each operating mode should have its own run-time section #typical simple packages will have one run-time, one build-time, and #one storage dependency ====Dependencies section==== power: electricity, compressed-air, hydraulics, belt-driven, [[human:power]], [[animal:power]], fuel build: {materials}, {assembly}, {process} process: measurement-tolerance, cutting tolerance, [[human:skill]]*{time}, {hazard}, {space}, {cost} test: [[instruments]], {materials}, [[human:skill]], {process} transportation: {storage}, permits, hold-downs, packaging assembly: {space}, assembly-equipment, [[human:skill]]*{time} disassembly: {assembly} run-time: {materials}, {space}, {safety}, {power}, {process}, [[human:attention]], [[human:skill]] storage: #complexity is provided by [[human]] or an automated inventory system {space}, [[human:attention]]/cycle, mass, security #things that go here arent absolutely necessary but will make your life #much easier ==recommends== {Dependencies} #packages here will work synergetically with this package teams-with: [[.*]], {capabilities} #this section describes the performance and operational modes ===capabilities=== performance: {space}, #for storage systems such as buildings or containers dimensional envelope, #for machine-tools or robots i.e. a 6"x12" lathe {efficiency} rating: nominal, peak, continuous, typical, once, minimum, #minimum should be used sparingly - it means the machine #can't produce less than this much mtbf: #longevity in various modes {time}*{rating} #this section is really ugly #basically we want any combination of performance and cost efficiency: {performance}*{quantity}/{time}, {quality}/{time}, {quantity}/({power}*{time}) #?? {quantity}/{quantity}, {quantity}/([[human:skill]]*{time}), {quality}/([[human:skill]]*{time}) quantity: #can be just about anything - streams packages or units [[.*]], #units are handed off to GNU units for validation