Webdev:Betterness: Difference between revisions

 
(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? PECL?
** 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).


=== Ruby ===
=== 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 lorchard, something we can build on
* *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]
3,035

edits