Stories
Slash Boxes
Comments

Slash Open Source Project

Slashcode Log In

[ Create a new account ]

Article Poll

I found this article to be
Very Helpful
Helpful
Not Helpful
Not Very Helpful
[ Results | Polls ]
Comments:0 | Votes:0

The Future of Slash

posted by Krow on 04:19 PM August 1st, 2000   Printer-friendly   Email story
BakedJake writes "Being an avid user of Slash, I was wondering about a few things today:

1. Where is Slash going? Meaning, slash was originally concieved to run Slashdot. But, what is the purpose of it now? Are the core developers (Chris, Brian, and Pat) updating slash primarly to serve the needs of Slashdot? Or has it become an true independent project?

2. Will the ring of core developers ever expand outside of the Andover.net payroll, or is Andover also regulating slash?

3. What are some of the goals for Bender?

4. Need any more authors for the Slashcode site? Please? :)"

Well, this is a bit to much for the magic 8 ball.

Ok, in this are some questions I have been meaning to answer for a while now (and hopefully soon will be writing a feature about).

To answer question one, slashdot is quite important but slashcode lives on its own. Some of the largest changes in the next version of slashcode do nothing for slashdot.

Database independence is a large chuck of the changes (namely, now you will have two libraries to port, one that partially exists at the moment, and another that will exist fairly soon).

There are other changes though. The authenication is now functioning inside of Apache, outside of Slash.pm (in bender you can always rely on REMOTE_USER being set to the correct UID). Slashdotrc.pl will no longer exist and slashsites are determined by an Apache directive called SlashVirtualUser that can be confined within Virtualhost and Directory tags in the httpd.conf. The database handle is cached perl apache process/slashsite.

To answer question two we are always open to patches to the main distribution if they are well written and follow the basic design that we are striving for. With Bender though there are knew oportunities for helping though. Bender in part is designed with the idea that people will be able to write modules for slashcode to implement features that we don't have time to do. Bender will give you in the end an API to use to access table data and methods so that you can implement modules that should be simple for an end user to install.

We also have the issue of supporting databases that we aren't going to support ourselves (for instance, if you want slashcode to work under Sql Server or say Informix there will be two libraries you will have to port). I can easily see these being maintained by non-Andover employees.

How we will distribute these (and if they will come with the main distribution) is still up in the air. Slashcode is a publishing system, with the write modules you should be able to do just about anything.

