| {namespace buck.faq} |
| |
| |
| /** |
| * @param id attribute for this blob of HTML so users can link to an individual FAQ. We should make |
| * an effort to keep these identifiers stable to avoid breaking links. Therefore, when choosing |
| * an id, try to make it generic enough so that it is forward-compatible. |
| * @param question Question. |
| * @param shortAnswer Try to keep this to a one-liner. |
| * @param? longAnswer This portion of the answer can include more detail. |
| */ |
| {template .faq} |
| <div class="{css faq}" id="{$id|id}"> |
| <div class="{css faq_q}">Q: {$question}</div> |
| <div class="{css faq_a}"> |
| A: {$shortAnswer|noAutoescape} |
| {if $longAnswer} |
| <p>{$longAnswer|noAutoescape} |
| {/if} |
| <p></div> |
| </div> |
| {/template} |
| |
| |
| /***/ |
| {template .soyweb} |
| {call buck.page} |
| {param title: 'FAQ' /} |
| {param content} |
| |
| {call .faq} |
| {param id: 'why-is-it-called-buck' /} |
| {param question} |
| Why is it called Buck? |
| {/param} |
| {param shortAnswer} |
| The word "buck" is similar to the word "build" and is quick to type. |
| It also has awesome mascot potential. |
| {/param} |
| {/call} |
| |
| {call .faq} |
| {param id: 'windows-support' /} |
| {param question} |
| Why doesn't Buck support Windows? |
| {/param} |
| {param shortAnswer} |
| There are a number of engineering tasks that need to be addressed before Buck will run on Windows. |
| {/param} |
| {param longAnswer} |
| <ul> |
| <li>Buck uses symlinks under the hood in many places. We need to map that concept to the Windows |
| equivalent throughout the codebase. |
| <li>Buck hardcodes the use of OS X/Linux file and path separators all over the place. This may |
| be a poor software design choice, but it makes the code more readable in many circumstances, |
| particularly in unit tests. |
| <li>Documentation becomes more work to maintain. For example, a nifty trick from the OS X/Linux |
| command line, such as: |
| <pre>buck targets --type java_test | xargs buck test</pre> |
| does not work on Windows, so that must be documented separately. |
| <li>The <code>./bin/buck</code> script is written in Bash, so to support Windows, the equivalent |
| would have to be maintained as a Windows Batch Script. Keeping both scripts in sync would be |
| non-trivial. Alternatively, the run script could be written in a platform-independent |
| language, such as Ruby, but that would require users to install an additional tool. |
| <li>It increases the surface area of what needs to be tested. |
| </ul> |
| Despite all of the work it will require, we do hope to support Windows in the future. |
| {/param} |
| {/call} |
| |
| {call .faq} |
| {param id: 'why-is-buck-built-with-ant' /} |
| {param question} |
| Why is Buck built with Ant instead of Buck? |
| {/param} |
| {param shortAnswer} |
| Self-hosting systems can be more difficult to maintain and debug. |
| {/param} |
| {param longAnswer} |
| If Buck built itself using Buck, then every time a change was made to Buck's source, |
| the commit would have to include a new Buck binary that included that change. It would be easy to |
| forget to include the binary, difficult to verify that it was the correct binary, and wasteful to |
| bloat the Git history of the repository with binaries that could be rebuilt from source. |
| Building Buck using Ant ensures we are always building from source, which is simpler to verify. |
| <p> |
| Also, because Ant is a more mature build system than Buck, it has support for features that we |
| have not had time to include in Buck yet, such as generating Javadoc, static analysis |
| via <a href="http://pmd.sourceforge.net/">PMD</a>, Python unit tests, etc. |
| <p> |
| That said, as a sanity check, Buck is capable of building itself. Once you build Buck using Ant, |
| you can re-build Buck using Buck by running <code>./bin/buck build buck</code>. |
| {/param} |
| {/call} |
| |
| {/param} |
| {/call} |
| {/template} |