3,035
edits
(→Goals) |
|||
(15 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
'''Webdev can be boring, let's focus on the good parts''' | '''Webdev can be boring, let's focus on the good parts''' | ||
== Goals == | |||
* Evaluate possible libraries to be extracted from finished projects for re-use | |||
* Create two PHP libs in SVN for re-use | |||
* Create better a query library for AMO to take load off the database | |||
* Release two public projects that can be re-used by web developers in the community | |||
* Finishing up webdev blog and portfolio/project pages | |||
== Take Action == | == Take Action == | ||
Line 40: | Line 46: | ||
** what? | ** what? | ||
* Not much of a library scene | * Not much of a library scene | ||
** PEAR | ** PEAR | ||
** PECL | |||
** ezcomponents | |||
** Zend Framework components | |||
* So easy to do bad things | * So easy to do bad things | ||
** Isn't this why we have interviews? | ** Isn't this why we have interviews? | ||
** dd: Easy for good developers to do bad things too | |||
** Isn't thiswhy we have code review? | |||
* Difficult to test (also related to codebase) | * Difficult to test (also related to codebase) | ||
** Legacy code is always difficult to test | |||
** phpunit for unit testng | |||
** PHPUnderControl etc for continuous integration | |||
* Slow to develop/debug | * Slow to develop/debug | ||
** Not with proper tools (frameworks, xdebug, etc) | ** Not with proper tools (frameworks, xdebug, etc) | ||
** Never ever heard this as a criticism before??? | |||
* dd: No good CLI | |||
** What are you looking for? We do plenty of cli php | |||
=== Python === | === Python === | ||
Line 58: | Line 75: | ||
** We could use PHP's DBO. We never have because (as is pointed out elsewhere) ORM's eventually get in your way. | ** We could use PHP's DBO. We never have because (as is pointed out elsewhere) ORM's eventually get in your way. | ||
* Scalable, I swear | * Scalable, I swear | ||
** *dd* Everything is scalable | |||
Cons: | Cons: | ||
* Less Familiar | * Less Familiar | ||
* Bad past experience | * Bad past experience | ||
* Smaller recruitment pool (both employees and volunteers) | * Smaller recruitment pool (both employees and volunteers) | ||
** *dd* This is becoming less of a case as python gains ground (thanks to Google AppEngine). | |||
=== | === PRuby === | ||
Discarded because it doesn't start with 'P'. | Discarded because it doesn't start with 'P'. | ||
Line 70: | Line 89: | ||
; Cake : we agree, it sucks. ''wait, what? when did we agree on that?'' | ; Cake : we agree, it sucks. ''wait, what? when did we agree on that?'' | ||
; Symfony : lorchard has instructed me to punch anyone who wants to use it | ; Symfony : lorchard has instructed me to punch anyone who wants to use it | ||
* *dd* As PHP goes, I actually like it, but would not do any new projects with it. | |||
; Zend/Pear : big = scary, but can we poach libs? | ; Zend/Pear : big = scary, but can we poach libs? | ||
; Kohana : minimal, favored by ozten and | * *dd* libs are very poachable | ||
; Kohana : minimal, favored by ozten, lorchard and rdoherty, something we can build on | |||
; Django : ''the'' Python framework, full stack, great for getting started, may get in the way after a while | ; Django : ''the'' Python framework, full stack, great for getting started, may get in the way after a while | ||
* *dd* very good for re-use - encouraged from the very start of building apps | |||
* *dd* you can swap out parts you don't like fairly easy - since its just python :) | |||
; Turbogears : "best-of-breed" framework, glue around small libs, focusing on Restful web & scalability, we own the creator (kdangoor) | ; Turbogears : "best-of-breed" framework, glue around small libs, focusing on Restful web & scalability, we own the creator (kdangoor) | ||
; Werkzeug : minimal, used in bosley, not for beginners | ; Werkzeug : minimal, used in bosley, not for beginners | ||
=== Cake? === | |||
* Do we all agree Cake sucks? | |||
** +1 lorchard | |||
*** At least the version behind AMO does. | |||
*** Too much magic, not enough made explicit. | |||
**** Always seem to be disabling things to get things done. | |||
**** For example: ORM binding / unbinding / relational magic usually results in abandonment and dropping down to SQL. | |||
*** Code is not-so-great for reading when docs are inadequate or unavailable. | |||
== Version Control == | == Version Control == | ||
Line 104: | Line 136: | ||
* CouchDb, Tokyo Cabinet, ... | * CouchDb, Tokyo Cabinet, ... | ||
* Our apps are pretty standard relational CRUD | * Our apps are pretty standard relational CRUD | ||
** Beyond ORM, consider the actual data needs - including schema, indexing, caching, etc. | |||
*** Just ask Lars. | |||
** RDBMS (eg. MySQL, Postgres) are not the end-all-be-all for data. | |||
** Keeping models geared toward intention/purpose rather than relations can help underlying technology stay flexible. | |||
=== Conclusion === | === Conclusion === | ||
Go with MySQL unless you have good arguments against or an [http://www.flickr.com/photos/termie/3393701864 epic beard] | Go with MySQL unless you have good arguments against or an [http://www.flickr.com/photos/termie/3393701864 epic beard] | ||
*dd* We can experiment with CouchDB and TokyoCabinet for lower-risk projects. | |||
== l10n and i18n == | == l10n and i18n == | ||
Line 133: | Line 171: | ||
* [[WebDev:FrontendCodeStandards]] | * [[WebDev:FrontendCodeStandards]] | ||
* [http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html Sass]? Makes CSS more readable | * [http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html Sass]? Makes CSS more readable | ||
** Not too keen on this, we have lots of contractors, 3rd parties and contributors working on sites. Adding in the extra complexity of install -> edit -> compile -> view may not work. | |||
== Working with Designers/Contractors == | == Working with Designers/Contractors == | ||
* [https://wiki.mozilla.org/Webdev:Web_Design_Best_Practices Web Design best practices] | * [https://wiki.mozilla.org/Webdev:Web_Design_Best_Practices Web Design best practices] |
edits