What have you found for these years?

2009-08-06

ruby lib compatibility

我發現好像滿多人對 ruby 有怨言卻不願意說... XD
不知道,不過我向來是有什麼好,有什麼壞沒什麼好隱藏的。
我實在很討厭後來才發現,原來你早知道有什麼問題,
卻沒告訴我,像是被騙上賊船似的... 偏偏好像很多人都會這樣做。
我覺得這樣實在不怎麼誠懇...

anyway.

ruby 最大的毛病就是,很多的 lib 都寫得很隨便,
除了版本間的相容問題,change log 不寫,
git/svn tag 不加,gem 不用 rubyforge release,
諸如此類一大堆......

這真的就意味著,如果你需要用很多 lib,
很可能就需要不斷測試與實驗各個版本間的相容,
而且由於沒什麼 change log, 也沒有 tag,
很可能要一個個慢慢試,甚至去看 commit history.

然後很多人解決了問題也不會放出來,
或是只把自己的放出來,也不管別人能不能用,
反正自己能用就好了。這造成了另一個嚴重問題:

無止盡的 fork...

我覺得 rails plugin 就是在加速這個問題的成長。
rails plugin 鼓勵你用開發版本,永遠更新到最新,
或是你自己維護一份你自己的版本。
上次找 tag 的支援,超瘋狂,找不到官方版本,
無止盡的 fork, 每個更新進度都不同.....
有個改了這個,有的加了那個,根本不知道要用什麼好...

拜託!不要用 github 放 gem, 用 rubyforge,
保留所有歷史版本,git/svn 記得下 tag,
change log 要寫,不要 fork 要放 patch,

不要在 lib 裡 monkey patch!!!

幸好最後這點,已經很少人這樣做了。
不過其他狀況仍然很多,仍然有很大的改進空間...

我有稍微看過 mogilefs-client 和 memcache-client 的
source code. 這兩個應該都可以算是典範之一,
雖然維護者都曾經換過,但是該有的記錄都有,
程式也沒有寫得很髒... rmagick 之類的老牌則更穩。

facebooker 就很慘了,上面提到的一堆問題他都有。
will_paginate 亦然。一開始是架在 rails 上的東西,
很多很多都有這些毛病...... 不過是有好轉的跡象啦?
希望如此 XD

*

但是如果要做什麼事,我仍然第一個會選 ruby.
原因也很簡單,寫 ruby 比寫其他的東西有趣。
寫小東西,碰到一堆毛病其實也還好,就想辦法繞掉就好了。
寫大東西,就少用點東西,全部自己刻最穩了...

這也是為什麼我後來寫了 pagify :(
不過另一方面其實是為了 datamapper.

也很可惜很多自己刻的東西,並不足以拿出來當 lib.
要拿出來當 lib, 多多少少需要一點考驗的...
而大部份的東西,寫到後來為了快,都是客製過的 :s
這樣就沒有拿出來當 lib 的價值了。

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0