COSCUP 2023

Peter

2023/07/29

Collaborating the PHPBrew : past, now and future

Slide

About me

  • Peter, GitHub

  • Active open source contributor

  • Speaker

    • COSCUP、MOPCON......

  • An associate engineer

    • DevOps

    • Back-end

    • System Architecture Researching

    • Web Application Security

    • PHP, Python and JavaScript

  • Industrial Technology Research Institute

    • Smart Grid Technology (2017~2021)

  • Institute for Information Industry

    • Database, Data platform architecture (2021~)

Outlines

  • Survey (Have you heard or used PHPBrew?)

  • Short introduction about the PHPBrew

  • The past story of the PHPBrew. (The history of the PHPBrew)

  • Sharing collaborating/contributing stories (tips?)

  • Focusing on us!

  • Summary

Survey

Have you heard or used PHPBrew?

PHPBrew Introduction

Let me tell you a scenario...

Compiling the PHP from source

  • For tests

    • Including extension tests and version tests

  • For tests about contributing php-src

Building PHP-7.4 from source

# Example for Ubuntu, Linux distribution

# Install some required C/C++ libraries and C/C++ building tools
sudo apt-get update
sudo apt-get install build-essential


# Building the PHP-7.4 from source
cd /tmp
wget https://www.php.net/distributions/php-7.4.0.tar.gz
tar xfz php-7.4.0.tar.gz

./configure --prefix=/opt/php-7.4 \
            --with-pdo-pgsql \
            --with-zlib-dir \
            --with-freetype \
            --enable-mbstring \
            --enable-soap \
            --enable-calendar \
            --with-curl \
            --with-zlib \
            --enable-gd \
            --with-pgsql \
            --disable-rpath
......
 
 make -j 4 && make install

There'are many configuring options, right?

curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
chmod +x phpbrew.phar

# Move phpbrew.phar to somewhere can be found by your $PATH
sudo mv phpbrew.phar /usr/local/bin/phpbrew
phpbrew init

# I assume you're using bash
echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc

# For the first-time installation, you don't have phpbrew shell function yet.
source ~/.phpbrew/bashrc

# Fetch the release list from official php site...
phpbrew update

# List available releases
phpbrew known

# List available variants
phpbrew variants

# Let's brew something out.
phpbrew --debug install --stdout 7.4 as 7.4-dev +default +intl

Making PHP compiling convenient

The past story of the PHPBrew

PHPConf 2013 Lightning talk - PHPBrew

The past story of the PHPBrew

The PHPBrew father–c9s

Let me tell the true story

One day...

One day...

In my Twitter profile

That's the reason why I become a collaborator 

你不找別人,別人也會來找你

My collaborating story

Discussion

  • Talking with PHPBrew father in Twitter.

  • Resolving issues.

    • Building/Compiling problems.

    • Usage problems.

    • And so on.

  • Update documentations. (GitHub Wiki)

Update documentations

Update documentations

Getting some bugs

Does anyone fix it?

No. You only fix it by yourself.

My collaborating story

Resolving issues

  • Legacy codes/projects are everywhere.

    • PHP ​version ​​​​​​compatibility is the challenge.

  • Dependencies issues are another challenge

    • "corneltek/pearx": "^1.3.5"

    • "corneltek/curlkit": "^1.0.11"

    • "corneltek/cliframework": "3.0.x-dev#01cee2d491085cfae63c677611b5e4604624771e"

    • corneltek/getoptionkit

My collaborating story

Resolving issues..."corneltek/cliframework"

  • Trying to fix some bugs....

    • Dependencies errors are coming...

    • It should fix dependency bug firstly...

PHP ​version ​​​​​​compatibility issues

  • Instant Upgrades

    • PHPUnit, Symfony and other frameworks compatibility

  • Automated Refactoring

    • PHP 7.x, PHP 8.x versions upgrading compatibility

Rector is the great tool for resolving this issue

My collaborating story

Strange issues & dependencies

Tracing many dependency codes and funny talk...

My collaborating story

Strange issues/dependencies

Tracing many dependency codes...corneltek/getoptionkit

My collaborating story

  • Building or Compiling problems are coming...

  • They're forwarded to our projects because it's convenient!
  • cannot install gd with php 8.1.12 on ubuntu 18.04

  • OpenSSL symbol(s) not found for architecture x86_64

  • PHP Installation fails on Ubuntu 22.04 WSL2

My collaborating story

Issues are not related to projects

PHP Extension installation issues

Features and Improvements

Benefits or sense of achievement?

Tracing codes makes your skill powerful

Collaborating with people

Tips?

When you want to contribute...

  • Basic

    • Read documentations.

    • Update documentations.

    • Trying to build, run and test it.

    • Trying to answer questions in issue tracking system.

    • Trying to submit/report issues.

  • Advanced

    • Trying to trace codes & find current problems/bugs.

    • Submit pull requests to resolve the issue.

    • Implementing features.

    • Improvements.

不要問為何沒有人接手,先承認你就是「沒有人」

The future of the project

  • Short term

    • Support PHP-8.2

    • Optimize PHPBrew Release workflow

    • Update the documentation

  • Long term

    • Containerize the PHPBrew

      • Making the PHPBrew building tool environment easy!

      • docker-phpbrew

Focusing on us!

Stickers are available!

Getting started with using the PHPBrew to manage multiple PHP versions!

Any Questions?

COSCUP 2023

By peter279k

COSCUP 2023

COSCUP 2023, Collaborating the PHPBrew : past, now and future

  • 94