Skip to content
Newer
Older
100644 214 lines (153 sloc) 8.02 KB
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
1 ---
2 layout: rosella
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
3 title: Rosella Library
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
4 ---
5
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored Mar 31, 2011
6 Rosella is a library of patterns and practices for use with the Parrot Virtual
7 Machine. The Rosella project is actually a collection of several individual
8 libraries, each of which implements a single pattern, best practice or
9 toolset. Rosella is intended to be used piece-wise. Use only the parts you
10 want and ignore the parts you do not want. Rosella libraries tend not to be
11 interdependent, although some of the more advanced libraries rely on some of
12 the more basic ones.
13
14 ## Project Goals
15
16 The Rosella project has a number of driving goals which influence both the
17 types of libraries which are provided and the way those libraries are
18 implemented:
19
20 * **Portability**. Rosella is pure-parrot, and has no components written in C.
21 It has no runtime dependencies besides a minimally-configured Parrot.
22 Rosella can go anywhere Parrot can go.
23 * **Complete language agnosticism**. Rosella intends to be usable from
24 programs written in any language running on Parrot.
25 * **Encapsulate low-level details**. Parrot provides lots of tools, though
26 many are too low-level. Rosella attempts to encapsulate some ugly details
27 behind nice, friendly, and usable interfaces.
28 * **Extensibility**. Rosella aims to provide good defaults, but also to allow
29 aggressive modifications, configurations, and subclassing behaviors to those
30 who need something different.
31 * **Provide well-known tools**. Rosella isn't an experimental research
32 project. It aims to provide Parrot implementations of well-known patterns,
33 practices, architectures, and tools. Rosella borrows good ideas from
34 well-known and high-quality sources.
35 * **Focus on the user**. Rosella is interested in making things easier for
36 other coders. It wants to provide things that other coders will actually use
37 and appreciate. Rosella is a set of tools for coders, not for end users.
31e3323 @Whiteknight Add note about future-proofing being a design goal of Rosella
authored Apr 3, 2011
38 * **Future Proof**. Rosella provides interfaces, sometimes for very simple
39 features or algorithms. In the future when Parrot changes or adds new
40 features, Rosella will insulate the user from them. When Parrot adds proper
41 threading, Rosella will be updated to provide thread-safety where needed.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
42
43 ## Rosella Components
44
45 ### Rosella Stable Libraries
46
47 Here is a list of Rosella's libraries which are currently
48 considered to be "stable" enough for general use:
49
889d350 @Whiteknight add links to libraries on the index page
authored Mar 30, 2011
50 #### [Core](/Rosella/libraries/core.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
51
52 Rosella's Core library provides a handful of routines used by
53 the other Rosella libraries. This library provides basic behavior
54 for working with an assortment of "type" meta-objects, and for
55 implementing a standard system of object constructor behavior.
56
889d350 @Whiteknight add links to libraries on the index page
authored Mar 30, 2011
57 #### [Action](/Rosella/libraries/action.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
58
59 The Action library implements the Command pattern. Sequences of
60 instructions can be bundled together into an Action object, and
61 can be invoked later.
62
889d350 @Whiteknight add links to libraries on the index page
authored Mar 30, 2011
63 #### [Container](/Rosella/libraries/container.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
64
65 The Container library implements a Dependency Injection, Inversion
66 of Control container type which can be used to help decouple
67 modules in a program. The Container utilizes the Action library
68 to setup constructor injection and method injection behaviors
69 on registered types.
70
016e62c @Whiteknight Event is a supported library now. Add it to the documentation in all …
authored Apr 5, 2011
71 #### [Event](/Rosella/libraries/event.html)
72
73 The Event library provides a subscribe/publish system to aide in aggressive
74 application decoupling. Event publishers can be unaware of the details of
75 event subscribers, and vice-versa. Applications become easier to maintain
76 because important communication pathways do not need to have hard-coded
77 senders and receivers.
78
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
79 #### [FileSystem](/Rosella/libraries/filesystem.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
80
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
81 The FileSystem library provides a friendly interface for working with the
82 filesystem. It provides object types for files and directories and a number
83 of utilities for working with each.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
84
91b7e4f @Whiteknight tap_harness -> harness
authored Mar 30, 2011
85 #### [Harness](/Rosella/libraries/harness.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
86
87 A companion to the Test library, The TAP Harness library
88 implements the logic necessary to quickly construct a TAP harness
89 for executing unit tests and reporting the results. Rosella's own
90 test harness is written using this library.
91
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
92 #### [Memoize](/Rosella/libraries/memoize.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
93
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
94 The Memoize library adds in functionality to add memoization and caching to
95 subroutines. There is a simple version and a version which uses proxies to add
96 more features, but is slower.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
97
889d350 @Whiteknight add links to libraries on the index page
authored Mar 30, 2011
98 #### [Mock Object](/Rosella/libraries/mockobject.html)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
99
100 The MockObject library uses the Rosella Proxy library to implement
101 full-featured mock objects for use in testing with the Test
102 library. Several tests in the Rosella test suite are implemented
103 using this library.
104
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
105 #### [Path](/rosella/libraryes/path.html)
568a03a @Whiteknight memoize is now stable. Update webpage to reflect that
authored May 17, 2011
106
4846ee7 @Whiteknight add all stable libraries to the list on the main page
authored Sep 16, 2011
107 The Path library provides utilities for searching the contents of large nested
108 aggregate objects using string names.
109
110 #### [Proxy](/Rosella/libraries/proxy.html)
111
112 The Proxy library provides the tools necessary to create a wide
113 array of proxy objects.
114
115 #### [Query](/Rosella/libraries/query.html)
116
117 The Query library provides a number of utilities for working with aggregate
118 objects including higher-order functions, group operations, and data streams.
119
120 #### [String](/Rosella/libraries/string.html)
121
122 The String library provides a number of utilities and powerful interfaces for
123 working with strings.
124
125 #### [Test](/Rosella/libraries/test.html)
126
127 Inspired by testing libraries such as xUnit and Test::More,
128 The Rosella Test library provides the tools and utilities to
129 quickly write unit tests for your software. Rosella's own test
130 suite is written using this library.
131
132 #### [Template](/Rosella/libraries/template.html)
133
134 The Template library provides an engine for text templating tasks.
135
136 #### [Winxed](/Rosella/libraries/winxed.html)
137
138 The Winxed library contains a number of tools for building Winxed-based
139 projects.
568a03a @Whiteknight memoize is now stable. Update webpage to reflect that
authored May 17, 2011
140
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
141 ### Rosella Development Libraries
142
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored Mar 31, 2011
143 Rosella has a number of other libraries in planning and development. These
144 libraries are not yet considered mature enough to include as part of a
145 regular release. For the complete list with descriptions and ideas, see the
146 [future libraries page](/Rosella/libraries/future.html).
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
147
148 ## Install
149
c927cd9 @Whiteknight Remove information about development libraries from the index page. A…
authored Mar 31, 2011
150 ### Build Dependencies
151
152 * [Parrot](http://github.com/parrot/parrot) : Rosella runs on top of the
153 Parrot VM. You cannot build, run, or use Rosella in any way without Parrot.
154 * [Winxed](http://code.google.com/p/winxed) : Rosella is written in the
155 Winxed language. You need Winxed to build Rosella, but you do not need
156 Winxed to run it. Winxed has no runtime libraries of its own.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
157
158 ### Installing With Plumage
159
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
160 [Plumage](http://github.com/parrot/plumage) is a
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
161 package-management program for Parrot. If you have Plumage
162 and Winxed already installed getting Rosella is a breeze:
163
164 $ plumage install rosella</pre>
165
166 That's all there is to it! You now have Rosella. If you don't have
167 Plumage on your system you'll need to follow the rest of the
168 instructions below.
169
170 ### Get the Source
171
172 You can download this project in either
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
173 [zip](http://github.com/Whiteknight/Rosella/zipball/master) or
174 [tar](http://github.com/Whiteknight/Rosella/tarball/master) formats.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
175
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
176 You can also clone the project with [Git](http://git-scm.com)
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
177 by running:
178
179 $ git clone git://github.com/Whiteknight/Rosella
180
181 ### Installing Manually
182
183 Once you have a copy of the source and all the necessary
184 dependencies you can build, test and install Rosella:
185
186 $ winxed setup.winxed build
187 $ winxed setup.winxed test
188 $ winxed setup.wixned install
189
190 ## Project Info
191
192 ### License
193
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
194 Rosella is released under the terms of the Artistic 2.0 license.
195 See the LICENSE file in the repo for more details.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
196
197 ### Authors
198
1b968f4 @Whiteknight list libraries in the page header
authored Mar 17, 2011
199 Rosella is written by [Whiteknight](http://whiteknight.github.com)
200 (wknight8111@gmail.com). See the CREDITS file in the repo for more details
201 about contributors and the people and projects which have inspired Rosella.
1dbcc31 @Whiteknight index.html -> index.md
authored Mar 17, 2011
202
203 <div class="footer">
204 get the source code on GitHub :
205 <a href="http://github.com/Whiteknight/Rosella">Whiteknight/Rosella</a>
206 <br/>
207 The image of the Crimson Rosella at the top of the page is from
208 <a href="http://commons.wikimedia.org/wiki/File:Crimson_Rosella,_Culburra_Beech.jpg">
209 D. Gordon E. Robertson on Wikipedia
210 </a>. The image is released under the terms of the CC-By-SA-3.0 and/or
211 the GFDL licenses.
212 </div>
213
Something went wrong with that request. Please try again.