Stories
Slash Boxes
Comments

SoylentNews is people

posted by janrinok on Tuesday May 06 2014, @07:02PM   Printer-friendly
from the sharing-is-good dept.

bryan over at Pipedot has released the source code for Pipecode, the software running pipedot.

Pipecode is written in PHP and the code is using the GPLv3.

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 5, Interesting) by NCommander on Tuesday May 06 2014, @07:33PM

    by NCommander (2) Subscriber Badge <michael@casadevall.pro> on Tuesday May 06 2014, @07:33PM (#40296) Homepage Journal

    I took a good look at the pipedot source code when bryan announced it was released on #soylent, and I've read a fair bit of the SN bashing on their website as well. Please note, this isn't intended to be bashing on pipedot (which I consider a sister site to this one, given our shared orgins), but I think we'd be better off staying where we are.

    Pipecode is somewhat of a mess, and lacks anything resembling a templating system; most of the pages appear to admit raw HTML via writeln() lines, and the code logic and the frontend are intermixed with each other. While I suspect pipedot is lighter than slashcode, slashcode is known to scale considerably. Furthermore, pipedot is not at feature-party with slashcode; journals, and many other bits of functionality are still missing, which means if we were to migrate, it would be a net loss for the community.

    Although I've bashed our codebase, the fact is slashcode pretty well organized, and while some of the code isn't great, it *is* maintainable, and has pretty strong division between backend, frontend, and UI, which means its possible to change something without affecting the other; we can edit a template and not have to edit any .pl/.pm files to do so, and the base set of libraries allows us to interact and interface with the database with a consistent API (this is used for slashd scripts for instance); these aren't features we should give up lightly.

    I do recognize that pipecode *does* have a cleaner interface, but I suspect many of the critisms laid at SN will be resolved with the 14.06 release, which has a reworked D1.5 discussion system (you can see what we're doing on dev.soylentnews.org; you need to change the commenting view to "Improved Threading", but we'll be making that the default). We've also undertaken efforts to modify /code's templating system to the point that user-selectable themes are now possible, and opens the door for doing a redesign w.r.t. while leaving the current "classic" view alone.

    I have huge amounts of respect of the work that's gone into pipecode, but its not a slashcode replacement, or at least not yet. I'll be watching pipedot and pipecode's evolution, and its possible we might discuss such a potential migration in the future when pipecode is more mature and stable, but today is not that day.

    To bryan, three cheers though on getting this out, and I do hope you can attract developers from your community to help continue to pipedot. Best of luck to you, mate.

    --
    Still always moving
    Starting Score:    1  point
    Moderation   +4  
       Insightful=1, Interesting=3, Total=4
    Extra 'Interesting' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   5  
  • (Score: -1, Offtopic) by Anonymous Coward on Tuesday May 06 2014, @07:40PM

    by Anonymous Coward on Tuesday May 06 2014, @07:40PM (#40302)

    BooM

    • (Score: 4, Insightful) by elf on Tuesday May 06 2014, @08:03PM

      by elf (64) on Tuesday May 06 2014, @08:03PM (#40313)

      I hope both projects are successful. They are written in 2 completely different ways but there is no reason why they both can't steal idea's off each other in the future. Scalability is always a concern for a large site and I think Slashcode has the edge here as it has had more time to mature but I am sure pipedot will learn and improve over time.

      I'd agree with NC on the html output in the php, I'm a big fan on MVC type architecture.

  • (Score: 1, Informative) by Anonymous Coward on Tuesday May 06 2014, @08:28PM

    by Anonymous Coward on Tuesday May 06 2014, @08:28PM (#40321)

    Pipecode is somewhat of a mess, and lacks anything resembling a templating system; most of the pages appear to admit raw HTML via writeln() lines

    Ack. To clarify for others; the code itself is quite clean but in architectural terms, it is not a cleanly engineered code base. Anybody who ever got a maintenance gig on this sort of code knows exactly what is meant. Those who never had to maintain a 3rd party codebase like this -- it should in no way be taken as disrespectful towards or as a criticism of Bryans efforts.

    • (Score: 4, Insightful) by crutchy on Tuesday May 06 2014, @09:50PM

      by crutchy (179) on Tuesday May 06 2014, @09:50PM (#40355) Homepage Journal

      I've had a look over some of the pipedot source, and it's easy to read and understand. I prefer keep it simple, and hardcoded page generation is simple. IMHO templating is overrated unless you need to add features on a regular basis. Otherwise CSS should be good enough for most layout tweaks. Templating also adds a layer of complexity.
      If necessary a basic pipedot template system could be built with html includes and the use of variable delimiters like %% and php's str_replace function, but it's not like the pipedot page generation is hard to figure out and modify without it.

      • (Score: 1, Insightful) by Anonymous Coward on Tuesday May 06 2014, @10:11PM

        by Anonymous Coward on Tuesday May 06 2014, @10:11PM (#40363)

        Spoken like a true PHP developer

        • (Score: 0) by Anonymous Coward on Tuesday May 06 2014, @10:39PM

          by Anonymous Coward on Tuesday May 06 2014, @10:39PM (#40371)

          aka I like spaghetti code

        • (Score: 2) by crutchy on Wednesday May 07 2014, @07:50AM

          by crutchy (179) on Wednesday May 07 2014, @07:50AM (#40446) Homepage Journal

          wow thanks. i never considered myself to be a 'developer'... more just a tinkerer :-D

      • (Score: 1, Interesting) by Anonymous Coward on Tuesday May 06 2014, @11:08PM

        by Anonymous Coward on Tuesday May 06 2014, @11:08PM (#40376)

        IMHO templating is overrated unless you need to add features on a regular basis.

        We can have a cross-site discussion [pipedot.org] if you like :P

        Nobody is criticising Bryans code, however not separating presentation from business logic is a huge red flag to me as a former freelance contractor. This is what NCommander referred to as a 'mess' and I was agreeing with that sentiment whilst pointing out why somebody would use that term. PHP is a templating language and you only have to see a couple of horror codebases before not doing something as simple as...

        function view($files, $data = array()){
            extract($data);
            foreach ($files as $file)
                require_once(VIEW_PATH . $file . '.php');
        }

        view (array ('masthead', 'content', 'pagination', 'footer'),
            array ('title' => 'Page Title', 'content' => $content,
                'pagination' => new Pagination ($current_page, $results_count, $results_per_page));

        ... will set cacophonous alarm bells ringing in your head. I don't see how that is overrated? It's moving all the HTML, inline script and CSS to separate files. Nothing complicated about it -- extract an array into the function scope and make the variables available to included files.

        Attempting to maintain a codebase where there's javascript stored in SQL being retrieved in the middle of a HTML segment and updating inline CSS... No really -- I still have nightmares after all these years and like I said it's a red flag to me and this is quite probably why NCommander used the term 'mess'. I've no particular reason to defend the guy but am certain that I too have felt the pain.

        • (Score: 2) by crutchy on Wednesday May 07 2014, @07:56AM

          by crutchy (179) on Wednesday May 07 2014, @07:56AM (#40448) Homepage Journal

          all good points. css is usually stored in separate .css files anyway, so i don't think there is any disagreement there (and i didn't see any inline css in the pipecode files that i looked at).

          javascript stored in SQL being retrieved in the middle of a HTML segment and updating inline CSS

          my guess is that scenario would be closer to slashcode than pipecode

          also, not saying that templating is bad... more that lack of templating isn't necessarily bad.

          • (Score: 1) by RaffArundel on Wednesday May 07 2014, @12:53PM

            by RaffArundel (3108) on Wednesday May 07 2014, @12:53PM (#40503) Homepage

            also, not saying that templating is bad... more that lack of templating isn't necessarily bad.

            I haven't seen the code, but I will say not having templating for something like this suggests you aren't separating the layers properly. Ignoring the "smell" argument for a moment, it definitely removes flexibility.

            It's like not having unit tests or FIT for code - you may be able to get away with it for a while but the first time you need to do any real work on it, especially when there is a problem you have created a mess for yourself.

            Now I am curious - I think I will grab the code and take a look at it.

            • (Score: 0) by Anonymous Coward on Wednesday May 07 2014, @01:24PM

              by Anonymous Coward on Wednesday May 07 2014, @01:24PM (#40512)
              Templating is overrated for this site at least. Many of the soylentils here are here because Slashdot changed too much for the worse.

              So for a site like this, once you've settled on a usable and not too crappy UI, the users aren't going to care if you never actually change the look.
            • (Score: 2) by crutchy on Wednesday May 07 2014, @09:55PM

              by crutchy (179) on Wednesday May 07 2014, @09:55PM (#40707) Homepage Journal

              removes flexibility

              your argument is based on the false premise that templating is required for flexibility... it's not. if you look at the source, the page structure can be changed, quite easily too. the only difference is that you need only know a bit of php to do it and not some obscure invented templating syntax.

              separation of layers is usually good, but it's not the rule, and nor should it be... because such rule itself would remove flexibility. established rules are a tool of the waterfall trade, and is also partly why waterfall projects so often fall on their swords.

              do grab the code. "professional programmers" will no doubt balk at it, but from a pragmatic tinkerer's point of view, it's simple, easy to read & understand, and it works.
              i was able to navigate my way around pipecode fairly easily the first time i saw it. slashcode otoh, well... you can probably guess.

              • (Score: 1) by RaffArundel on Thursday May 08 2014, @01:03PM

                by RaffArundel (3108) on Thursday May 08 2014, @01:03PM (#40875) Homepage

                your argument is based on the false premise that templating is required for flexibility... it's not. if you look at the source, the page structure can be changed, quite easily too. the only difference is that you need only know a bit of php to do it and not some obscure invented templating syntax.

                Nope, my argument is that proper structuring of code makes it easier to add/remove/change. Improper design makes changes harder (hence, removes flexibility) and your options fewer.

                Is your argument that "templating" is something you do in "one of those (obscure invented) templating languages"? Do you believe that PHP isn't/can't be a templating language? Is Velocity or Freemarker "obscure" or does it have to have the ubiquity of JS?

                Just so we are clear, I am talking about the MVC pattern - specifically the Model->View part, templating is simply mapping the data in the Model to structures in the View. Proper templating treats those a separate components so you can (re)move, add, enhance what the user sees without needing to or minimize messing with code. Ignoring the business driven decisions by Dice, do you think we would be here if the site-which-must-not-be-named had a clean template layer that you could control?

                separation of layers is usually good, but it's not the rule, and nor should it be... because such rule itself would remove flexibility. established rules are a tool of the waterfall trade, and is also partly why waterfall projects so often fall on their swords.

                Ah, so design patterns (MVC in this case) is a tool of the Man, and fails the People in the real world of Agile Masters. I won't get side-tracked on why waterfall and agile projects fail, but it isn't because they followed best practices. In fact, many of these "rules" were created to address project failure regardless of methodology - but likely help the faster paced development teams the most.

                YMMV.

                do grab the code. "professional programmers" will no doubt balk at it, but from a pragmatic tinkerer's point of view, it's simple, easy to read & understand, and it works.
                i was able to navigate my way around pipecode fairly easily the first time i saw it. slashcode otoh, well... you can probably guess.

                I grabbed slashcode when I joined this site, and it is sitting on my computer. I meandered through it, mostly because I was interested in seeing what NCommander was talking about in some of those posts. It is a good sign that the pipedot code is easy to understand, but I just did a bender with Wordpress, so I'm not in any particular hurry to look at more PHP - but I definitely plan to. Eventually. When the mood or need strikes me.

                • (Score: 2) by crutchy on Thursday May 08 2014, @02:10PM

                  by crutchy (179) on Thursday May 08 2014, @02:10PM (#40899) Homepage Journal

                  i'm just a tinkerer... rules are meant to be broken, wheels are meant to be reinvented, and methodologies be damned. also, my idea of software design is scrawl on a bunch of sticky notes, so it's probably a good thing i'm not a pro.

  • (Score: 2) by Reziac on Wednesday May 07 2014, @02:58AM

    by Reziac (2489) on Wednesday May 07 2014, @02:58AM (#40406) Homepage

    I'm not a coder, but I read thru the wiki stuff, and appears to me the main advantage of Pipecode is that average folks can probably get it set up and running without going completely crazy. Whereas from all you've told us, getting slashcode properly functional required numerous arcane rites during specific phases of the moon; the usual black chicken tied to your monitor would not suffice, but its scalability seems hard to beat.

    Both efforts are to be commended, and I'm glad to have both sites.

    --
    And there is no Alkibiades to come back and save us from ourselves.