first version upgrade
[devspec.git] / devspec.en_US / 1.0.general.txt
blob8f27e9813125d8c781437055d1eb747b5211830d
1 posiable => possible\r
2 integerat => integrat\r
3 template => template\r
4 traditional => classical\r
5 developer =>\r
6 \r
7 \r
8 \r
9     dev-spec is not a rule to limit developer, it's an assistant with less\r
10 limitation. \r
11     it provide style doc, and provide auto-utils and template at the same time.\r
12         it provide design doc and flow, but only less relative info in design, in\r
13 order to sync with code, when the developer modify code, it can sync from it,\r
14 and could use the design info again in next time when it is needed.\r
15         it provide dev-flow doc, and it is used with a todolist note as normal. it\r
16 is just the doc which developer would use it usually.\r
17         it provide pkg-structure doc, and also provide util-prog, and simple\r
18 build paramter file to use it.\r
19         it provide webpages guide doc, and also provide .md to html doc util-prog,\r
20 and webpages sync util-prog, which is referenced from GNU lib.\r
26 # introduction\r
27 ==============\r
29         what's the pkg-builder?\r
30         it's a toolset for software build and develop, and provide a develop \r
31 specific and guide document. \r
32     pkg-builder is designed for skeletone-linux building. developer can \r
33 develop low-level system soft-pkg by it, and do not need to install other \r
34 software as possible.\r
35         pkg-builder uses shell script to write utility programs, it depend external \r
36 pkgs as less as possible. system building in 'buildroot' need a step of host \r
37 environment pkg building. by using pkg-builder, it could run system building \r
38 directly, or just rebuild pkg-builder.\r
39     normally, src-pkg build need some advanced soft-pkgs like perl python in\r
40 desktop linux system. if we need to build a low-level system src-pkg for\r
41 embedded linux system, we need a cross-compile develop environment on computer.\r
42 pkg-builder provide utilities writen by shell script, some of the src-pkg can\r
43 be build in embedded linux system.\r
45         what's the devspec?\r
46     devspec is a part of pkg-builder. it provide guide document for develop,\r
47 some of them has a utility program in pkg of 'devutils'. it helps developer to\r
48 check or generate codes automatically acrroding devspec.\r
49     devspec is a thing, that let the developer has the SAME STYLE and METHOD\r
50 in develop, and uses AUTOMATICAL utility program to ASSIST the devspec. it want \r
51 to let the pkg-builder to be a CLASSICAL tool, like 'borland c++ builder', or \r
52 'virsual c++'.\r
54         why a src-pkg need the devspec?\r
55         devsepc PROVIDE the SAME programming/coding STYLE, and name rules, and so \r
56 on. it let the different developer write code as a same programer as possible, \r
57 and other developer can read code easily and clearly.\r
58     it provide usage of UTILS in devutils, CHECKING and GENERATING code \r
59 AUTOMATICALLY. the guide doc would not be a burden for developer as possible.\r
60     it provide step guide in developing for software DEVELOPPING LIFE CYCLE.\r
61 the PROCEDURE of soft-pkg develop can be known by a NEWER. look at the diagram \r
62 of 'devspec.uml', it shows WHAT PEOPLE will use and operate on a src-pkg. and\r
63 WHAT THING the people would to do, and the STEP of the thing people would to \r
64 do.\r
65     the FILES generated in develop can be the same as possible, the MEANING and \r
66 PURPOSE of those file should be defined as same as possible. there are TEMPLATE \r
67 files for develop in devspec, and use them to generate things by utilities in \r
68 'devutils' automatically.\r
70     devspec is consisted by those part below:\r
72 @ dev-flow/dev-step guide\r
73  # definations for dev-actor, work-task, dev-skill\r
74  # defines develop-step diagram. and design diagram files for pkg-builder and\r
75    it's sub-pkgs.\r
76  # develop manager: dev-task-trace, cooperation, dev-step-trace\r
77 @ code-style\r
78  # code-format\r
79  # name-style\r
80  # c-cpp-code-format\r
81  # sh-code-format\r
82 @ prog-style: programming style guide. it uses prog-level and prog-elem + \r
83   prog-model + prog-lib + traditional-impl to design programs.\r
84  # traditional program model/template/sample.\r
85  # data-structure and algorithm\r
86 @ copying lisence\r
87 @ pkg structure\r
88  # version code and it's meaning.\r
89  # src-pkg and install-pkg file name format.\r
90  # general file types.\r
91  # src-pkg file structure.\r
92  # install pkg file structure and external dir in system.\r
93 @ code and executable\r
94  # code-manager(file version manager), \r
95  # home pages, \r
96  # code hosting, \r
97  # src/bin public storage pages,\r
98  # soft-repo\r
99 @ template(src-module file comment header, function comment header, src-module\r
100   file, program-lang-element, blank project, )\r
101  # program element template\r
102  # src file template\r
103  # project template\r
104  # classical implement template\r
108 # hilight features\r
109 ==================\r
111     here list the features for difference from other classical linux-soft-pkg:\r
113 @ it's automatical thing with less memory remember.\r
115 @ it defined a develop flow in software developing life cycle.\r
116 @ develop manage info is putted into the src-pkg. function feature, work task,\r
117   task trace, bug trace. some of the will be deleted in publish version, and \r
118   traslate content to changelog and TODO.\r
119 @ simplly home pages for a soft-pkg, and the tools for pages update. it is used\r
120   for soft-pkg publish automatically by script programs.\r
121 @ it defines coding styles, to keep code clear and readable, and use utility\r
122   program to generate code automatically, and easy to analyze code by using\r
123   'tag-comment'.\r
124 @ it use template file for code-auto-gen, and code-format. and template for new\r
125   src-pkg.\r
126 @ define directory structure of install pkg, and use .etz file as the binary\r
127   publish file. it can install without pkg manager program, and the install\r
128   infomation can be used by actual pkg manager program. it defines the public\r
129   directories that a software needed, and specified the install path when it is\r
130   installing. the pkg manager program record install info, and the public\r
131   directories which is needed by a install-pkg.\r
132 @ define directory of a src-pkg. it append dir of design document, management \r
133   document, resource files, and so on. the src-pkg can be used in same dir\r
134   structure, and the install-pkg have the same dir struct, it can install by it\r
135   self, it's more better then make install. or translate install-pkg to linux \r
136   distribution pkg format.\r
140 # purpose & goal\r
141 ================\r
143 @ src-pkg developed can be the same style, by same develop flow, same develop\r
144   method. it's helpfull for develop cooperation, and code reading.\r
145 @ integrate automatical tools for developing as possible. the specification\r
146   and rules can be used without painstakingly by humen remembering.\r
147 @ devspec and pkg-builder is designed for system pkg develop and build, in \r
148   order to provide a build & develop environment with less program dependence. \r
149   it nearly just need shell program and compiler only, build a src-pkg without\r
150   make, auto-tools, M4. it integrate flex/bison/gettext/intl/doxygen/texinfo/\r
151   pkg-config for developing. some of them are developed by script programs in\r
152   devutils, and some of them are in the plan.\r
153   especially, it is used for the pkgs of 'skeletone-linux', and the src-pkgs in \r
154   this skeletone.\r
155 @ it uses c/c++, and shell script as the default programming language. and \r
156   maybe use languages like 'vala', for modulization of c-language.\r
157 @ for pure application programs, there are many build tools. devspec and \r
158   pkg-builder can not cover various range of applications.\r
159 @ textilization. use editable text file as more as possible. it's easy to edit,\r
160   and can be read without special utility programs. easy to analysis problems\r
161   when error occurs.\r
165 # scrope & misc\r
166 ===============\r
168 @ mainly for system low-level src-pkgs, espacially for 'skeletone-linux'.\r
169 @ the lisence of 'skeletone-linux' src-pkg to be developed would be MIT as \r
170   possible. others, look at the document of 'copying-lisence'.\r
171 @ main dependence of external src-pkgs is gcc, and shell program, and few \r
172   binary programs. the binary pkgs it needed, will be improved by shell script \r
173   as possible. the concept of shell program is not only shell script \r
174   interpreter, it include command set for a shell environment.\r
175 @ this document is mainly for suggest guide, and the rules must be kept in \r
176   'skeletone-linux' pkgs, to be a suggest guide beyound 'skeletone-linux'.\r
177 \r
181 # reading guide for devspec\r
182 ===========================\r
184 @ dev-step\r
185     it defined a suggest develop step.\r
186     look at the document of 'project-develop-step'.\r
187     view the uml diagram document in dir of 'dev-step-diagrams' by umberello.\r
189 @ the defination of dev actor, and work task\r
190     look at the document of 'dev-actor-task' 'develop-step-diagrams'.\r
191     view the uml diagram document in dir of 'dev-step-diagrams' by umberello.\r
193 @ project manager(design feature list, task, cooperation, dev-step-trace)\r
194     the feature of a soft-pkg is not recorded in src-pkg. but it's usefull for\r
195 user and developer. it uses changelog for feature record when it is published.\r
196 but sometimes, it need record the features which has not been developed.\r
197     orgnize a task to develop one of the feature in feature list, and provide\r
198 develop step trace, to see the status of feature developing.\r
199     submit a bug, and launch a task to fix it.\r
200         when the soft-pkg is published, keep feature list, output changelog/news by \r
201 manager info, and delete develop manager doc.\r
202     look at the document of 'develop-work-task'.\r
204 @ programming styles\r
205     look at the document of 'rules'.\r
207 # code-format\r
208     code format or code style defination.\r
209     look at the document of 'code-format', 'name-style', 'c-cpp-code-format', \r
210         'sh-code-format'.\r
212 # name-style\r
213     it's a part of code-style.\r
214     look at the document of 'name-style'.\r
216 @ copying and lisence\r
217     it's depend on the type and purpose of src-pkgs would be developed. it \r
218 defines lisence type of different src-pkg type in a operating system.\r
219         look at the document of 'copying-lisence'.\r
221 @ pkg structure\r
222 # name and directory structure of a pkg\r
223     define install pkg name format, so that pkg info can be dispatched from\r
224 install pkg file name. \r
225     the directory structure for src-pkg is defined. use project template in\r
226 developing.\r
227         directory of install-pkg is defined, a soft-pkg can be installed in various\r
228 operation systems.\r
229     look at the document of 'srcpkg-general-doc-files', \r
230 'instpkg-general-doc-files'.\r
232 # version code\r
233     define the meaning of version code, and use utility program to increas \r
234 version code when a src-pkg is published.\r
235     look at the document of 'version-code', \r
237 @ code-manager\r
238 # file version manager, \r
239 # code repo, \r
240     version manager program usage document, for src-pkgs and install-pkgs.\r
241     look at the document of 'git-client-usage'.\r
242     look at the document of 'code-repo-usage'.\r
244 # home pages, \r
245 # src/bin public storage pages,\r
246     it provide guide document for code hosting, and how to use utilities in \r
247 soft-pkg of 'devutils', to create/update/publish web pages.\r
248     it provide guide document for a developer for things beyound coding.\r
249     look at the document of 'code-hosting'.\r
251 @ template(src-module file comment header, function comment header, src-module \r
252   file, program-lang-element, blank project, )\r
253     template file is used for code-gen and code-fmt. use utility program, or\r
254 used as a guide document for coding.\r
255     look at the document of 'sample-prj-and-code-tmpl'.\r