Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to to manage & develop big TYPO3 projects?

I am developing TYPO3 projects since 2006 now, and projects are getting bigger and more complex. Setting up a simple CMS site with a contact form and news listing is all routine.

Right now, we finished a bigger project: A platform for an international company with countless extensions: Login & registration, news, listing database records, dynamic contact forms, surveys & statistics, intranet functions: document upload & download, several backend "tweaks" per TCA modifications, etc. .

The project managers got upset at us developers, because sometimes, after we finished on function X and later committed function Y to the dev server, function X was broken. This was related to typoscript settings, extension interdependencies, versioning errors or sometimes simple programming mistakes and typos. I know how to take care of the latter, but in general:

From your experience:

How can we develop an error-proof system in TYPO3, where everything works in hand and extensions don't get in their way? In other words: How can we secure and isolate functionalities (extensions) - and avoid those interdepency issues?

We are working in a DEV team with two developers, and we already use:

  • Subversion Repository
  • Local DEV server for development & testing
  • External typoscript configuration files, split into single files for each extension

Edit for Bountyhunters:

What I am looking for is a best-practice-summary that might include these topics:

  • General workflow habits
  • General coding habits
  • Reliability of our subversion commits (or Git)
  • Unit testing (PHPUnit, Selenium?)
  • Deployment (I haven't yet figured out how automated deployment can help us)
  • Typoscript best practices
like image 549
Mateng Avatar asked Apr 07 '12 12:04

Mateng


2 Answers

Problems we could find in large TYPO3 projects are not to much different from any development project.

General practices :

  • configure continuous integration platform with continuous deployment tools;
  • Test Driven Development with automated testing;
  • robust architecture (dB, URL routing, ...);
  • performance tests during development;
  • use versionning with formatted comments;
  • use powerful IDE as PHPStorm, Eclipse, Netbeans;

Common TYPO3 practices :

  • use official API;
  • follow TYPO3 API code guideline;
  • use TYPO3 hooks where You can if You need to modify the logic of Core or 3rd party extensions;
  • use TypoScript constants to separate data from logic in Your configuration;

Additional references :

  • TYPO3 Best Practice Workshop
  • TYPO3 Best Practices (de)
  • TDD & Best Practices mit TYPO3 (de)

Extensions could help to manage complex TYPO3 installation :

  • caretaker
  • additional reports

Use modern project management methodologies & tools

  • Scrum, Kanban, lean developement principles
  • Bugtrackers as Redmine, Trac

Books :

  • php|architect's Guide to Enterprise PHP Development
like image 175
Fedir RYKHTIK Avatar answered Oct 21 '22 00:10

Fedir RYKHTIK


I absolutely recommmend start using PHPUnit for unit testing, but remember unit testing is really about how you create the code in the first place, not usually something you add later. But of course, better late than never.

You should consider setting up a build server like jenkins/hudson or atlassian bamboo. The latter is quite nice and integrates with zend studio which in my opinion is the better choice when developing in PHP. In general the atlassian products are widely used for software projects. (Jira + confluence + greenhopper in particular)

like image 4
jornare Avatar answered Oct 21 '22 01:10

jornare