In an effort to reduce duplicate projects, this project should be merged into http://dgo.to/bootstrap.

Please see how to proceed with this task in #1594508-22: Merge in other d.o Bootstrap projects. We need project maintainers like you to help with this task.

Comments

tonystar’s picture

Sorry Mark, but I don't think that Tweme is duplicate project.

It's a kind of lightweight integration of Twitter Bootstrap to Drupal with several UX enhancements, not more.
Meanwhile Bootstrap provides deep integration and overrides dozens of native Drupal behaviors and implementations.

Tweme is just theme, Bootstrap is a framework.
Just compare their sizes: 26 KB and 160 KB accordingly.

I think that sometime I will inherit Tweme from Bootstrap.
But 100% it will never be the same as Bootstrap.

If you need any help with Bootstrap - I'm glad to contribute.
But please don't ask me to merge Tweme into Bootstrap.

pobster’s picture

Can I second this? Please never merge tweme with bootstrap - I don't want all that crap to contend with, I appreciate the light integration provided here.

Thanks for this theme,

Pobster

tonystar’s picture

Status:Active» Closed (won't fix)

Ok pobster. I will not. Cheerfully ;)

markcarver’s picture

Status:Closed (won't fix)» Active

@tonystar: Please read Joining forces with others and co-maintaining projects. Please also read: #1594508-23: Merge in other d.o Bootstrap projects.

This theme is a duplication.

@pobster:

I appreciate the light integration provided here

They both have "light integration" and work out of the box, just because the ZIP file is bigger doesn't mean that it runs any less efficiently or drupal_bootstraps() any slower.

This theme claims to have "minimum theming overrides" compared to Bootstrap, that is also false. It also implements it's own version of jQuery, which is also probably a really bad idea... see: #1846736: Remove jQuery CDN setting in favor of using jQuery Update module, specially the comment explaining why this is: #28-1846736.

tonystar’s picture

@Mark Carver of course I agree with you. As developer, as themer, but not as end user.

Imho, Tweme has very transparent concept, it just makes 3 things:

1. 20% - Connects Twitter Bootstrap to Drupal in some proper way
2. 50% - Bridges some BS features with Drupal features (i.e. BS carousel with Drupal blocks system)
3. 30% - Provides a minimal CSS to use Tweme out of the box

So, yes there is a duplication. But maximum in 20% of code.

So, no - Tweme shouldn't be merged into Bootstrap. Why? Because Tweme is not a framework, it is not aimed to merge everything from Bootstrap and to support anything in Drupal. It just makes the basic things easier. It is well for blogs, small documentation sites, home pages, and so on. But not for heavy web portals for example.

I repeat, I agree with you and may be later I will inherit Tweme from Bootstrap and get rid of 20% of code. But now I'm working on new features and trying to make Tweme as simple, handy and straightforward as possible.

markcarver’s picture

  1. 20% - Connects Twitter Bootstrap to Drupal in some proper way
  2. 50% - Bridges some BS features with Drupal features (i.e. BS carousel with Drupal blocks system)
  3. 30% - Provides a minimal CSS to use Tweme out of the box
  1. Duplicate - the d.o Bootstrap base-theme has been using the BootstrapCDN for a while now, before you... so not sure how this counts.
  2. The carousel is probably the main "feature" of this theme, which is what needs to be merged or moved to a module.
  3. Duplicate - the d.o Bootstrap base-theme provides minimalistic overrides as well.

Tweme is not a framework, it is not aimed to merge everything from Bootstrap and to support anything in Drupal. It just makes the basic things easier.

Neither is the d.o Bootstrap base-theme. It is VERY lightweight (and works) out of the box. Providing only the necessary injection of classes to take advantage of the alright loaded (via BootstrapCDN) styles. It would be pointless to not utilize the large CSS framework that the browser loaded (ie: unused styles).

So, yes there is a duplication. But maximum in 20% of code.

You're really missing the point. Duplication isn't just code, it can be concept and functionality too. While yes, some of the code maybe similar, this project can end up confusing people in the long run. Not to mention there is only you behind it. Instead of maintaining your own fork of Bootstrap for a small percentile, create a patch in the main d.o Bootstrap issue queue to ADD the functionality that's missing/you desire. Everyone will be better off for it.

We have enough duplication on d.o.

tonystar’s picture

Issue summary:View changes

Hey Mark!

Finally I agree to join the forces and integrate Tweme and Bootstrap!

Let's work together.

PS: This integration will be optional but will provide advanced features. Tweme core will not, but will be ultralight and minimalistic.

markcarver’s picture

Sure. I am a little curious what you mean by "optional" though.

tonystar’s picture

Never mind. It's just an idea about separating theme "core" which can be used without Bootstrap base theme (like current version of Tweme).

But this is just an idea. I like how Bootstrap base theme works now and going to use its features widely.

markcarver’s picture

Ok, so how would like to proceed?

tonystar’s picture

1) I will port basic functionality using bootstrap starterkit subtheme
2) I'm going to move all extra functionality (such as automatic srollspy nav block & automatic slideshow) in the separate module, ie Bootstrap Extra

markcarver’s picture

1) Ok.
2) https://www.drupal.org/project/bootstrap_ux already has a slideshow, would you be willing to open an issue ther efor the scrollspy stuff?

tonystar’s picture

Hmm.

