-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
215 lines (186 loc) · 15.3 KB
/
index.html
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
---
layout: default
---
<header>
<div class="sixteen columns">
<h1 class="remove-bottom"><a href="./">Xi Project</a></h1>
</div>
<div class="row">
<div class="one-third column">
<h4 class="subheader">Not your grandfather's PHP.</h4>
</div>
<div class="two-thirds column">
<menu>
<li class="columns alpha"><a href="#section-introduction">Introduction</a></li>
<li class="columns"><a href="#section-components">Components</a></li>
<li class="columns"><a href="#section-roadmap">Roadmap</a></li>
<li class="columns"><a href="#section-contributing">Contributing</a></li>
<li class="columns omega"><a href="#section-licensing">Licensing</a></li>
</menu>
</div>
</div>
</header>
<hr class="remove-bottom" />
<div id="main" role="main">
<section class="row introduction">
<div class="sixteen columns">
<h2 id="section-introduction">Introduction</h2>
</div>
<div class="one-third column">
<h3>Ideology</h3>
<p>We do <strong>PHP</strong>. We like to do it using continuously evolving industry <strong>best practices</strong>, despite the language's shortcomings. We like to hone our work to a glamorous shine and <strong>share it with others</strong> to use and reuse. This is the fruit of our labour.</p>
<p>Xi aims to be the de-facto destination to bootstrap your PHP development. In other words, if there's something architectural you need to construct every time you fire up a PHP project, this might be the right place for a generic implementation.</p>
<p>Come and join us - contributions are welcome!</p>
</div>
<div class="one-third column">
<h3>Features</h3>
<p>Here's something the project can offer:</p>
<ul class="disc">
<li><strong>Built for PHP 5.3 and 5.4</strong>: we like to stay on top of our game.</li>
<li><strong>Architecturally sound</strong>: we advocate standards for components; no copy-paste from days of yore to be found here.</li>
<li><strong>Loose coupling</strong>: no huge download, cherry pick only the components you use.</li>
<li><strong>Based on Github</strong>: easy to use, fork and contribute to.</li>
<li><strong>New BSD license</strong>: use the code freely, no strings attached.</li>
<li><strong>Clean copyright</strong>: we require contributors to sign a license agreement (don't worry, it's easy and effortless).</li>
<li><strong>Corporate backing</strong>: sponsored by <a href="http://fraktio.fi/">Fraktio</a>, we aren't going down tomorrow.</li>
</ul>
</div>
<div class="one-third column">
<h3>Let's get going!</h3>
<p>Xi is hosted on <a href="http://github.com">Github</a>, where you can <strong><a href="http://github.com/xi-project">browse all the individual components</a></strong> and see what is available. Feel free to fork, but we appreciate if you can contribute your improvements!</p>
<p>For a general overview of our components, <a href="#section-components">see below</a>.</p>
</div>
</section>
<hr />
<section class="row components">
<header class="one-third column">
<h2 id="section-components">Components</h2>
<h4 class="subheader">Highlights of what we offer</h4>
</header>
<div class="two-thirds column">
<h3><a href="http://github.com/xi-project/xi-collections">Collections</a></h3>
<p>Enhances your daily PHP workflow with a hearty dose of functional programming in the spirit of <a href="http://documentcloud.github.com/underscore/">Underscore.js</a>.</p>
<h3><a href="http://github.com/xi-project/xi-filelib">Filelib</a></h3>
<p>Filelib is a reusable file library component for PHP 5.3 applications.</p>
<h3><a href="http://github.com/xi-project/xi-doctrine">Doctrine</a></h3>
<p>Extends the core facilities of <a href="http://doctrine-project.org">Doctrine ORM</a>. Test fixture creation, a more robust internal API for repositories and query builders, and more!</p>
<h3><a href="http://github.com/xi-project/xi-test-selenium">Selenium2 WebDriver Server wrapper</a></h3>
<p>Leverages <a href="http://code.google.com/p/selenium/">Selenium2</a> and the <a href="http://code.google.com/p/selenium/wiki/JsonWireProtocol">Json Wire Protocol</a> to make web testing easier. Also facilitates acceptance testing by having built-in screenshot capabilities. Build your documentation and run your acceptance tests in one step!</p>
</div>
</section>
<hr />
<section class="row roadmap">
<header class="one-third column">
<h2 id="section-roadmap">Roadmap</h2>
<h4 class="subheader">What's in the horizon</h4>
</header>
<div class="two-thirds column">
<h3>More solid documentation</h3>
<p>We acknowledge getting started with most of our components isn't necessarily the easiest thing in the world. Even if the code is solid, users need and expect more. With components stemming mostly from internal development, getting documentation up to scratch is no trivial task, but we try.</p>
</div>
</section>
<hr />
<section class="row contributing">
<header class="one-third column">
<h2 id="section-contributing">Contributing</h2>
<h4 class="subheader">Notes to get you started</h4>
<menu>
<li><a href="#section-contributing-overview">Project overview</a></li>
<li><a href="#section-contributing-guidelines">Guidelines</a></li>
<li><a href="#section-contributing-standards">Standards</a></li>
<li><a href="#section-contributing-other">Other</a></li>
</menu>
</header>
<div class="two-thirds column">
<h3 id="section-contributing-overview">Project overview</h3>
<p>The Xi project contains multiple components, represented as repositories under the <a href="http://github.com/xi-project">xi-project organization</a> in Github. Each of these components has a designated maintainer, whose job is to upkeep quality and cohesion within the component. (In practice, this boils down to accepting pull requests.)</p>
<p>For contributing to an existing project, you should create a fork of a component and send your updates as pull requests on Github. If you want to contribute an entirely new component, you must assign the repository's ownership to the <em>xi-project</em> account, in which case the repository will be shown in the organization's Github page. You, of course, will be implicitly designated as the component's maintainer.</p>
<h3 id="section-contributing-guidelines">Guidelines</h3>
<h4 class="subheader">Tool support</h4>
<p>Components should use <a href="http://getcomposer.org">Composer</a> for autoloading and dependency management and <a href="http://travis-ci.org">Travis CI</a> for Continuous Integration.
<h4 class="subheader">Directory layout</h4>
<p>Components should follow a predictable structure.</p>
<dl>
<dt>/</dt>
<dd>README and LICENSE files</dd>
<dt>/library</dt>
<dd>The classes defined by your component.</dd>
<dt>/tests</dt>
<dd>Test case classes and bootstraps, with a directory structure mirroring /library.</dd>
</dl>
<h4 class="subheader">Versioning</h4>
<p>Tag release versions using git tags. Use <a href="http://semver.org">semantic versioning</a>:</p>
<ul>
<li><em><q>A normal version number MUST take the form X.Y.Z where X, Y, and Z are integers. X is the major version, Y is the minor version, and Z is the patch version. Each element MUST increase numerically.</q></em></li>
<li>Bump the <em>patch version</em> if you apply small tweaks or include small additional features.</li>
<li>Bump the <em>minor version</em> if you make changes that break backwards compatibility.</li>
<li>Bump the <em>major version</em> if you make significant refactorings; however, if you're in major version 0, bumping the minor version should be sufficient.</li>
</ul>
<p>For working with Git, we recommend the <a href="http://nvie.com/posts/a-successful-git-branching-model/">Git branching model</a>, implemented by <a href="https://github.com/nvie/gitflow">git-flow</a> for your convenience.</p>
<h3 id="section-contributing-standards">Standards</h3>
<h4 class="subheader">Coding standards</h4>
<p>We're not making our own - all projects should adhere to the <a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md">PSR-2</a> coding standard. There's just a few points to make explicit.</p>
<ul>
<li>Organize your classes under a single component-level namespace. This namespace should be the same as your component's name, eg. the classes in <a href="http://github.com/xi-project/xi-collections">xi-collections</a> reside under <code>Xi\Collections</code>.</li>
<li>For exceptions, <a href="http://framework.zend.com/wiki/display/ZFDEV2/Proposal+for+Exceptions+in+ZF2">create a component level marker interface</a>, then create concrete classes that implement the marker interface and preferably extend a <a href="http://www.php.net/manual/en/spl.exceptions.php">semantic PHP Exception type</a> instead of the plain <code>Exception</code> class.</li>
<li>Do not define global functions and depend on them internally; the choice of which global functions to define should be for the component's user to make.</li>
</ul>
<h4 class="subheader">Architectural standards</h4>
<ul>
<li>Document at least your core architectural design decisions. Why was the component structured the way it is? What were your main considerations? Inability to understand your design motivations tends to induce a high WTF factor.</li>
<li>Do not depend directly on externals if you can avoid it. Instead, provide a suitable abstraction for integration with the externality. This allows for a greater potential degree of generalization and reusability.</li>
<li><em>Prefer TDD</em> (or derivatives) and high code path coverage to praying it will work. If you can't have high code path coverage, <em>have smoke tests</em> in the very least.</li>
<li>Please <a href="http://www.artima.com/intv/dry.html">stay DRY</a>.</li>
</ul>
<h3 id="section-contributing-other">Other</h3>
<h4 class="subheader">Recommendations</h4>
<p>
Most of us use <a href="http://www.jetbrains.com/phpstorm/">PhpStorm</a> as our IDE. We are happy to recommend it.
</p>
<p>
<a href="http://www.jetbrains.com/phpstorm/">
<img src="./img/phpstorm_logo.png" alt="PhpStorm" style="width: 300px; max-width: 100%">
</a>
</p>
</div>
</section>
<hr />
<section class="row licensing">
<header class="one-third column">
<h2 id="section-licensing">Licensing</h2>
<h4 class="subheader">How we avoid legal hassle</h4>
<menu>
<li><a href="#section-licensing-cla">Contributor License Agreement</a></li>
<li><a href="#section-licensing-new-bsd">New BSD license</a></li>
<li><a href="#section-licensing-who">Wait, what? Who are these guys?</a></li>
</menu>
</header>
<div class="two-thirds column">
<h3 id="section-licensing-cla">Contributor License Agreement</h3>
<p>Due to corporate issues and a resulting requirement for copyright cleanliness, we have to require contributors to sign a license agreement. The agreement basically states that you allow us the use of code contributed by you, guaranteeing the project's legal safety. We'll be featuring an electronic form for you to sign the agreement in short order.</p>
<h3 id="section-licensing-new-bsd">New BSD license</h3>
<p>The <a href="http://en.wikipedia.org/wiki/BSD_licenses#3-clause_license_.28.22New_BSD_License.22_or_.22Modified_BSD_License.22.29">New BSD license</a> allows pretty much everything except the use of the contributors' names in forks without explicit permission. We chose it to guarantee that all code contributions can be salvaged should anything happen to the project, and to guarantee that the code is safe to use in proprietary, third-party projects.</p>
<p><a href="LICENSE">This is how your LICENSE file should look.</a></p>
<h3 id="section-licensing-who">Wait, what? Who are these guys?</h3>
<p>The Xi project is not a legal entity, but the license's copyright statement has to reference at least one. We'd like Xi to be a community driven effort and not rest on corporate entities, so we used our actual names. The license states: <em><q>"Copyright (c) 2012, Mikko Forsström, Mikko Hirvonen, Eevert Saukkokoski"</q></em>. These are the names of three guys with intent to improve the state of PHP.</p>
<p>The notation is merely symbolic; we represent the Xi project, and you aren't signing away anything you wouldn't expect to with a New BSD license.</p>
<p>That said, software licensing is not a simple beast, and none of us are legal experts. If you think there's something wrong with out licensing terms, contact us so we can sort it out.</p>
</div>
</section>
</div>
<hr class="remove-bottom" />
<footer class="row">
<div class="one-third column author">
<h4>Author</h4>
<p>I'm <a href="http://fi.linkedin.com/pub/eevert-saukkokoski/30/4b8/b8a">Eevert Saukkokoski</a>, web software developer. On <a href="http://github.com/Ezku">Github</a>, <a href="http://twitter.com/Ezku">Twitter</a> <a href="http://ezku.tumblr.com">et al.</a> I'm known as <em>Ezku</em>.</p>
<p>For details on individual component authors, see the corresponding Github repositories.</p>
</div>
<div class="one-third column sponsor">
<h4>Sponsor</h4>
<p>The Xi Project is sponsored by <a href="http://fraktio.fi/">Fraktio</a>, Finland. The company relinquishes any copyright claims to work done on Xi by company employees.</p>
</div>
<div class="one-third column colophon">
<h4>Colophon</h4>
<p>This page was built using <a href="http://html5boilerplate.com">HTML5 Boilerplate</a>, <a href="http://getskeleton.com">Skeleton framework</a>, <a href="http://www.google.com/webfonts/specimen/Open+Sans">Google Web Fonts</a> and lovingly handcrafted HTML5.</p>
</div>
</footer>