僕の中で曖昧だったので、ユーザー分類を元にLokkaの開発方針をまとめてみました。

ユーザー分類

  • 閲覧者(visiter)
    • ブログを見に来る人
  • 投稿者(author)
    • ブログにエントリーを投稿する人
  • 管理者(administrator)
    • ブログを設置し、管理する人
  • 開発者(developer/designer)
    • プラグイン・テーマを作る人
  • コミッタ(commiter)
    • 本体を作る人

上(人数が多い)、下(人数が少ない)

上(影響が少ない)、下(影響が大きい)

ユーザー分類補足

  • 閲覧者
    • fc2とwordpressの見た目が殆ど付かない現状、閲覧者にとってはどのツールも違いがない。
  • 投稿者
    • ブログの体裁を取っていれば殆どの投稿者にとっては最低限投稿することは出来る模様。UI改善の余地は多少あり
  • 管理者
    • インストールの敷居がまだ高い
    • 職業Webデザイナーが多い
    • ローカルで開発するデザイナーは殆どいないらしい
      (Apache + MySQL or XAMPが必要等、敷居が高いため)
    • CMS/Blogツール導入の権限はココに該当する人にある
    • どれだけ管理者に好かれるツールであるかが最も重要。
  • 開発者
    • 上記管理者に好かれるツールになるかどうかは開発者の充実にかかっている。
    • テーマはデザイナー、プラグインはプログラマーが主に作ることを意識する必要がある。
  • コミッタ
    • コア内部よりも上記開発者に触れる部分をどれだけ簡単でクリーンに出来るかが重要だと思われる。コミッタはそれ程大勢になるわけではないので開発者への奉仕に注力する必要がある。
    • フルタイムのコミッタがいるプロジェクトは成功率が高いらしい

どんなソフトウェアを目指すのか?(スローガン)

  • CMS for Cloud
    • クラウド環境で良く動く
  • 打倒WordPress
    • 協調や補完では無く打倒。
    • WordPressを置き換えるモノで無くてはならない。つまり現状のWordPressユーザーが置き換えたくなる機能が必要。

必ず実現したいこと

  • デフォルトでHeroku(or GAE)で良く動くこと
    • ファイルのWriteや大量DB消費があってはならない
  • Windows, Mac, Linuxでzipを解凍すれば動くこと
    • デザイナーがローカル環境で作業するのに必須
  • zipを解凍してフォルダに置くだけでプラグインが動くこと
    • WordPressユーザーにとって必須
  • 少なくとも1つ、現実的な分散環境で簡単に動くこと
    • プライベートクラウドで簡単に動くようにするということ
    • mongodbとかkumofsとかromaとかそういうの。

できれば実現したいこと

  • 本体とプラグインがgem
  • プラグインが単体でテストし易い
    • 本体のgem化が出来ればこれもできることになる

要は?

  1. ファイルのWriteしない(=クラウド対応)
  2. RDB, KVS, Document指向DBに対応
  3. zip解凍で動く
今のところこれがこのソフトの存在意義。これが出来なければ作る意味が無いので気をつけていきたい。

@nkmrshnさんの素晴らしいまとめ。Optionを使ってるコードとかまだ他で見たことないので素敵ですw

作成したLokkaプラグインのまとめ - nkmrshnの日記

  1. プラグインで使用するgemを、Gemfileと別にプラグイン側で管理する方法。(現状:Lokka本体のGemfileに書くしかない。)
  2. プラグインで使用するi18nのen/ja.yml。(現状:Lokka保体のen/ja.ymlに追記するしかない。)
  3. プラグインの読み込む順番。(現状:読み込む順番を設定できない。)
  4. プラグインの有効・無効。(現状:public/plugin/lokka-<プラグイン名>は全部有効。)
  5. プラグインのアップロード・削除機能。(現状:ターミナルのコマンドなどでプラグインファイルを追加・削除する必要がある。)
  6. public/admin/layout.hamlのdiv#aside(左側サイドメニュー)にプラグインのメニュー項目を追加。(現状:layout.hamlに追記するしかない。)

コメント欄に書いたらエラー?が出たのでココに書きます。(以下俺)

おおお、すばらしいまとめありがとうございます!

最後の6点は僕もどう本体を実装すべきか悩んでおります。

  1. C拡張を含むメジャーなgemは本体に同伴し、pluginで必要な(Pure Rubyの)gemはpluginに同伴してもらう?
  2. 頑張ればplugin毎のi18nを読み込める?拙作のdm-validations-i18nとあわせて対応できるか?r18nの利用を継続するか?
  3. railsのようにルールさえ明確ならば指定出来る必要は無い?
  4. DBで管理すれば可能だがWordPressであんまり必要性を感じてないので検討中。
  5. 実装方法が思いつかない・・・(基本WRITE出来ない環境を想定してるので現状でいいかも?)
  6. やり方を決めればいいだけなんですが、選択肢が有り過ぎてしっくりくる方法を思いついていない。文字列とリンクURLの構造体を持つ?xxxxx.{erb,haml,erubis}があったらそれを表示する?