My ScrollSpy stuff depends on the Bootstrap Extra library (https://github.com/tonystar/bootstrap-extra). So for good ScrollSpy implementation we need this library anyway.

My vision is:

* There should be a module Bootstrap Block which will provide various blocks, ie Auto generated navigation block which can be used for ScrollSpy navigation (but not only).
* Navigation auto generation functionality should be somewhere outside of this module, because it could be useful w/o Block.

BTW Bootstrap UX is confusing title for me. How about to merge Bootstrap UX and Tweme Extension in Bootstrap Extra module which will provide extra features and integration with Bootstrap Extra library when needed?

The possible layout of this new module:

bootstrap_extra/
— templates/ (additional templates which are not valuable with plain Bootstrap)
— includes/ (additional functionality, ie navigation auto generation, connecting Bootstrap Extra library and maybe others)
— bootstrap_field/ (ie carousel formatter)
— bootstrap_block/ (ie auto navigation block)
— ...

What do you think?

tonystar’s picture

Mark?

markcarver’s picture

Sorry, I have been a little busy with client work.

My ScrollSpy stuff depends on the Bootstrap Extra library (https://github.com/tonystar/bootstrap-extra). So for good ScrollSpy implementation we need this library anyway.

  • ScrollSpy does not rely on https://github.com/tonystar/bootstrap-extra. In fact, I'm not entirely sure what that is for. It looks like it just adds a new "pin" spy type, which is certainly not needed for ScrollSpy to work properly.
  • It sounds like this (soon to be) sub-theme should implement this feature separately if it "needs" it.
  • New features, like "pin", should and could be an extra library that is possibly supported, but as a separate entity. There is no need to confuse people (like I was) that this somehow replaces ScrollSpy.

Ultimately, my goal has always been to just keep parity between the main Bootstrap features first before trying to implement new functionality. The absolute perfect example of why custom JS/libraries shouldn't be included in main project is probably: #2162165: Anchor JS errors: "Cannot read property 'top' of null" and "Cannot call method 'createDocumentFragment' of null".

FWIW, even though this "feature" is already in the base-theme, my plan is to completely take that "feature" out and make it a separate library that is an "optional install". This allows the project to be maintained on it's own and doesn't prevent (or break) the main components of the base theme.

BTW Bootstrap UX is confusing title for me. How about to merge Bootstrap UX and Tweme Extension in Bootstrap Extra module which will provide extra features and integration with Bootstrap Extra library when needed?

The possible layout of this new module:

bootstrap_extra/
— templates/ (additional templates which are not valuable with plain Bootstrap)
— includes/ (additional functionality, ie navigation auto generation, connecting Bootstrap Extra library and maybe others)
— bootstrap_field/ (ie carousel formatter)
— bootstrap_block/ (ie auto navigation block)
— ...

The reason I went with UX was because it stands for "user experience". The module is/was meant to be a companion to the Bootstrap base-theme. Meaning, it just further enhanced the base-theme, not provided new front-end libraries/feature sets. There are just certain things that cannot be done effectively (or at all) by a theme (like field formatters) because only modules are included in the hook calls.

The other reason I went with UX is because it's two letters and easy to remember. I can see your hestiation about "UX" though, so I went ahead and created https://www.drupal.org/project/bootstrap_fx as a possible rename of UX. It stands for "Bootstrap Frontend eXperience", but could easily used instead as "Bootstrap Frontend eXtras". I would be happy to make you a co-maintainer of either. All I would ask is that any code committed has it's own separate issue created in the queues and goes through a normal patch/review process. I have found this works best when there are multiple people working on a project. I also diligently follow https://www.drupal.org/coding-standards and will reject code that doesn't follow it. My IDE (PHPStorm) automatically highlights these so they are very easy to spot.

I was not planning on making the namespace/module itself a module to be enabled, but rather just let it house all the various submodules. So it shouldn't need /templates, which should likely be provided by the base-theme anyway. For /includes, yes I agree with this, but each sub-module would have one, not the main project.

Furthermore, any external libraries that are used (regardless if they're ours or not) should probably be hosted outside of the repos (for reasons stated above). The only JS or CSS (which should also be in their own separate directories), would only be to provide the bridge between the external library and Drupal implementations, ie: $('.drupal-markup').callsExternalLibrary().

tonystar’s picture

Ok, sounds reasonably.

I suggest the following action plan:

1) Invent the more appropriate name for bootstrap_ux module (candidates: bootstrap_module, bootstrap_addon, bootstrap_helper, bootstrap_extra)
2) Create bootstrap_navblock submodule (or just bootstrap_toc), probably rely on http://dgo.to/tableofcontents
3) Try to use affix.js for making scrollspy nav sticky, otherwise separate bootstrap_pin from bootstrap_extra
4) Make bootstrap_extra, twemex modules obsolete

Ideas, objections?

tonystar’s picture

Version:7.x-1.x-dev» 7.x-3.x-dev

Hi @markcarver,

I'm happy to close this issue since starting from 3.x Tweme is based on Bootstrap!

tonystar’s picture

Status:Active» Fixed
tonystar’s picture

Status:Fixed» Closed (fixed)
markcarver’s picture

That's really awesome!!!

Now users will get the power/features behind the base-theme as well :)

Please feel free to create issues in the base-theme if you'd like to merge something upstream that you think would be useful for everyone.

markcarver’s picture

Also, FWIW, @neardark and I decided in IRC (#drupal-bootstrap) to migrate from https://www.drupal.org/project/bootstrap_ux to https://www.drupal.org/project/bootstrap_core (which has a better sounding name for all intents and purposes).

tonystar’s picture

Yeah, bootstrap_core is a good name!

Sure, I'm going to contribute a lot to Bootstrap and Core J

Scrollspy is one of the nearest plans!