« Return to Thread: [PEPr] Comment on File System::S3

Re: Re: [PEPr] Comment on File System::S3

by tfk :: Rate this Message:

Reply to Author | View in Thread

On Dec 6, 2007 5:49 AM, Gregory Beaver <greg@...> wrote:

> till wrote:
> > Cesar,
> >
> > I was not aware of your package and DID NOT COPY ANY OF YOUR CODE.
> >
> > I build this code over 3 months ago and used it in the last month on a
> > website and since I was using it in production decided to release it.
> > I have no idea when you came up with it, but there are also other
> > people who wrote similar packages.
> >
> > E.g. Clay notified me last night that he had written a very similar package.
>
> Hi Till,
>
> There are too many similarities.  Let me excerpt a few examples.
>
> http://www.phpclasses.org/browse/file/20639.html (requires login to that
> site in order to view)
> http://php5.lagged.de/pear/File_S3/File/S3.phps
>
> The order of events in the constructor is the same. Here's two similar
> lines from stream_open:
>
> Till's:
>     function stream_open($path, $mode, $options, $opened_path)
>     {
>         if ($this->countPathComponents($path) != 2) {
>             $msg  = "$path is not a valid amazon s3 file path.";
>             $msg .= " A file *must* be inside of a bucket";
>
> Cesar's:
>     function stream_open($path, $mode, $options, &$opened_path) {
>         if ($this->getPathNumberOfComponents($path)  != 2) {
>             trigger_error("$path is not a valid amazon s3 file path. A
> file *must* be inside of a bucket",E_USER_NOTICE);
>             return false;
>         }
>
>
> Till's:
>         if ($this->isOpen) {
>             /**
>              * The file was opened for read, we exit early, because is
> we done
>              * when the file is closed.
>              */
>
> Cesar's:
>         if ($this->tOpen) {
>             /* the file was opened for read, so exit, because file is do
> when the file is closed */
>
> Till's:
>     /**
>      * Write a $data into the buffer.
>      *
>      * @param mixed $data Data to write into the buffer.
>      *
>      * @return int|bool Numbe of bytes written or false.
>      */
>     function stream_write($data)
>
> Cesar's:
>     /**
>      *    Write a $data into the buffer.
>      *
>      *    @return int|bool Numbe of bytes written or false.
>      */
>     function stream_write($data){
>
> The above one is for me definitive proof - the odds of you both
> mis-spelling "Number" in the same @return statement are less than 0%.
> Google confirms that this is not just a cut/paste from a stream wrapper
> example:
>
> http://www.google.com/search?q=%22Numbe+of+bytes+written+or+false%22&btnG=Search
>
> Till's:
>             /* the required part is not on the buffer, so download it */
>             $err = $this->http->ReadReplyBody($tmp, 1024);
>
>             if ($err != '' && strlen($tmp) == 0) {
>                  $this->isEOF = true;
>             }
>             $this->buffer  .= $tmp; /* buffer this! */
>
> Cesar's:
>             /* the required part is not on the buffer, so download it */
>             $err=$this->http->ReadReplyBody($tmp,1024);
>             if($err!="" && strlen($tmp)==0) $this->isEOF = true;
>             $this->buffer .= $tmp; /* buffer this! */
>
>
> Till's:
>     /**
>      * Implements the fstats
>      *
>      * Thanks to Jeff Arthur for ask this needed feature
>      *
>      * @return boolean
>      */
>     function stream_stat()
>
> Cesar's:
>     /**
>      *    Implements the fstats
>      *
>      *    Thanks to Jeff Arthur for ask this needed feature
>      */
>     function stream_stat() {
>
> Who is Jeff Arthur?
>
> http://www.phpclasses.org/discuss/package/4144/thread/1/
>
> The above is direct proof that your code post-dates Cesar's, as Jeff
> Arthur requested this feature from Cesar on Oct. 14.
>
> Till's:
>     /**
>      * Create a directory (aka bucket) on s3
>      *
>      * Example of usage:
>      *
>      * <code>
>      *<?php
>      *    require_once 'File/S3.php';
>      *
>      *    define('S3_KEY', '059d545s4d6554'); //fake-code
>      *    define('S3_PRIVATE', 'dsadsadshajkdhas') //fake-code
>      *
>      *    $e = mkdir("s3://foldername",
>      *        File_S3::PRIVATE_READ || File_S3::PUB_READ
>      *        || File_S3::PUB_WRITE);
>      *    if ($e) {
>      *        echo "Done";
>      *    }
>      *    else echo "Error! Amazon said: ".$amazonResponse;
>      *?>
>      * </code>
>      *
>      * Nested folders are currently not support by Amazon S3.
>      *
>      * @param string $name Bucket name
>      * @param int    $mode Permision of the bucket
>      *
>      * @return bool true if success
>      */
>     function mkdir($name, $mode = READ_PRIV)
>
> Cesar's:
>     /**
>      *    Create a Directory or Bucket
>      *
>      *    Example of usage:
>      *
>      *    <code>
>      *<?php
>      *    include("gs3.php");
>      *    define('S3_KEY', '059d545s4d6554'); //fake-code
>      *    define('S3_PRIVATE','dsadsadshajkdhas') //fake-code
>      *    $e=mkdir("s3://foldername",_PRIVATE||_PUBLIC_READ||_PUBLIC_WRITE);
>      *    if ($e) echo "Done";
>      *    else echo "Error! Amazon said: ".$amazonResponse;
>      *?>
>      *    </code>
>      *    Nested folders could not be done!, that is a Amazon S3 Limitation
>      *
>      *    @param    string $name Bucket name
>      *    @param  int $mode Permision of the bucket
>      *    @return bool true if success
>      */
>     function mkdir($name, $mode=_PRIVATE) {
>
> The above example uses the same fake-code, again google proves it is
> unique to Cesar's code:
> http://www.google.com/search?q=059d545s4d6554+amazon+s3
>
> Till, the ball is in your court.  Can you provide documented proof that
> you did not plagiarize this code?

See my email that I just wrote. That's all I can provide. :(

I did not steal this code from anywhere.

Till

--
PEAR Development Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

 « Return to Thread: [PEPr] Comment on File System::S3