という感じです。

やっぱりプラグインを書いてみた人本人でないとわからない点が沢山あるとおもいますので、「こうしたほうがいい」というところがあればお教えいただけると嬉しいです!

http://localhost:9393/hello

Commit c6954984dca64cbc02ee28f63ec4f7ce56bec1b4 to komagata's lokka - GitHub

ktkr! 神降臨! > @yagi_

IRC(#lokka-ja)で適当に話してたことが既に実装されとる!

テーマAPIとプラグインAPIは超大切なのでプラグイン規約はちょっと悩みますね。@yagi_さんが書かれている通りですが、現状helloというプラグインを作るとするとこんな感じです

  • plugin/lokka-hello/lib/lokka/hello.rbがあればrequireする。
  • Lokka::Helloがあればregisterする。
  • helperはLokka::Helpersを勝手に再オープンしてメソッド追加すればよろし。

規約とは殆どが配置と命名の事です。配置はこんな感じです。

LOKKA_ROOT/
 plugin/
  lokka-hello/
   lib/
    lokka/
     hello.rb

URLの/helloにアクセスするとhelloと表示し、helloというhelperを追加するhelloプラグインの中身はこんな感じです。

module Lokka
  module Hello
    def self.registered(app)
      app.get '/hello' do
        'hello'
      end
    end
  end

  module Helpers
    def hello
      'hello'
    end
  end
end

簡単なルールでいいかもですね。

PyhaLokkaにMLを作りました。

Lokka-ja | Google グループ

僕一人ではすごく悲しい雰囲気になってしまうのでサクラでいいので入ってください・・・。

PyhaLokkaの開発について

ブログってフレームワークのHello world的な扱いで出てくるぐらいなので誰でも作れます。逆に言うと技術的なチャレンジは少なく、どれだけ手を動かせるか的なところがあってプログラマー的には面倒です。だからあまりエッジな人は作りませんよね。あるとすればミニマリストのための超シンプルツールで、これは作ってて楽しい。僕も以前、普通に作り始めたらそうなってしまって、一般ユーザーやデザイナーがWordPressに求めてるようなものは出来ませんでした。

PHP以外で一般ユーザーやデザイナーにも普及するWebアプリなんて無理なんだと諦めていましたが、RedmineはWeb制作会社にいるデザイナーに何人か聞いたら結構な割合で知ってました。なんだ、Rubyでも行けるんじゃん。

「なんで僕らは仕事で、自分のブログで、WordPressを使ってるんだ?Rubyでそういうのが無いのはおかしい!」

そんなよく分からない義務感?が開発の原動力になっていて、元々そういうツールがあればそれを使いたいし、その開発に参加すれば良いと思っています。しかし上記の様な事情があってあまり作りたがる人はいません・・・。

※Radiant CMSは僕的に設計やコードは素晴らしくて若干うっとりしたぐらいです。しかしデザイナーに聞くと、本当に欲しいのは純粋なCMSではなく、ブログツールベースのCMSであるようなのです。

PyhaLokkaはSinatraベースのまだまだ未熟なブログツールなので、Rubyがわかれば誰でもコーディングの余地がいくらでもあります。(例えば投稿した後にflushで「投稿しました」とか出すべきなのを出してないとか、helperその他はpadrinoのモジュールに置き換えたいとか、テストが無いとか・・・)

貧相なプロジェクトの割にWordPress打倒!という分り易くも無茶な目標を掲げてやっていくのは面白いかもなあと最近思いはじめました。

「みんな、オラに力(コード)を分けてくれ!」

Lokkaのデフォルトテーマを@machidaさんに作って頂きました。

jarvi

デフォルトテーマjärvi(ジャルビ)。

これまでdefaultという名前だったテーマはvicuna-monoという名前に変更されました。互換性の為に年内はdefaultという名前のテーマも残して置きますが、既にインストール時のデフォルトはjarviになっているのでdefaultは非推奨です。

テンプレもデザイナーの@machidaさんが書いてくれたのですが、ちょっと面白くて、ブログの投稿に使うPostではなく個別ページなどの為にあるPageでページを作成すると上の"ミニプロフィール"みたいにメニューに自動的に並ぶようになっています。

public/theme/jarvi/layout.erb at master from komagata's lokka - GitHub