上个学期(2008年8月 - 12月)我和一些同学用C ++编写了一个应用程序。没什么了不起的,它是Sqlite3的ORM。我们实现了一些像反射这样的东西,使它工作,并从丑陋的东西中释放最终用户。就个人而言,我认为我们做得很好,而且我们的ORM实际上对某人有用(即使它专门针对Sqlite3编写,它很容易适应其他数据库)。
因此,我得出的结论是它应该作为一个开源项目在某个地方(sourceforge最有可能)发布。但是,由于它是一个术语项目,因此在执行此操作之前需要对某些内容进行补充。也就是说,它有一些应该修复的内存泄漏,代码的某些部分可以重构,以便将来每个人的生活更轻松。
我想了解更多有经验的C ++程序员对某些问题的看法:
现在我想不出更多问题,但我想阅读类似的经历。
编辑:我应该把我的代码+评论翻译成英文吧? (自我提问)提前致谢。
答案 0 :(得分:1)
我想我对你的特定问题“更有经验”。我共同开发了一个开源的Web应用程序语言&模板系统很像ColdFusion,早在Java或ASP出现之前的网页设计早期。如果您有兴趣,仍然可以在http://www.steelblue.com/看到它。它仍然在我开发时所在的公司使用,但我没想到其他任何地方。
我发现除非你已经很好地联系并且人们正在观察你正在做的事情,否则让人们使用你的开源代码与销售你的封闭源代码程序一样困难。你真的需要倡导你的项目,它应该有一些独特的销售主张,使其与竞争对手区别开来。
所以,这是未经请求的建议。以下是您所提问题的一些具体答案......当然,纯粹是我的意见。
我不会重写任何代码,除非你有一个想要放入的特色。该特性可能与特定平台或编译器兼容。它可能是支持新的db数据类型或更智能的指标或其他。如果您打算在应用程序中加入更严肃的工作,请考虑下一次迭代中您可以实际完成的路线图以及在您的周期结束时哪些选择会使应用程序“最好”。
只要代码可用于特定目的,就会立即释放代码。两个原因。首先,可能有人为此目的而想要它。如果它不可用,他们将使用其他东西。此外,如果它是开源的,他们可能会回馈到项目。其次,越早发现人们想要使用代码的程度越高越好。要么它会比你期望的更受欢迎,你会对继续开发感到兴奋....或者......你会发现没有人甚至访问你的网页看你有什么。在任何一种情况下,最好早点了解人们真正想要的项目,以便在规划新版本时考虑到这一点。
关于“忘记入迷雾”。我想大多数项目都是。我不想成为一个沮丧的人,但是看看维基百科,有5个C ++ ORM工具很受欢迎,可以提及它们都是开源的。正如我上面所说,除非你能将你的想法卖给人们,否则他们将会使用另一个经过验证的开源解决方案。有人选择你,有三件事要做:1。他们需要你拥有的功能而其他功能则不然。 2.他们找到了您的项目网站,它展示了您的代码的优越性。他们相信你的代码足以让它有用。
另一方面,如果你长期处于这种状态并希望继续发展,那么随着时间的推移,这将变得更容易。最终,该项目将涵盖所有基础知识,您可以开始开发那些不在其他解决方案中的新特性。此外,您在积极开发中的时间越长,项目看起来就越值得信赖。最后,你将获得更多的经验。 2年后,您将更好地说明您的努力将对改善项目产生最大影响。
最后的想法:如果你正在享受它,从它那里学习,并不妨碍你把食物放在桌子上,这是一个很好的利用你的时间。
祝你好运!答案 1 :(得分:1)
关于开源部分:
如果你真的想让它成为一个开源项目,你真的应该发布它,不管它的当前状态 - 完全工作和调试 - 或半工作和充满内存泄漏。 只是,如果它的状态是坏的,请确保记录它,并给它一个合适的版本号(少于一个?)。然后其他人可能会查看您的代码,建议改进,加入您的团队等......
答案 2 :(得分:1)
我 - 相当随机 - 对此事的想法(按照我认为最重要的顺序):
与Liran Orevi said类似:如果您要提前开源。记录合理,并花时间提供计划或希望未来改进的路线图(这些是人们帮助你的邀请,所以请注意哪些人没有人工作)。
SQLite依赖于相当有限的基础。也许你不希望你的工具要求更重的环境。如果代码目前没有纠结和不可维护的混乱,你可能想避免提升和最新的装饰。一旦获得稳定版本(至少1.0),您就可以开始考虑可以对版本2进行的改进。
大多数事情最终都在天空中的大/ dev / null中,并且只有一种方法可以找到...如果它在任何地方都有,那么你就赢了。如果不是,这是一项适度的投资,也许你在学习的过程中学到了一些东西。