This discussion has been archived. No new comments can be posted.
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • by Krow (986) on Saturday August 05, @03:10PM (#992)
    ( http://www.tangent.org/~brian/ | | Last Journal: Thursday January 17, @04:46AM )
    Keep in mind that with Bender there will be the beginnings of an API that you can be used to retrieve data from the database (the first API is in perl, whether the API will be also done in other languages is up for grabs).

    So with the UID you can use a number of methods to get at any other piece of data you might want.


    --

    --
    You can't grep a dead tree.
  • Our contributions

    (Score:1)
    by alex (1133) <alex@mktv.com> on Tuesday August 01, @11:49PM (#993)
    ( http://www.mktv.com )
    My company has been doing extensive work on the Slash system. We are using it with one of our new sites, and working hard to make the database info play nicely (largely this involves letting Slash manage the users, so we don't have to modify the code much), and add functionality.

    Many of our enhancements have been to improve the ability to add outside functionality. Additionally, we are developing a PHP toolkit to work with Slash so that we can add the new features in PHP. This toolkit will be placed on our soon to be added Open Source page.

    Because this functionality is PHP based, I doubt that it will make the main distribution, but I look foward to the day when there are many sites to get Slash tools... hopefully all GPL'd.

    Alex

  • My $.02

    (Score:1)
    by perldiver (36) on Wednesday August 02, @07:07PM (#997)
    IMHO a crucial goal for the near-future development of Slash is to move text and HTML out of the Perl code and into the database (specifically the Blocks table). For nanodot [nanodot.org], a lot of the off-the-shelf text (for example, the text of the mailpasswd email message) was a bit too flip for the tone of our site. This message is hard-coded instead of being a Block. Similarly, the text of the main login form is hard-coded in users.pl instead of using a Block.

    Slash administrators who have customized any of this text then have a real disincentive to upgrade to newer versions; they need to take diffs comparing their current code with the out-of-the-box code of the version they originally installed, and then try to apply those diffs to the new version (which, if the new version is substantially changed, they can't do with patch).

    Getting these text and HTML fragments into the db will also simplify localization of Slash for non-English-speaking sites. It would then become possible to ship different default installations for different languages (slashdata_dump_en.sql, slashdata_dump_fr.sql, slashdata_dump_de.sql).

    If my development project for Foresight Institute [foresight.org] gets funded, this is one of the changes I want to contribute to the code base.

    Is the "core team"'s future direction for Slash development documented anywhere besides in this thread?


  • by Krow (986) on Wednesday August 02, @03:21PM (#998)
    ( http://www.tangent.org/~brian/ | | Last Journal: Thursday January 17, @04:46AM )
    Well, under the new architecture it is fairly trivial to get at certain members through other languages. For instance, with Bender I can write apache modules in C that can work with the perl components since much of the slashsite data is now in Apache where any language can get at it.

    We are still working out where contributions will go, but I would like to see it be fairly trivial for someone to add modules. I want the install to eventually be something that requires few technical skills, and I would like to see modules be the same way.


    --

    --
    You can't grep a dead tree.
  • by madmag (401) on Wednesday August 02, @06:16PM (#999)
    ( http://unix.developer.ch/~aghaffar )
    Hi,

    I think that one piece that Slashcode should also look into is, how to pass the session information to other applications.
    For example, if I am using a web mail app, a web cal app or a web XX app on the same site and providing my users these services then it makes no sense to ask them to login again and again cause the systems are either managing their own sessions or have different source of authentification.

    RemoteUser var only gives me half of the information, the username, but not the password.
    What if I want to pass this information to a webMail application that rely on Authentification to an IMAP server? I would have to ask the user the pass again. etc etc.

    I had to do a project where single-sign on was a must. The application is at http://www.rslnet.ch

    This application primarily uses IMP (A web mail system written in PHP), and also offers other services such as personal homepage, guest book etc. All except the IMP are written in perl.

    Fortunately, IMP was using phplib that stores session data in a central database (this is solves the problem of authentification when using multiple servers for loadbalancing). Each application get the sessionHash from cookie or url which is a key inthe db table, extracts the data which is in base64 format, decodes it and uses the values (username, password) to authentify to the next application.

    I would love to see that kind of development in Slash.

    Also, it would be extremely nice if Slash starts using LDAP as the backend for authetification and user information storage. Again this can be reused.

    my $0.2


    vote for your favourite perl-site http://www.perl.ch/links
    --
    vote for your favourite perl-site http://www.perl.ch/links
  • by pudge (6) <pudge@osdn.com> on Wednesday August 02, @10:07AM (#1000)
    ( http://pudge.net/ )
    In the bender architecture, there is a defined API that the scripts call. So to get user info, you call $db->getUserInfo or something. The scripts themselves know nothing about the database. So how you handle concurrent SQL queries, schemas, limits, etc. is all abstracted out into a separate module (in our case, Slash::DB::MySQL).

    It shouldn't be too difficult, in comparison to the current Slash, to port bender to other databases, because you should only be concerned with one file, Slash::DB::MyDB (and maybe a line or two in Slash::DB itself, to help point to the right DB module).

  • by Krow (986) on Saturday August 05, @03:06PM (#1001)
    ( http://www.tangent.org/~brian/ | | Last Journal: Thursday January 17, @04:46AM )
    All authentication within Bender is done in Slash::Apache::User. To change authentication, you just change this module (and while this isn't extremely modulor at the moment, it will be at some point). I would eventually like to see something a bit more flexible for switching types of authentication, but it won't be in Bender. On the same token though, now all authentication is in the same location, so it would be trivial to make changes.

    Also, we populate REMOTE_USER with the authenticated UID. So any app written to work within the slashcode framework can take advantage of this.


    --

    --
    You can't grep a dead tree.
  • by dave_aiello (52) on Tuesday August 01, @11:31PM (#1002)
    ( http://www.ctdata.com/ | | Last Journal: Monday December 23, @10:05PM )
    In his article, Krow wrote:
    We also have the issue of supporting databases that we aren't going to support ourselves (for instance, if you want slashcode to work under Sql Server or say Informix there will be two libraries you will have to port). I can easily see these being maintained by non-Andover employees.
    My company has experience taking a previous version of Slash and implementing it in a very different environments (for an example, see http://www.ctdata.com/ [ctdata.com]. I think it would be helpful to point out to the maintainers that some code changes were required to get the application to run properly under DBD::Sybase and DBD::ODBC. The changes we made took into account the following differences between databases:
    • handling of concurrent pending SQL queries
    • manipulating text columns and other sorts of BLOBs
    • setting limits on result sets returned
    • formatting of results
    In the first three cases, there is not a line-for-line correspondence between Transact-SQL commands and mySQL commands.

    I have pointed this out to people who work for Blockstackers when they asked me about the techniques used in the CTDATA Site.

    In all likelyhood, we will be in a position to contribute some or all of the code necessary to make a multi-DB-aware Slashcode distro run on Sybase and MS SQL Server. We have not contributed to the effort thus far because we are not running Slash on Linux (or Apache for that matter) at the moment.
    --

    Dave Aiello
    Chatham Township Data Corporation


    --

    --

    Dave Aiello
    Chatham Township Data Corporation [ctdata.com]

  • by Anonymous Coward on Thursday August 03, @01:26AM (#1004)
    This is a common problem with tying multiple independent products together for web access. Doing it for open source products is a dream compared with commercial apps... believe me. LDAP would be cool, though. Ultimately what we've done is completely bypassed the authentication in most cases on our site, wrote a custom authentication mechanism, and simply tell the tools whether or not the user is authenticated. Of course, tricking them into this requires a different method for each one... This is one case where the source is extremely handy. Look for a cookie you set with your authentication handler, make sure it cannot be forged, and you're done. Not as pleasant as LDAP, but simple if you have the source.