New developer concern - why a not Git

Discussion in 'Developers' Forum' started by jan.koprowski, May 6, 2011.

  1. Chris Graham

    Chris Graham New Member

    Hi Till,

    That all makes sense. However, was my patch complex ;-)?

    I think the one thing about ISPConfig compared to modern web systems is the UI. I have exactly the same problem on my project, fighting that now possibly more than 50% of development effort is expected to be on UI design rather than functionality, and that newer systems make more use of what can be done in a post-IE7 world due to a lack of legacy decisions. And in fact, I think cPanel, and other big control panels with old roots, have the same problem. That kind of thing, and themes, don't require such intimate systems knowledge.

    I'd say it's an opportunity to you. You don't need to merge in the forks if you don't wish to (on a case-by-case basis). With my project I actually have people sponsor development, and to my surprise someone recently was willing to pay me to merge someone else's patches in. So I think it could work for you. You need to get the communication right of course.
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    You talk about the gui dashlet configuration? Thats on our todo list, we wanted to put a selector for the left and right column in System > Interface config. If you have a patch for it, please feel free to send it to me. And as I said aove, if you like to submit patches more often, contact me for a svn login. There are nice tools available for svn as well :)

    I totally agree, the current theme is outdated. The themes in ispconfig are completely separated, we even made them more independant for the theme cfoe is working on but sadly even if we implemented the changes required for his theme, he has not contributed it yet. But maybe he will do in future :)

    Theme development has not to be done in the ispconfig main svn off course but if someone has a improvement for the core or templating system required for themes then he might communicate this to us e.g. here in the forum or in our bugtracker or send me a email like the other core developers do. If a theme is finished or stable for a specific release, it would be nice if they get submitted to our svn so they get included in the next build and more users can use the theme.

    For example bvbmedia submitted their theme for inclusion today:

    We are integrating patches and also doing some paid development work already which then get integrated into the official releases.

    So I'am not against git in general, the problem is that it has to be handable for us so that it will not bring the development to halt by degrading core devs to bugfxing only. And rejecting contributions to the core at github is not poilte as well I fear :) Also we have a long history of requests in the bugtracker which I wont loose and the core devs which are doing about 99% of the work currenly like the current system and work with svn.
  3. Chris Graham

    Chris Graham New Member

    No, the usability patch that I did that was integrated recently (you'll see what I'm referring to if you search my posts). It could have been partly done as a theme, but made more sense as something put in for all themes to inherit.

    I suppose I can see your point, if you're very happy with svn, and it's rare for you to easily accept external contributions without a lot of work.

    Maybe instead of such a drastic change then, someone here would volunteer to manage the ISPConfig website, make it tidier, explain processes more clearly, install an SVN browser, migrate the issues to a newer system with no data loss, that kind of thing.
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    We will relaunch the site soon, we are working on that. The issue tracking system has already been relaunched and if there are upadtes for it, we will update our system as well. Installing a svn browser should be no problm, I was not aware that poeple really use it in their daily work as its solwer then a native client.
  5. cfoe

    cfoe Member

    @markc: push your theme to GitHub and post the link. Maybe I can help because I can not really follow your problem description

    @till: What you describe is exactly what GitHub is good for. You define a upstream in the forked repo (of the contributor) and make your fix/new library/whatever and push it to your GitHub account.
    * If the changes are minor or can be confirmed to work visually you send a "pull request" -> core dev can comment on that and decline or merge the changes with one click on GitHub
    * If it is somewhat bigger of a change you can test it while development continues. You test and rebase your fork continuously with the development branch of the upstream (in this example the master branch of ISPConfig)

    This way changes by "untrusted" contributors are always visually checkable by everyone (I often comment on commits or pull request to point out mistakes or possible enhancements) and can be changed by the contributor in this process.

    I know you do not like the discussion about GitHub and I would understand if you stop adding to it ;)

    about the theme: can push it to the SVN on completion although I do see a theme (since the theme switch was integrated) for ISPC as a standalone package. Maybe you could add it to the official apps & addon repo
  6. markc

    markc Member

    till: It's up to you guys if you want to help to improve the ispconfig project or work against it by splitting the development without contributing back.

    The irony of that comment is, as I said, that it would be easier for me to fork the project on Github and continue by myself than to have to deal with antiquated and disjointed project tools. Just my opinion but if you truly want more community input then using Github is a clear path forward to enable many more contributions. Your guarded approach tends to stifle innovation and experimentation and even if I, or anyone else, did, or has, forked ISPConfig then there is nothing stopping anyone from cherry picking the best parts back into "upstream". Of course if you are not using Git and/or Github then it makes it that much harder to cherry pick between separate and different repository types.

    Personally I have no intention of ever using Subversion ever again. No point, Git/Github totally destroys any incentive to bother. As I said, and say it again, it would be easier and less time consuming for me to fork the entire ISPConfig project to Github and continue by myself than to deal with... crazy stuff from last century.

    till: Why is it not so easy to contribute?

    Because you are not using Github. How can you possibly compare "sending a patch (set) via email" to a one-click fork of the entire project and then a one-click pull request that can then be reviewed and commented upon using the included issue tracker which very nicely sends emails to all involved, and replies to those emails go back to the issue tracker for all to see.

    I appreciate you going into the complexities of dealing with the codebase in your previous comment, it is indeed a very large and complex project, so much so it deserves a decent project work flow to match and assist that complexity. The right way to manage contributions is via branching. You could have a "testing" branch for just that and then anything that survives scrutiny in that branch gets merged into a "next" branch which would be like RC release quality . When the folks that like fiddling with the latest codebase indicate all is well then next is merged into the master branch which could be the canonical single point of release quality code. No real need for versioned release tarballs. Any problems and just roll back some troublesome commits in the master branch that somehow managed to get through the testing and next branches.

    On top of that, every man and his puppy can experiment in as many local branches as they care to, go completely nuts and try anything out locally, go wild, and when something sticks that could be useful upstream then... click on pull request and bingo, some new code starts on a trajectory towards the master release branch. Most of the problems you cited could be far better managed using Git (via cheap branches) and Github just doubles, even trebles, the benefits of using Git.
    Last edited: Mar 4, 2013
  7. cfoe

    cfoe Member

    That is my concern with SVN. everyone is working in the (unique/one) trunk and the code should work somewhat all the time for testing purposes.
    Fork or branch in Git and you can screw around with it however you want. And use a branch for everything like fixes or new features.

    @markc: Although I have a decent dislike for SVN I think your tone is getting a little bit too harsh. Think about that- I know most here a no native English-speaker but keep the discussion civil - Just a remark before anyone gets too annoyed with the topic
  8. till

    till Super Moderator Staff Member ISPConfig Developer

    We use branches in svn as well with different restrictions. Off course svn requires more communication before you start to develop then github but thats not nescessarily a bad thing. It will help nobody if we have to reject code because the right feature has been implemented in the wrong way. So better discuss things before implementing them then having to reject the code later for formal reasons.

    Sure, a separate package is fine as well.Let me know when your finished and I'll packge it for the addon repository.
  9. markc

    markc Member

    cfoe: push your theme to GitHub and post the link. Maybe I can help because I can not really follow your problem description

    This is getting off-topic for this thread, but forums will be forums. I solved my problem of being able to split out the sideNav so I could put it anywhere I want. Yes, I'll push it to Github soon. This gives me most of the layout changes I was after in dashboard/templates/dashboard.htm...
      <div id="dashboard-top">
        <tmpl_loop name='dashtop'>
          {tmpl_var name='content'}
      <table class="fixed">
          <div id="dashboard-lhs">
            <tmpl_loop name='leftcol'>
              {tmpl_var name='content'}
          <div id="dashboard-rhs">
            <tmpl_loop name='rightcol'>
              {tmpl_var name='content'}
  10. markc

    markc Member

    cfoe: Although I have a decent dislike for SVN I think your tone is getting a little bit too harsh.

    Yes, good point, I certainly do not mean to offend anyone. Apologies to anyone who feels so.

    Just today I pulled up a live server with ISPConfig. It took 15 minutes to actually install and reboot and then a couple of hours to get some initial users and DNS set up. It's the first CP I've ever used (aside from swearing at Plesk for a few months last year) and it was so cool to use a browser instead of the 100 bash scripts that I normally use. The only real problem I struck was missing libnss libs in a jailkit chroot so I could <ahem> use git and pull some scripts from Github.

    I was going to use Zpanel (primarily because it's Github based) but the codebase is somewhat over engineered and not as mature as ISPConfig so it looks like I'm in for the long haul now and that partly explains why I am so passionate about using Github. I want to see this codebase improve as quickly as possible and, aside from the people that actually do the work, Github is the next best accelerator from cranium to the real world.
  11. till

    till Super Moderator Staff Member ISPConfig Developer

    You should be able to add it in the jailkit settings under System > server config as additional dependency. If thats not enough, define a new app class in the jailkit configuration and refer to it under System > Server config

    A large part of ISPConfigs maturity comes from the reason that we handle things a bit old school. We had several contributors that wanted to push ispconfig forwards faster e.g. before we released 3.0.3, it ended in a complete disaster and took us about 6 moths of work to stabilize the system again so instead of being faster, we had a massive slowdown in development speed, and it was not the fault of the code management system. As you might imagine, the guys which caused the problems were not there anymore at the time it came to fix the issues they caused, so the corde devs had to do it and were not able to add any new features to ispconfig for half a year.

    We are doing the ispconfig development as a long term effort to develop the best controlpanel on the market. I'am working on it for more then ten years now if we count ispconfig 2 and I plan to do it still in 10+ years. I've seen a lot of panels rise and fall in that time and if you plan to setup a company or larger server infrastructure on a panel you should also take in account how likely it is that the developers will support it in futureor if they are just hobbyists which wrote a shiny gui. You might have got me wrong in the above post, I did not ask for more contributions in general. I explained why it is difficult for a complex project like ispconfig to handle more contributions and how to get the right contributions which dont block core devs with bugfixing only. So this is more then git fanboys vs. old school programmers.

    Today it is hip to use github and in 3 years everyone wants to us the next big hyped platform to manage the code and then we are caught in the github enviroment with all feature requests etc. A few years ago, sourceforge was hip and what if you used it to manage all your bug trackersetc, then you might be lost now.

    So we have modernized our infrastructure and will modernize it even more in future, updated the bugtracker etc. and there is no general decision against git or github for this project, we just have to keep long time goals in mind as well. For example I checked out gitlab lately as it allows a functionality similar to github but without having to rely on their promise to not charge us for their service and without data / vendor lock in.
    Last edited: Mar 4, 2013
  12. markc

    markc Member

    till: You should be able to add it in the jailkit settings under System > server config as additional dependency.

    Thank you, spot on advice. This works on Ubuntu 12.10 so that id shows the user/group names instead of just the uid/gid which causes ssh to not work back out from the server (hence git, scp and rsync as well)...
    cd /etc/jailkit
    cp jk_init.ini jk_init.ini.orig
    sed -i 's/lib64/lib\/x86_64-linux-gnu/g' jk_init.ini
    diff -u jk_init.ini.orig jk_init.ini
    --- jk_init.ini.orig    2013-03-06 22:35:04.502405510 +1100
    +++ jk_init.ini 2013-03-06 23:16:06.070051327 +1100
    @@ -2,12 +2,12 @@
     # this section probably needs adjustment on 64bit systems
     # or non-Linux systems
     comment = common files for all jails that need user/group information
    -libraries = /lib/, /lib64/, /lib/libnss*.so.2, /lib64/libnss*.so.2
    +libraries = /lib/, /lib/x86_64-linux-gnu/, /lib/libnss*.so.2, /lib/x86_64-linux-gnu/libnss*.so.2
     regularfiles = /etc/nsswitch.conf, /etc/
     comment = common files for all jails that need any internet connectivity
    -libraries = /lib/, /lib64/
    +libraries = /lib/, /lib/x86_64-linux-gnu/
     regularfiles = /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols
    @@ -47,7 +47,7 @@
     comment = ssh secure ftp
    -executables = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server
    +executables = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server, /usr/lib/openssh/sftp-server
     includesections = netbasics, uidbasics
     devices = /dev/urandom, /dev/null
    And FWIW the System -> Server Config -> Jailkit chroot app section currently has basicshell editors extendedshell netutils ssh sftp scp groups jk_lsh but extendedshell already includes basicshell editors so they could be removed. Of course I added git as well.

    Woops, no, I take that back, git is still missing from the jailkit chroot even though I added git to the Server Config section for jailkit. SSH works back out from the server though.
  13. till

    till Super Moderator Staff Member ISPConfig Developer

    Thanks for the patch.

    The settings there affect only new jails. a jail is created when the first jailed user is added to a website. If you like to test the new settings, create a new site and then a new jailed user. There is currently no funktion to update a jail yet from ispconfig, but jailkit offers tools for that if I remember correctly.

    Btw, we decided to give github a try. Is there someone with experince in converting a complete svn repository incl. tags and branches to git which might be able to help out?
  14. markc

    markc Member

    till: Btw, we decided to give github a try.

    You won't regret it and I'll be more than happy to help where I can :)

    Update: I see you have ... excellent. You may want to consider turning it into an Organisation.

    Re using git clone https from within a jailkit chroot also requires curl (with a lot of dependent libs) and at least /etc/ssl/certs, also /dev/random, and /usr/lib/git-core/ is missing from the git section of /etc/jailkit/jk_init.ini. This is mainly a note to myself to remind me what's missing next time I add a new user.
    Last edited: Mar 6, 2013
  15. cfoe

    cfoe Member

    Last edited: Mar 6, 2013
  16. till

    till Super Moderator Staff Member ISPConfig Developer

  17. cfoe

    cfoe Member

  18. MaddinXx

    MaddinXx Member

  19. markc

    markc Member

    More links. There is a fairly complete free video here...

    the original article about "gitflow" is...

    and the above authors gitflow shell scripts...

    I prefer "testing" instead of "develop" and "next" instead of "release" but the idea of using the master branch as a stable rolling release system is golden. Aside from using branches to support evolving code to production quality the point I like the most is that over the years the latest canonical target to fetch from can be a single persistent URL that never changes, ie; no version number tarballs that become redundant within a year hanging around in google searches. Of course one can still provide "legacy" versioned tarballs tagged from git but it doesn't have to remain the primary distribution method. Using a single git master source can lead to more dynamic and automatic ways to deploy production services in ways that are not really possible with static tarball snapshots or even versioned distro packages. Below is a simple but good example of what I mean with dynamic update possibilities...
    Last edited: Mar 9, 2013
  20. till

    till Super Moderator Staff Member ISPConfig Developer

    Just an update to let you know that I hacent forgot this :) We are currenntly working on the patch release to fix the current issues. To ensure that the release does not get delayed by the switch to git, I would like to switch to git after got released. I guess this will be in 1-2 weeks.

Share This Page