Well, the idea is not building the repository itself, but all the needed infrastructure to make it easy to share libraries, that is, something like Ruby Gems. So, I'm going to create a set of tools which will allow searching for libraries, downloading and installing, and referencing them from projects. I'm also going to define a way of publishing libraries, and I'll eventually create a real repository in some server where we can start adding some libraries.
Scope of the Project
So, first of all let's state the scope of this project:
- This is going to be a library packaging and distribution system designed for development only. That is, I'm not trying to compete with existing packaging systems. You'll be able to more or less automatically download libraries from the repository, but when building a package for distribution, the package will have to either include the library binary, or have a dependency on a package that provides it.
- Only fully managed libraries will be supported for now. In the future we may add support for libraries which need some C glue code by compiling them after downloading.
- It will allow parallel installation of different versions of the same library.
- It will support dependencies between libraries. So, when a library is requested, all libraries on which it depends will be downloaded/installed. Of course it will only work for libraries in the repository.
My plan is to use Mono.Addins to implement this infrastructure. It may sound a bit strange to use add-ins for building a library management system, but if you think a bit about it you'll see that it makes perfect sense:
- A library can be seen as an extension to the system. There will be an extension point where new libraries will be registered. An 'add-in' will be able to register one or several libraries.
- Mono.Addins already provides a system for publishing, downloading and installing add-ins, including support for dependency check. We can share the same file formats and package management tools.
- Such add-ins might include not only libraries, but also Monodoc documentation, support tools or other extensions. For example, we could publish a library which implements a Chart widget, and we might include a chart designer to be integrated in Stetic.
There will be three different types of library packages:
- Binary package: it will include the library compiled in an assembly. Projects will directly reference this library. At deploy time, the library will be copied together with the application using it.
- Binary package with GAC install. Same as previous, but the library will be installed in the GAC. To run the project it won't be necessary to copy the library to the project directory (since it will be loaded from the GAC). At deploy time, the developer will be able to choose between packaging the library together with the application, or not packaging it and generating a package dependency instead (of course this last option only makes sense if a package providing the library is available).
- Source package: I'm still unsure about this type of package. My idea is that it may be useful to be able to share some classes which are very common, but for which it is not worth to create a .DLL because they are too small. So projects would just include the source files in the project. However, it may also make sense to include the source files in binary packages, even if it's only for debugging purposes. Also, given the multi-language nature of .NET, source-only packages would too limited, since they would be useful only for projects using the same language.
My idea is to provide something like the add-in manager, but specialized to installing library packages. After installing a library package, all assemblies it provides would be shown in the references dialog. After adding an assembly reference to a project, if the assembly belongs to a package installed in the GAC, the user will be able to set or reset the 'local copy' flag.
I'm still not sure if it would make sense to add an "Include Library as Source" command, which would include the source files of the library to the project.
Integration in Visual Studio
Why not? it would dramatically increase the number of potential libraries and users. Any volunteer?
Command Line Tools
There will be a command line tool for managing library packages, and for querying information about libraries. This should be some kind of replacement of pkg-config for Mono. It will be able to check if a library package is installed, and which assemblies does it provide.
Configuration scripts might be able to use this tool to automatically download packages not installed in the system.
Library Repository
I don't plan to implement any server-side logic or service for publishing or browsing libraries. An on-line library repository will be a set of package files in a directory and an index file. We can easily generate a set of static html files for the repository and for each package, so that people can browse it and Google can index it.
Looking for a Name!
"Ruby Gems" sounds really cool. Any idea about how all this infrastructure could be named in Mono?
Other more general comments and suggestions are also welcome :)
45 comments:
What do a mono eat ? There you have it...
This is an excellent idea! I'm really looking forward to this. Keep up that awesome work!!
Duo/Stereo
yes, mono bananas
monopoly?
Mono Nucleus
word play on a certain disease
Something like CPAN for perl, you mean?
Mono Marshmallows
Multivitamin
Ape Nuts?
Monkey Balls?
I like the Mono Nucleus idea, too.
My thought was the Mono Jungle. You would download Banana Bunches or Bunches for short and as in the real jungle you better beware of what's out there :).
The project's title is
monoliths of course!
I'd go with Mono Space.
I really like Monopoly. I also like Bananas.
I was going to vote for 'Mono Nuclei' (singular Nucleus), but it was already suggested. I still think it's a great choice.
Well, it doesn't need to be a name for defining a package like the term "gem" does. We can just use "package" for this. I would be happy with a good name for the library management infrastructure, so yes, I mean something like CPAN for perl.
mono a mono
Totally awesome project man.
I vote for mono bananas. :)
The first thing that i think was Bananas !!
Mono Moonstones, to play on the Ruby Gems thing.(Moonlight vs Silverlight too even)
Sounds nice to install a Moonstone! :)
Is there any crossover between this and NMaven, at all?
http://incubator.apache.org/nmaven/
MonoSpace?
MonoCLE = Mono Content Library Extravaganza?
Go for "Monogamy" :)
mono bananas was the first thing that came into my mind :)
I think that "Monadas" could be a nice name. In Mexico when a little kid do something cute we use to said He is doing "monadas".
How about Monorail? Delivers packages right to your doorstep.
I have periodically mused on this topic ~ "Mono needs a CPAN!" It's true but it's also quite an undertaking. I called it "coconut" because it shortens to "nut" for file extensions, which isn't bad, and because monkeys like coconuts.
I did a mockup a few months ago but wandered off to fiddle with other projects after one day. There are some minimal scripts for this but nothing worth putting up.
The mockups / process ideas might give you some ideas.
CLI mockup The process
The idea is that you download a .nut file, which is a .tar.bz2 with a certain file structure which is reflected in some of the small programs I made this winter like SudokuSolver. It has a simple plain-text description file in there which contains dependency information and where to download those packages. The process recurses and builds itself.
It's just an idea. This way it could be on a huge CPAN-like archive or distributed around the net, it doesn't matter.
ZQT76O Nice Article.
Please write anything else!
Thanks to author.
actually, that's brilliant. Thank you. I'm going to pass that on to a couple of people.
Hello all!
Magnific!
Please write anything else!
Magnific!
Nice Article.
Is this project idea completely dead?
http://www.tobinharris.com/2008/10/25/net-code-sharing-inspired-by-ruby-gems wants to revive it.
牙醫,植牙,矯正,紋身,刺青,創業,批發,皮膚科,痘痘,中醫,飛梭雷射,毛孔粗大,醫學美容,肉毒桿菌,seo,關鍵字行銷,關鍵字、自然排序,網路行銷,關鍵字、自然排序,關鍵字行銷、seo,關鍵字廣告,部落格行銷,網路行銷,seo,關鍵字行銷,關鍵字廣告,關鍵字,自然排序,部落格行銷,網路行銷,網路爆紅,牛舌餅,婚紗,台中婚紗,腳臭,腳臭,腳臭,腳臭,腳臭,中古車,二手車,中古車,二手車,高雄婚紗,減肥,窈窕 ,搬家,搬家公司。
搬家公司 桃園房屋仲介 桃園房屋買賣 桃園房屋 醫學美容診所 淨膚雷射 雷射溶脂 飛梭雷射 微晶瓷 植髮 團體服 團體服訂做 醫學美容診所 肉毒桿菌 肉毒桿菌瘦臉 醫學美容 整型診所 美國月子中心 月子中心 seo 關鍵字廣告 關鍵字 google關鍵字廣告 關鍵字行銷 網路行銷 通姦 徵信社 外遇 徵信 徵信公司 出軌 清潔公司 搬家公司 搬家公司 台北搬家公司 新竹搬家公司 桃園搬家公司 台北搬家公司 整形 韓風整形 整形 韓風整形 老人癡呆症 情緒管理 訂房網 線上訂房 宜蘭民宿 宜蘭住宿 網路訂房 宜蘭飯店 新娘祕書 清潔公司 植牙 裝潢 室內設計 油漆粉刷 油漆工 油漆工程 洗鞋加盟 洗包包加盟 洗包包 創業加盟店 早餐店加盟 開店創業 創業開店 結婚金飾 鑽石婚戒 通水管 通水管 通馬桶 抽水肥 包通 馬桶不通 通馬桶 通水管 清水溝 沙發 室內設計公司 室內設計 室內裝潢設計 裝潢設計 澳門自由行 香港自由行
太陽能熱水器 三久 櫻花牌熱水器 熱水器 省電熱水器 衛浴設備 節能減碳 電熱水器 中古車 二手車 環保袋 環保袋 環保袋 十分瀑布 台北旅遊網 台北民宿 平溪 景觀餐廳 薰衣草花園 花園餐廳 螢火蟲 渡假村 鐵道之旅 團體服 滷味 滷味加盟 滷味批發 滷味食材 滷味宅配 滷雞翅 滷雞腳 健康滷味 魯味 加盟創業 慈善 義賣 義賣活動 慈善機構 公益彩券 健康食品 慈善基金會 公益團體 愛心捐款 捐款 美白 皺紋 減肥 禿頭 醫學美容 電波拉皮 雷射溶脂 肉毒桿菌 玻尿酸 痘疤 婦產科診所 室內設計 埋線 內分泌失調 黃體不足 針灸減肥 坐月子中心 婦產科 月子中心 月子餐 飛梭雷射 太陽能熱水器 太陽能 三久太陽能 三久 身體檢查 健康檢查 全身健康檢查
玫瑰花束 盆栽 網路花店 花店 鍛造 樓梯扶手 欄杆 鐵門 採光罩 熱水器 蘭花 化糞池 抽化糞池 抽水肥 水管不通 洗水塔 消毒 通水管 通馬桶 馬桶 馬桶不通 上順旅行社 五福旅行社 大興旅行社 天喜旅行社 天福旅行社 日本旅行社 日本旅遊 日本機票 日本自由行 日本訂房 包通 抽化糞池 抽水肥 水管不通 洗水塔 清水溝 通水管 通馬桶 馬桶 馬桶不通 便宜機票 國內旅遊 國外旅遊 國外機票 團體旅遊 直航機票 簽證 自由行 訂房 雄獅旅遊 汽車美容 汽車美容 三久太陽能 太陽能
黃金價格查詢 貸款 信用貸款 房屋貸款 剖腹生產 命理網 姓名學 姓名配對 星座 星座運勢 算命 開運印章 風水 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 外遇 徵信 徵信社 清潔公司 壁癌 屋頂防水 屋頂隔熱 抓漏 油漆 浴室 漏水 舊屋翻新 裝潢 防水工程 壁癌 健康飲食 台北素食餐廳 吃素 團購美食 水餃 素食 素食料理 素食水餃 素食食譜 素食餐廳 交友 婚友 婚友社 婚友聯誼 婚友聯誼社 愛情 愛情公寓 相親 相親銀行 聯誼 Hook and Loop 婚禮佈置 情人花束 新竹花店 會場佈置 氣球佈置
二手車 環保袋 肉毒桿菌 健檢 醫學美容 淨膚雷射 汽車美容 法拍屋 水餃 清潔公司 實驗動物 到府坐月子 坐月子 坐月子中心 坐月子餐 孕婦 月子餐 到府坐月子 坐月子 坐月子中心 坐月子中心台中 坐月子中心台北 月子餐 月子中心 坐月子餐 月子餐外送 月子餐食譜 統一發票9 10月 金價 統一發票9 10月 找工作 統一發票7 8月 求職 1111求職人力銀行 104求職人力銀行 104人力銀行 統一發票5 6月 104人力銀行 104求職人力銀行 塑膠袋 統一發票1 2月 塑膠袋批發 塑膠袋工廠 金價 黃金價格 金價查詢 黃金買賣 黃金 統一發票3 4月 1111人力銀行 104求職人力銀行 1111人力銀行求職 黃金價格查詢 中古車買賣 塑膠袋 統一發票9 10月 塑膠袋批發 中古車 中古車買賣 台北人力銀行 金價查詢 sum中古車 中古車 今日金價
消防公司 地板施工 超耐磨地板 店面出租 乳癌 全身健康檢查 肝癌 健康檢查 身體檢查 飛梭雷射 雷射溶脂 直航機票 自由行 三久 太陽能 三久太陽能 太陽能熱水器 環保袋 電波拉皮 hand dryer 電波拉皮 雷射溶脂 肉毒桿菌 系統家具 台中漆彈場 漆彈 團體服 美國月子中心 團體服 團體服 團體服 T恤 圍裙 POLO衫 班服 團體服創意 熱轉印 團體服訂做 宜蘭民宿 關鍵字廣告 seo 網路廣告 網路行銷 seo 網站設計 seo 線上客服 seo 網頁設計 seo 網頁設計公司 網路行銷 網路行銷 中古車 涼麵 食品批發 拉麵 T恤 慈善 慈善基金會 慈善機構 租辦公室 租店面 買辦公室 店面租賃 店面出租 店面出售 花茶 花草茶 養生茶 招牌 led招牌 招牌製作 美國月子中心 保養 美國月子中心
OBU 投審會 會計師事務所 會計師 工商登記 公司登記 包子 肉粽 宅配美食 四神湯 搬家公司 訂房網花東旅遊 桃園土地 桃園房屋仲介 桃園房屋 桃園房屋網 桃園房屋買賣 漆彈 搬家公司 會場設計 展場設計 會場設計 展場設計 展覽設計 消防設備 消防設備 機電 崴立機電 牙齒美白 植牙 牙周病治療方法 植牙費用 牙周病 微晶瓷 3D飛梭雷射 淨膚雷射 光纖美白除毛 肉毒桿菌除皺 紙盒印刷 紙袋包裝 包裝紙盒 手提紙袋 紙袋印刷 紙袋工廠 包裝紙袋 紙盒訂裝 手提袋 包裝盒 股票教學 股市分析 股市億萬贏家 股票軟體 股票行情 ferrari 賣車 賓士 lexus 二手車 中古車 Bmw 中古車買賣 保時捷 法拉利 福利 清潔公司 汽車借款 當鋪 當舖 借錢 貸款 票貼 二胎 融資 工商融資 支票貼現 借款 汽車借款 汽車貸款 徵信 徵信社 外遇 彌月送禮 喜餅 喜餅禮盒 喜餅價格 訂婚禮盒 訂婚喜餅 彌月蛋糕
彌月禮盒 彌月禮 彌月 離婚 法律事務所 債物 律師事務所 律師 寵物醫院 獸醫 獸醫院 寵物住宿 白內障 心絲蟲 腎衰竭 狗皮膚病 動物醫院 獸醫師 鞋 創業鞋之澡堂 洗鞋子 洗包包加盟 洗鞋店 加盟 洗鞋 洗包包 洗鞋加盟 酒店式公寓 台北民宿 日租套房 台北日租 apartment 太平山民宿 宜蘭民宿推薦 宜蘭民宿 宜蘭旅遊 宜蘭住宿 Disposable plastic cups Disposable plastic cups Disposable products Plastic Drinking Cups ECO products Biodegradable plastic PLA polylactic acid Biodegradable Plastic Cup Plastic manufacturer 懷孕 坐月子 坐月子食譜 新竹坐月子中心 坐月子中心 坐月子餐 月子餐 月子餐外送 外送月子餐 素食月子餐 飛梭雷射 柔膚雷射 玻尿酸 皮膚科 皮膚科診所 肉毒桿菌 肉毒桿菌瘦臉 脈衝光 除斑 Flex PCB PCB RF PCB Rigid-Flex PCB Electronic PCB
Post a Comment