summaryrefslogtreecommitdiff
path: root/chatsummaries/956457
blob: dfa0d5eba5191995f3170d0fcbefd47239aa21f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
    #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: <dduck@foobar.net>
    homepage: <http://foobar.net/~dduck/foo-bar2/>,
      <http://autogenix.org/projects/foobar/>
    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