There are a lot of feature requests, but not all of them can or should be included with GitlabHQ. Why not provide a module system where 3rd party developers can provide their own functionality?
For instance, I'd really like to write a plugin that will allow me to authenticate against Google Apps, and I saw that there was an issue open for LDAP authentication. Providing a way to extend/override the authentication process would allow other developers to work on that.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
@ariejan, your argument doesn't make sense. If there is no module system, people will likely just modify GitlabHQ directly, which will even further complicate upgrades.
I disagree with the idea of sticking everything in core. There are lots of installations where the users will never need LDAP authentication or, for instance, a wiki. I understand that providing a good UX is important, but a module system wouldn't detract from that. In fact, there are a lot of open source communities built around 3rd party modules for some systems.
By Administrator on 2012-01-25T17:05:42 (imported from GitLab project)
By Administrator on 2012-01-25T17:05:42 (imported from GitLab)
Actually, you have quite solid plugin API in Ruby, Rails and Engines in the first place. I recommend to take a look at Redmine's plugin API – note that Redmine itself provides very little, only hooks (used in views) and views overrides; everything else are Engines, ActiveRecord callbacks, alias_method_chain from ActiveSupport or some extra metaprogramming. GitLab is already very extensible without any additional “layer of dependencies.”
Indeed, Redmine is in a bit different position since it's a mature (and a bit stale) application, GitLab on the other hand evolves very quickly. Maintaining plugin ecosystem can be hard, both for core developers and plugin authors.
There's another point, though. Some core features, such as wiki or wall, could be provided as standard plugins (distributed with core), so you get a lean and decoupled core with an unified API for future features and external modules.
By Administrator on 2012-05-22T16:34:59 (imported from GitLab project)
By Administrator on 2012-05-22T16:34:59 (imported from GitLab)
I'd have to say I agree with @cweagans and @jnv Yes it might require a bit more being added to the core in terms of hooks, but MVC architectures lend themselves well to have hooks built into models and controllers for extensibility. This may not be the best example, but I can only imagine how bloated and unmanageable Drupal would be if every module was part of the core.
Building a good module system with a clear set of APIs helps developers to build good ones and keep them from mucking in the core code and making updates impossible/difficult. If it needed to be locked down, maybe there would be a place where modules officially allowed by GitLab were listed and some how the code blocked the others, but that may be overkill.
By Administrator on 2012-05-22T18:36:56 (imported from GitLab project)
By Administrator on 2012-05-22T18:36:56 (imported from GitLab)
At this time I see only people advocating a more modular Gitlab. I agree that this could the next step forward, but I'd like to get to know people who actually want to write modules. And more importantly, what they'd need from Gitlab in order to be awesome.
I've created this wiki page. Please go there and tell us about what module you propose and what you'd need from gitlab-core in order to function properly.
By Administrator on 2012-05-23T07:28:01 (imported from GitLab project)
By Administrator on 2012-05-23T07:28:01 (imported from GitLab)
IMHO, we need to look around the successful project like redmine.org to
borrow the plugin concept.
If GitLab provides plugin support comaptible to Redmine or Chiliproject
then boom we will have 100's of plugins available for usage with 100's of
developers at one shot ;).
I would say this would be the biggest software re-usability in the history
of Software development.
At this time I see only people advocating a more modular Gitlab. I agree
that this could the next step forward, but I'd like to get to know people
who actually want to write modules. And more importantly, what they'd need
from Gitlab in order to be awesome.
I've created this wiki page. Please go there and tell us about what module
you propose and what you'd need from gitlab-core in order to function
properly.
Another classic @kirantpatil idea! :-) I think it would be near-impossible to make Gitlab compatible with plugins for other systems like Redmine. It'd be like hammering a square cube through a round hole.
Again, if you want to use Redmine plugins, use f#cking redmine instead of Gitlab.
By Administrator on 2012-05-23T08:34:12 (imported from GitLab project)
By Administrator on 2012-05-23T08:34:12 (imported from GitLab)
@kirantpatil No, that's definitely not possible. Plugins depend on particular classes and methods (to the point that if core renames a method, it will break your plugin). And to be honest, over the long evolution Redmine became somewhat of a Rails antipatterns collection.
You can draw inspiration from Redmine's thin, engines-based plugin architecture, but that doesn't mean you should also provide a compatibility with its plugins.
By Administrator on 2012-05-23T13:27:42 (imported from GitLab project)
By Administrator on 2012-05-23T13:27:42 (imported from GitLab)
@ariejan Well, but you are a member of gitlabhq organization; wiki editing can be restricted only to users with PUSH access. I don't see any "Edit Page" button compared to, say, CanCan's wiki.
Alternatively, if you want to keep gitlabhq's wiki locked, you can create a new project with editable wiki.
By Administrator on 2012-05-23T13:55:50 (imported from GitLab project)
By Administrator on 2012-05-23T13:55:50 (imported from GitLab)
I've added one more to the list (I do believe that we don't need "full engine support" but more or like "specialized plugins"... not something like "override everything"
By Administrator on 2013-11-16T17:35:57 (imported from GitLab project)
By Administrator on 2013-11-16T17:35:57 (imported from GitLab)